Форум: "Базы";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизИспользование подключения к базе в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c