Главная страница
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.06 c
11-1144162375
Vedun
2006-04-04 18:52
2007.04.01
Просмотр htm-страниц с помощью TKOLWebBrowser


2-1173091442
Магедон
2007-03-05 13:44
2007.04.01
Вопрос о маленьком почновом клиентике.


15-1173035989
palva
2007-03-04 22:19
2007.04.01
Борис Стругацкий в качестве политика


15-1173287962
Strate
2007-03-07 20:19
2007.04.01
Подскажите FTP-клиент


2-1173797536
Kolan
2007-03-13 17:52
2007.04.01
Можноли заставить компилятор сообщать о конкр. виде исключений?