Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1173418402
sportman
2007-03-09 08:33
2007.04.01
Акт внедрения программного продукта


2-1173171404
Tar
2007-03-06 11:56
2007.04.01
процедура Randomize


4-1163658294
Out
2006-11-16 09:24
2007.04.01
Убийство процесса


1-1170732544
Ant205
2007-02-06 06:29
2007.04.01
Delphi и WinAmp


2-1173258178
sergeyst
2007-03-07 12:02
2007.04.01
Как убрать слэш из пути





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский