Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.014 c
14-53195
Соловьев
2003-01-31 11:13
2003.02.17
Почему EhLib 2.6а не ставится?


1-52929
Pipelly
2003-02-07 20:10
2003.02.17
Отсчет времени


1-53000
Uran
2003-02-10 15:54
2003.02.17
Как нарисовать в TChart синусоиду?


1-52904
Anton
2003-02-08 13:19
2003.02.17
Что такое Abstract Error


1-52981
Xok
2003-02-10 12:14
2003.02.17
Как DateTimePicker у присвоить пустое значение?