Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

Использование DLL для коннекта с БД   Найти похожие ветки 

 
Евгений   (2003-11-26 10:51) [0]

Подскажите плиз, можно ли DataModule (предварительно настроив соединение) засунуть в DLL, а потом из основной формы подцеплять DBGrid через эту библиотеку? Если да, то как?


 
Евгений   (2003-11-26 15:17) [1]

Неужели никто не знает? Помолите пожалуйста.


 
Sandman25   (2003-11-26 15:31) [2]

Я не делал такого с BDE, но для DBExpress передавал в DLL TSQLConnection (аналог TDatabase), а в самой DLL это переданное значение использовал в компонентах доступа к БД.


 
Vlad   (2003-11-26 15:35) [3]

Можно в DLL создавать DataModule и открывать собственное соединение с базой.
А что такое подцеплять грид через эту библиотеку - неясно.
Если ты имеешь ввиду набор данных из библиотеки подцепить к гриду, то сделай ф-цию в DLL, которая будет возвращать ссылку на DataSet (я так не делал, но думаю будет работать), а в основной форме цепляй динамически к DataSource грида.


 
Michail Dalakov   (2003-11-26 16:05) [4]

2Евгений
Для этих целей лучше использовать BPL.


 
Евгений   (2003-11-26 16:39) [5]

А в чем собственно приемущество использование BPL?


 
Michail Dalakov   (2003-11-26 17:08) [6]

В BPL ты можешь без ограничений пользоваться всеми классами и типами данных Delphi и использовать их в параметрах функций, которые ты будешь экспортировать, ну конечно подразумевается,
что экспортируемые функции будут использоваться в других приложениях Delphi.


 
me   (2003-11-26 17:32) [7]

Нужно в DLL создавать DataModule и подставить его handle заначение handle от DataModule из главной апликации (передать в DLL). В результате из DLL используется уже открытое соединение с базой.


 
me   (2003-11-26 17:33) [8]

Нужно в DLL создавать DataModule, поместить в него компонент TDataBase и подставить в ее handle заначение handle от TDataBase из DataModule главной апликации (передать в DLL). В результате из DLL используется уже открытое соединение с базой.


 
Michail Dalakov   (2003-11-26 17:48) [9]

2[8]
А зачем вместо BPL использовать DLL ecли работа с библиотекой будет производиться из приложения написанного на Delphi?


 
Евгений   (2003-11-26 18:32) [10]

Настроил соединение в DLL MyDLL.dll (TIBDataBase, TIBTransaction, TIBTable) пишу функцию:

function ex(): TIBTable;
begin
result:=DataModule1.IBTable1;
end;

exports
ex name "ex";

На форму добавил: TDBGrid, TDataSource, TButton.

function ex(): TIBTable; external "MyDLL.DLL";
Обработка клика на кнопке
Begin
DataSource1.DataSet:=ex();
End;

При клике, вылазиет ошибка. Здесь что-то не правильно?


 
Евгений   (2003-11-26 18:46) [11]

Для Michail Dalakov. Ну с BPL, я еще не толком не работал, а что-то новое всегда страшно. Кроме того не факт, что работа будет из Делфи, каждый программист работая над программой надеется на дальнейшее ее развитие. Например на использование DLL в MSOffice, расширения при помощи ActiveX и т.д. А вообще тема BPL меня заинтересовала.


 
Vlad   (2003-11-26 18:48) [12]


> При клике, вылазиет ошибка. Здесь что-то не правильно?

Текст ошибки ?


 
Michail Dalakov   (2003-11-26 18:54) [13]

To [10]
Если ты решил все таки DLL, то используй указатели в передаваемых
и возвращаемых значениях.
В приведенном коде: ф-я ex() возвращает класс и это присваивается
DataSource1.DataSet


 
Евгений   (2003-11-26 18:55) [14]

Дословно текс ошибки:

Access violation at adress 00396CD7 in module "MyDLL.DLL". Read of adress 00000060.


 
Michail Dalakov   (2003-11-26 19:01) [15]

Нет смысла писать DLL вместо BPL если ты будешь использовать ее из приложений написанных на Delphi. Ты получаешь только ограничения на типы данных ничего не имея взамен


 
Vlad   (2003-11-26 19:01) [16]

Ясно. В DLL не создаешь DataModule.
function ex(): TIBTable;
begin
DataModule1:=TDataModule1.Create(nil);
result:=DataModule1.IBTable1;
end;


 
Michail Dalakov   (2003-11-26 19:21) [17]

Люди, если вы будете создавть объекты типа TIBTable и будете передавать указатели на объекты, то если главное приложение пишется не на Delphi, то к чему вы будете их кастовать, оно 100% не будет знать о классе TIBTable, если же главное приложение на Delphi, то зачем вам DLL, пишите BPL - это таже библиотека.


 
Евгений   (2003-11-26 19:39) [18]

О чудо!!! Она заработала. Спасибо Vlad. Спасибо всем.
Вопрос Michail Dalakov: где можно надыбать инфу о так хваленной BPL (желательно с примерами)? Я же говорю, что плохо знаком с этой "штукой", вот бы познакомиться по ближе, чтобы самому оценить все "за" и "против"


 
Michail Dalakov   (2003-11-26 19:49) [19]

По F1 можно найти все необходимое, по крайней мере я дополнительными источниками не пользовался,
ну пакеты компонентов наверняка приходилось писать или хотя-бы
устанавливать.



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

Форум: "Базы";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.125 c
1-62062
Chery
2003-12-05 15:18
2003.12.19
ActiveFormX. Регистрация ocx .


1-62156
DNS
2003-12-06 04:36
2003.12.19
Работа с помошником в (*.acm)


14-62205
Виктор Щербаков
2003-11-26 11:23
2003.12.19
Задачка :)


4-62322
alexis
2003-10-26 12:05
2003.12.19
Помогите разобраться с функцией !


1-62038
axx
2003-12-06 10:11
2003.12.19
Господа дайте КОНСУЛЬТАЦИЮ по GetMem и FreeMem





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский