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

Вниз

Использование подключения к базе в dll -ке   Найти похожие ветки 

 
r9000   (2007-01-04 14:52) [0]

Добрый день!

У меня возник такой вопрос. В форме приложения, которая вызывает dll есть компонент TDatabase. В dll в форме, включенной в нее, есть компонент TQuery. Необходимо подключить TQuery в dll к TDatabase в форме вызывающего приложения.
Вызывающее выражение:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Database1.Connected:=false;
 Database1.Connected:=true;
 export1(Database1.DatabaseName);
end;

в dll:
library Project6;

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls,comobj,OleServer, Excel2000,
 Unit7 in "Unit7.pas" {Form1};

function export1(s1:string): string;  stdcall;
var

begin

Form1 := TForm1.Create(Application);

Form1.Query1.DatabaseName:=s1;
Form1.Query1.Active:=false;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add("select * from Applications");
Form1.Query1.Active:=true;

end;

exports export1;

{$R *.res}

begin
end.

В Sybase этот код работает, все нормально я проверял.
В Oracle  этот же код не работает, ругается что не может
подключиться.
Что здесь может быть и как правильно подключиться?


 
Ученик чародея ©   (2007-01-04 15:45) [1]

Работает ли с Oracle подобное подключение если его сделать в основном приложении?

Почему не задан DriverName в Tdatabase?

Поддерживает ли данный BDE тот Oracle с которым ты работаешь?


 
Desdechado ©   (2007-01-04 16:09) [2]

имхо, правильнее клонировать подключение к БД в DLL


 
r9000   (2007-01-05 06:13) [3]

С Oracle подобное подключение если его сделать в основном приложении
работает. Tdatabase подключается и BDE  работает.
Да это понятно, что правильнее подключаться к компоненту Tdatabase,
который был бы расположен в DLL.
Но заказчику взбрело в голову, чтобы подключение осуществлялось так
как я пробовал выше.


 
Desdechado ©   (2007-01-05 11:10) [4]

Заказчик определяет, какие компоненты использовать для подключения?
А он не заказывает использование циклов WHILE вместо FOR ?


 
r9000   (2007-01-05 12:44) [5]

Спасибо, мне подсказали что надо передавать в функции dll TQuery, подключенный в вызывающем приложении к базе и далее этот TQuery
использовать в dll
function export1(s1:TQuery): string;  stdcall;


 
evvcom ©   (2007-01-09 09:26) [6]

> [5] r9000   (05.01.07 12:44)
> function export1(s1:TQuery): string;  stdcall;

:))))
Если передаешь TQuery, то использовать эту dll кроме как в своем приложении все равно не сможешь. Нафига тогда stdcall? А... ну да... посоветовали ж :)
И на огромный коммент при создании dll ты забил, и наверняка "build with runtime packages" не знаешь, что такое.
Мой тебе совет. Не нужна тебе dll, не понимаешь ты, как с ней работать. Много раз еще граблями в лоб получишь.



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
2-1173105640
ITineraNT
2007-03-05 17:40
2007.04.01
Компоненты TRz..., Tabc...


15-1173627796
TMx
2007-03-11 18:43
2007.04.01
e-book


2-1172673794
maxProg
2007-02-28 17:43
2007.04.01
Создание компонентов...


2-1173868777
Student1000
2007-03-14 13:39
2007.04.01
опять картинки


8-1152596059
zorik
2006-07-11 09:34
2007.04.01
Линии разных стилей толщиной более 1 пиксела