Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MDIChild в BPL и работа с БД / 12 сообщений из 12, страница 1 из 1
17.02.2003, 10:03
    #32107108
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Привет Всем!
MDIChild описан в BPL-ке, которую я подгружаю динамически во время
выполнения проги. В чилде необходимо работать с БД. На форме
лежит DBGrid. Вопрос: где необходимо описать запрос к БД в главной проге
или в BPL. В главной уже имеется датамодуль с описаниями DB, Query и т.п.
Конект производит главная прога.
...
Рейтинг: 0 / 0
17.02.2003, 10:14
    #32107113
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
А это на любителя, можно передать конект (в этом могу сказать по опыту, что работает даже в dll), а можно (если хочется) чтообы создатель bpl мог бы редактировать и делать нуный запрос... существует еще один вариант, когда приложене умеет само строить запрос по каким-то критериям. Если что-то более конкретное хочется, то плиз более подробнее о задаче....
...
Рейтинг: 0 / 0
17.02.2003, 10:33
    #32107127
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Дело в том, что имеются несколько справочников с идентичной
структурой. Чтобы на каждый не писать свою BPL решил все оформить в одной.
При этом конект нужно взять из главной проги.
И интерфейс должен быть MDI. Так вот где надо описать датамодуль (к примеру) для запросов в BPL.
...
Рейтинг: 0 / 0
17.02.2003, 11:10
    #32107157
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
А зачем тогда bpl? можно и в главной проге в зависимости от загружаемого справочника работать...
а так если bpl предназначеня для отображения и дорабатываться не будет, я бы наверное Query поместил в bpl и парочка функций для добавления запроса, для редактирования данных и прочее нехитрое дело...
...
Рейтинг: 0 / 0
17.02.2003, 11:25
    #32107174
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Вопрос то и состоит в том как передать ссылку на BD в BPL.
Например.
В Bpl описан датамодуль DM
В DM описан Query1.
DM.Query1.DataBase:=?????
Само значение мне известно, но оно описано в главной проге.
А при дизайне надо явно что-то подставить.
...
Рейтинг: 0 / 0
17.02.2003, 11:40
    #32107196
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
например подобный механизм при решении через dll (правда и приложение и библиотека необходимо чтоб была написана на одном языке и наверное даже на одной версии)
делаем внешнюю функцию с параметром TDatabase в библиотеке. Эта функция крейтет форму, и передает указатель на БД. Приложение вызывает эту функцию и передает ей в качестве параметра указатель на БД
все работает.
если не совсем понятно, могу бросить кусок кода из работающего проекта, но подчеркиваю он для dll
...
Рейтинг: 0 / 0
17.02.2003, 11:42
    #32107197
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Для DLL и у меня все работает.
А вот конкретно для BPL-ки хотелось бы увидеть.
...
Рейтинг: 0 / 0
17.02.2003, 12:02
    #32107214
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Первый вопрос: а зачем тебе датамодуль DM ? На форме нельзя Query положить? Зачем лишние формы плодить :)
Второй: А что, нельзя при вызове найти ту форму, где лежит коннект и присвоить его в Query? Это так тяжело?
...
Рейтинг: 0 / 0
17.02.2003, 12:13
    #32107223
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
У Вас должно быть 2 (Два) Bpl. В первом (Bpl1) должен лежать Ваш DM. А во втором (Bpl2) - MDI Child Window. Bpl1 должен статически грузиться с Вашим exe. Т.е. его имя должно быть прописано в списке используемых пакетов наряду с vcl, vclrtl, vcldb, ...
Bpl2 тоже должен использовать Bpl1. В его (bpl2) модулях с формами следует указать:

uses My_DM_Unit;

Таким образом и само приложение и динамически загружаемые Bpl2, Bpl3, ... BplN будут "знать" про Ваши DB, Query и т.п.
Правда в самом Вашем DM придется объявить глобальную переменную, чтобы про него могли знать остальные модули и пакеты программы.
...
Рейтинг: 0 / 0
17.02.2003, 15:12
    #32107415
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
2tygra
Датамодуль это для примера. Конечно можно положить и на форму.
Кому как нравится.
Тогда подскажи на примере как найти форму и присвоить конект.
...
Рейтинг: 0 / 0
17.02.2003, 15:42
    #32107436
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
Код: plaintext
1.
Application.Components;  //- список форм
Query.Connection := Application.Components[i].ADOConnection;
...
Рейтинг: 0 / 0
18.02.2003, 07:02
    #32107647
falcon_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDIChild в BPL и работа с БД
2tygra
В итоге получилось следующим образом:

begin
DB:=nil;
try
for i := 0 to Application.ComponentCount do
begin
Temp := Application.Components ;
if (Temp is TDataModule) then
begin
if (Temp.FindComponent('DB') is TIBDatabase) then
DB:=TIBDatabase(Temp.FindComponent('DB'));
end;
end;
if DB<>nil then
...
Query1.Database:=DB;
...
except
end;
end;

2Александр Спелицин
Ваш вариант еще не пробовал.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MDIChild в BPL и работа с БД / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]