Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

TDataBase в DLL   Найти похожие ветки 

 
snake1977   (2004-01-20 15:09) [0]

Здравствйте! Я передаю в DLL объект TDataBase как параметр в процедуре, и присваиваю свойство DatabaseName свойству TQuery, свойство Connected у переданного DataBase установленно в True, свойство LoginPrompt в False. Но при открытии запроса, выдается окошко для логина :((
почему?? и как правильно передать в DLL DataBase??

вот кусок исходника:
Procedure Makefile(name:String; DB:TDataBase); stdcall;
Var f:TextFile;
q:TQuery;
i:Integer;
Begin
q:=Tquery.Create(nil);
q.DatabaseName:=DB.DataBaseName;
q.SQL.Append("select t.* from blanks t");
q.Open;
AssignFile(f,name);
rewrite(f);
for i:=1 to q.RecordCount do
Begin
for j:=0 to q.FieldCount-1 do
Write(f,q.Fields[j].AsString+#9);
WriteLn(f,"");
End;
Closefile(f);
q.Close;
q.Free;
End;


 
Digitman ©   (2004-01-20 15:49) [1]

q:=Tquery.Create(nil);
q.Session := DB.Session;
q.DatabaseName:=DB.DataBaseName;


 
snake1977   (2004-01-20 17:03) [2]

Нет такого свойства у TQuery :((
а SessionName дает тот же результат что и без него


 
Digitman ©   (2004-01-20 17:07) [3]

q:=Tquery.Create(DB.Owner);


 
VAleksey ©   (2004-01-20 17:19) [4]

Что-то это все не то ...


 
snake1977   (2004-01-20 17:20) [5]

и так тоже не хочет :(


 
snake1977   (2004-01-20 17:21) [6]

>>VAleksey
а как??
я попробовал создать TDataBase и сделать ему Assign , но тогда просто все вылетает с ошибкой :(


 
Digitman ©   (2004-01-20 17:36) [7]

не помню подробностей, но скажу точно, что поиск объектов классов TSession и TDatabase идет в контексте принадлежности объекта TQuery к той TForm или к тому TDatamodule, которые являются владельцем объекта TDatabase, передаваемого как факт. параметр


 
VAleksey ©   (2004-01-20 17:42) [8]

Вообще, вроде ты все правильно делал.
Попробуй еще и Session передать.
Может Digitman и прав.

Procedure Makefile(name:String; DB:TDataBase; Sess:TSession); stdcall;
....
Session := Sess;
....
и т.д.


 
snake1977   (2004-01-20 18:15) [9]

а куда потом Session этот использовать ?


 
Digitman ©   (2004-01-20 18:19) [10]

Identifies the database session component associated with this dataset.

property DBSession: TSession

Description

Use DBSession to determine the session component that controls the database component with which this dataset component is associated. By default, a database component is associated with the default session component, Session, that is automatically created for all database applications.


 
snake1977   (2004-01-20 18:56) [11]

DBSession - read only поле :(
может надо Session передавать в DLL в виде Handle ??


 
snake1977   (2004-01-21 09:05) [12]

потратил пол ночи но разобрался :)
надо сделать было таким образом.
1.Передать из основной программы Handle объекта TDataBase, в вызываемую процедуру.
1.создать экземпляр класса TDataBase в DLL (я сделал глобальную переменную, чтобы можно было использовать вовсех процедурах DLL)
2.присвоить свойству DatabaseName любое имя
3.присвоить хендлу созданого объекта переданный хендл
и все работает на ура :)
тока надо не забыть сделать Free для объекта TDataBase перед выгрузкой DLL



Страницы: 1 вся ветка

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-2086
АлекСандр
2004-01-20 11:37
2004.02.02
Delphi + AutoCAD


4-2404
mihail
2003-11-26 08:14
2004.02.02
как создать свой компонент на чужой форме


1-2085
Игорь
2004-01-20 12:01
2004.02.02
WaitForSingleObject( pi.hProcess, INFINITE )?


3-1984
Aleksandr
2004-01-08 13:12
2004.02.02
Как в ClientDataSet организовать выборку из ClientDataSet ов.


14-2321
Teren
2004-01-09 00:15
2004.02.02
Любимые фильмы