Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Привет Всем! MDIChild описан в BPL-ке, которую я подгружаю динамически во время выполнения проги. В чилде необходимо работать с БД. На форме лежит DBGrid. Вопрос: где необходимо описать запрос к БД в главной проге или в BPL. В главной уже имеется датамодуль с описаниями DB, Query и т.п. Конект производит главная прога. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 10:03 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
А это на любителя, можно передать конект (в этом могу сказать по опыту, что работает даже в dll), а можно (если хочется) чтообы создатель bpl мог бы редактировать и делать нуный запрос... существует еще один вариант, когда приложене умеет само строить запрос по каким-то критериям. Если что-то более конкретное хочется, то плиз более подробнее о задаче.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 10:14 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Дело в том, что имеются несколько справочников с идентичной структурой. Чтобы на каждый не писать свою BPL решил все оформить в одной. При этом конект нужно взять из главной проги. И интерфейс должен быть MDI. Так вот где надо описать датамодуль (к примеру) для запросов в BPL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 10:33 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
А зачем тогда bpl? можно и в главной проге в зависимости от загружаемого справочника работать... а так если bpl предназначеня для отображения и дорабатываться не будет, я бы наверное Query поместил в bpl и парочка функций для добавления запроса, для редактирования данных и прочее нехитрое дело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 11:10 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Вопрос то и состоит в том как передать ссылку на BD в BPL. Например. В Bpl описан датамодуль DM В DM описан Query1. DM.Query1.DataBase:=????? Само значение мне известно, но оно описано в главной проге. А при дизайне надо явно что-то подставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 11:25 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
например подобный механизм при решении через dll (правда и приложение и библиотека необходимо чтоб была написана на одном языке и наверное даже на одной версии) делаем внешнюю функцию с параметром TDatabase в библиотеке. Эта функция крейтет форму, и передает указатель на БД. Приложение вызывает эту функцию и передает ей в качестве параметра указатель на БД все работает. если не совсем понятно, могу бросить кусок кода из работающего проекта, но подчеркиваю он для dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 11:40 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Для DLL и у меня все работает. А вот конкретно для BPL-ки хотелось бы увидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 11:42 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Первый вопрос: а зачем тебе датамодуль DM ? На форме нельзя Query положить? Зачем лишние формы плодить :) Второй: А что, нельзя при вызове найти ту форму, где лежит коннект и присвоить его в Query? Это так тяжело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 12:02 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
У Вас должно быть 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 придется объявить глобальную переменную, чтобы про него могли знать остальные модули и пакеты программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 12:13 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
2tygra Датамодуль это для примера. Конечно можно положить и на форму. Кому как нравится. Тогда подскажи на примере как найти форму и присвоить конект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 15:12 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2003, 15:42 |
|
||
|
MDIChild в BPL и работа с БД
|
|||
|---|---|---|---|
|
#18+
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Александр Спелицин Ваш вариант еще не пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 07:02 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32107157&tid=2119098]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 363ms |

| 0 / 0 |
