Текущий архив: 2003.02.17;
Скачать: CL | DM;
ВнизКонсольное приложение и DataModule с ADO???? Найти похожие ветки
← →
vikser (2003-01-31 17:02) [0]Есть консольное приложение, и есть DataModule с компонентами ADO... Любое обращение к ADO-компонентам вызывает "неустранимую ошибку". При обращении к другим функциям из DataModule, не связанными с ADO все проходит нормально... В чем у меня беда?
← →
sniknik (2003-01-31 17:59) [1]в обшем случае, и чаще всего не сделано
CoInitialize(nil);
....
незабывать завершение
CoUnInitialize();
← →
vikser (2003-01-31 18:10) [2]Я к сожалению не знаю, куда это нужно вставить...
вот мой DataModule:
unit ado_con;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDM = class(TDataModule)
my_ado_con: TADOConnection;
my_ado_query: TADOQuery;
private
{ Private declarations }
public
{ Public declarations }
function MySqlResult(dir,pc,f,tn : string) : string;
end;
var
DM: TDM;
implementation
{$R *.dfm}
function TDm.MySqlResult(dir,pc,f,tn : string) : string;
begin
dm.my_ado_con.ConnectionString:="FILE NAME="+dir+"\toinet.udl";
dm.my_ado_query.connection:=dm.my_ado_con;
my_ado_query.SQL.Clear;
my_ado_query.SQL.Text:="SELECT NameAdress FROM internet WHERE ((PostCode="+pc+") AND (Filial="+f+") AND (TN="+tn+"))";
try // Подключение к базе данных
dm.my_ado_con.Open;
try // Открытие запроса
dm.my_ado_query.open;
try // Переход на первую запись
dm.my_ado_query.First;
if dm.my_ado_query.RecordCount=0
then result:="nill"
else result:=dm.my_ado_query.Fields[0].AsString;
except else
begin
end
end;
try
dm.my_ado_query.Close;
except else
begin
end;
end;
except else // Открытие запроса - ИС
begin // Открытие запроса - ИС
end; // Открытие запроса - ИС
end; // Открытие запроса - конец
try // Отключение от базы данных
dm.my_ado_con.Close;
except else // Отключение от базы данных ИС
begin // Отключение от базы данных ИС
end // Отключение от базы данных ИС
end; // Отключение от базы данных
except else // Подключение к базе данных ИС
begin // Подключение к базе данных ИС
end // Подключение к базе данных ИС
end; // Подключение к базе данных
end;
end.
Вот консольное приложение:
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes,
IniFiles,
ado_con in "ado_con.pas" {DM: TDataModule};
type
TToInet = class (TObject)
***
// ----- Процедура выполняет запрос к базе данных ---------------
function TToInet.get_ado_lines(pc,f,tn : string) : string;
begin
writeln(ado_con.DM.MySqlResult(main_path,"10","11","12"));
end;
***
← →
vikser (2003-01-31 18:11) [3]И при вызове этой функции возникает ошибка :(
← →
sniknik (2003-01-31 18:18) [4]можно сюда
{$APPTYPE CONSOLE}
uses
SysUtils,
ActiveX,
Classes,
IniFiles,
ado_con in "ado_con.pas" {DM: TDataModule};
type
TToInet = class (TObject)
***
begin
CoInitialize(nil);
***
CoUnInitialize();
end.
можно в какой нибудь модуль, на инициализацию / финализацию, главное до вызовов ADO и после вызовов снять. Для устраниния ошибки ActiveX в uses.
← →
vikser (2003-01-31 18:23) [5]Не работает...
← →
sniknik (2003-01-31 18:36) [6]ну значит дело в другом, вам надо к доктору :-)).
опиши конкретнее как что происходит. или попробуй, простейший пример, точно работает.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, ADODB, ActiveX;
var
ADOConnection: TADOConnection;
ADOCommand: TADOCommand;
begin
CoInitialize(nil);
ADOConnection:= TADOConnection.Create(nil);
ADOCommand:= TADOCommand.Create(nil);
ADOConnection.ConnectionString:= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind";
ADOConnection.LoginPrompt:= false;
ADOCommand.Connection:= ADOConnection;
ADOCommand.CommandText:= "CREATE TABLE TestTable (TestField Char(10))";
ADOCommand.Execute;
ADOCommand.Free;
ADOConnection.Free;
coUnInitialize();
end.
Страницы: 1 вся ветка
Текущий архив: 2003.02.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c