Главная страница
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.034 c
1-2072
Bers01
2004-01-20 11:49
2004.02.02
Работа с MSWord


14-2335
Vint
2004-01-13 13:33
2004.02.02
Всех с наступающим Старым-Новым годом!


6-2254
polak
2003-11-25 10:41
2004.02.02
вопрос по AlMailSlot


1-2142
alexnmsk
2004-01-21 15:07
2004.02.02
Помогите с созданием класса


6-2258
2ac
2003-11-26 07:30
2004.02.02
Как запретить TwebBrowser проигрывать звуки (на некоторых сайтах