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




Вниз

Вопрос по связке DLL - БД 


Belov   (2002-01-15 11:18) [0]

Добрый день !
Не подскажите решение такой проблемы
Главная программа использует модуль second.pas, который в свою очередь использует модуль данных DataModule1, через который идет обмен с БД
В second.pas я прописал класc
TWorkData = class
City_List: TStringList;
end;
соответственно есть конструктор

Есть two.dll в которой есть форма NewFrm
Данная форма также использует модуль second.pas и класс TWorkData
Первая проблема
Это нельзя сделать так
NewFrm.ComboBox1.Items.Assign(City_List)
только через цикл нормально добавляются элементы
при попытке загрузить что либо из БД
выдается ошибка Access viol...
Для вызова формы и работы с БД я сделал следующее
Добавил в NewFrm - Use Unit - DataModule

прописал переменную DataMod: TDataModule

форму вызываю таким образом

ShowD(Application.handle, WorkData, DataModule)

ShowD(H: THandle; P, DM: Pointer)
begin
...
NewFrm.WorkData:=P;
NewFrm.DataMod:=DM;
end;

Не подскажите в чем проблема, и возможно её решить ?



Belov   (2002-01-15 13:34) [1]

АУ люди помогите



Belov   (2002-01-15 14:24) [2]

Неужели нет никаких предложений ??????



Andrey007   (2002-01-15 15:03) [3]

А в чём проблема-то? Я, например, так и не понял. Поэтому меня особенно позабавил вопрос в конце "Не подскажите в чем проблема...?".



Belov   (2002-01-15 15:31) [4]

Проблема в том, что при попытке получить какие-то данные из БД
выдается ошибка
Access violition...bla-bla-bla

при вызове какой-либо процедуры класса, не треб. обращения к БД, все нормально работает



roottim   (2002-01-15 16:02) [5]

то что длл и приложение используют твой модуль который использует датамодуль :) это не значит что они работают в одной и той же сесси...
в длл надо тоже активизировать сессию с БД... и передать ей параметры из приложения...



Belov   (2002-01-15 16:51) [6]

угу
и расход соединений с БД будет ох какой хороший



roottim   (2002-01-15 17:01) [7]

незнаю...
тогда тебе придется передать адрес объекта сесии в длл... и там присоединить ко всем Dataset!... понятно..что он трафик ргрузит.. но ты можеш на время работы формы длл открывать сессию.. а по уходу из нее закрывать...
допустим я так поступаю при работе со справочниками... они не часто требуются... и все формы закатаны в длл



Belov   (2002-01-15 17:13) [8]

Я так пробовал делать - но все дело в том, что у меня следующая архитектура приложения

БД

Sserver.dll ( ActiveX Library ) - через него вся работа с БД

Main.exe - клиентская часть

Two.dll - клиентская часть - форма ввода и отображения данных, но, работает со справочниками(т.е. при изменении значения, загруз. одно, др. значение - загр. другое)




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




Наверх





Память: 0.73 MB
Время: 0.033 c
14-32324          Dim!S                 2001-12-21 12:30  2002.02.11  
Распространение программы


3-32117           Вика                  2002-01-14 13:30  2002.02.11  
IB 5.6 , как сделать экпорт/импорт части таблицы через дискету?


4-32380           Don                   2001-12-12 18:36  2002.02.11  
Определение длины строки при выводе ссобщения в rectangle


7-32359           SergeyDonetsk         2001-11-05 16:53  2002.02.11  
Как можно заставить модем снять трубку?


3-32132           chelobaka             2002-01-15 16:37  2002.02.11  
Как избежать появления окна с запросом на ввод имени и пароля