Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Master Detaile с помощью ADOQuery   Найти похожие ветки 

 
jago   (2004-05-20 16:01) [0]

на форме лежат ADOQuery, на них смотрят 2 грида. Как правильно настроить возможность перемещения по первому гриду, так чтобы дочерний (2 грид) отображал значения в зависимости от набора полей главного грида.
Оба ADOQuery выводят набор по нескольким таблицам


 
Соловьев ©   (2004-05-20 17:05) [1]

TADOQuery.DataSource + F1


 
jago   (2004-05-21 08:02) [2]

RTFM по отношению к данной проблеме уже применялся, но не принес ощутимых результатов. Затык произошел на этапе определения TParameter. Как ему передать значение если я использую SQL для определения набора данных?


 
Silver Alex ©   (2004-05-21 09:27) [3]

я например на обработчик OnDataChange главного DataSource переоткрываю DataSet детализации.Ну и в обработчике события OnBeforeOpen DataSetа детализации подставляю нужные параметры, которые естественно берутся из главного DataSetа.И есть у меня компонент производный от DataSource, в котором событие OnDataChange происхоидт с нужной задержкой, т.е. когда по гриду бежишь не рефрешаться все записи, а происходит все более корректно.Ну если подойдет тебе этот метод пиши, вышлю чего нужно


 
Соловьев ©   (2004-05-21 09:38) [4]


>  [2] jago   (21.05.04 08:02)

имя параметра запроса набора данных детайла должно соответсвовать имени ключевого поля мастера.

> [3] Silver Alex ©   (21.05.04 09:27)

мой вариант не требует никаких строчек кода :) и работает не хуже:)
Кстати, надо использовать не OnDataChange, а OnAfterScroll


 
Johnmen ©   (2004-05-21 09:38) [5]

>Как ему передать значение если я использую SQL для определения
>набора данных?

Через параметр. Типа ... WHERE FieldFK=:FieldID для дочернего запроса, где FieldID имя поля из мастерного НД (из первого в твоем случае).


 
Johnmen ©   (2004-05-21 09:42) [6]

>Silver Alex ©   (21.05.04 09:27) [3]
>я например на обработчик OnDataChange

Возникает при ЛЮБОМ изменении значений полей в буфере текущей записи. Не только при прокрутке, но и при модификации.
Поэтому корректней Соловьев ©   (21.05.04 09:38) [4]


 
Silver Alex ©   (2004-05-21 09:56) [7]


> Соловьев ©   (21.05.04 09:38) [4] and Johnmen ©   (21.05.04 09:42) [6]

вы ,ребята, невнимательно читаете, я же написал что есть у меня компонент и работает все нормально ,даже более.Обьясню в чем преимущество.Выставляется задержка, например 250 миллисек. вот и бежишь по датасету.За эти 250 мс пробежал четыре записи, а рефреш произошел только один раз.Ну а теперь подумайте ,господа программеры, и скажите чем этот метод хуже. А на счет OnAfterScroll, можно и так но не думаю что это лучший метод


 
Соловьев ©   (2004-05-21 10:00) [8]


> Ну а теперь подумайте ,господа программеры, и скажите чем
> этот метод хуже.

что-то подобное реализовано в FIBPlus - там тоже открывается подчененная таблица, только после того как мастер закончил скроллирование. Если ты сам написал такую компоненту - прими мои поздравления. Это классно.

> А на счет OnAfterScroll, можно и так но не думаю что это
> лучший метод


> [6] Johnmen ©   (21.05.04 09:42)


 
Sergey13 ©   (2004-05-21 10:03) [9]

2Silver Alex ©   (21.05.04 09:56) [7]
>я же написал что есть у меня компонент
Таймер у всех есть по умолчанию. Подумаешь - компонент. 8-)


 
Johnmen ©   (2004-05-21 10:28) [10]

>Silver Alex ©   (21.05.04 09:56) [7]

Так мы не про задержку. С ней все приемы уже известны.
Мы про используемый обработчик.


 
Silver Alex ©   (2004-05-21 10:32) [11]


> Sergey13 ©   (21.05.04 10:03) [9]

какой таймер?TTimer что ли?Ты вообще про что?Или сработал стадный инстинкт?Все бросаются и я тоже ломанусь.Если ты знаешь чего с этим таймером делать, тогда Бог в помощь


 
Sergey13 ©   (2004-05-21 10:38) [12]

2Silver Alex ©   (21.05.04 10:32) [11]
>Если ты знаешь чего с этим таймером делать, тогда Бог в помощь
Выставлять задержку, например 250 миллисек. 8-)


 
Silver Alex ©   (2004-05-21 10:52) [13]


> Sergey13 ©   (21.05.04 10:38) [12]

молодец, ценю чувство юмора :)


 
Sergey13 ©   (2004-05-21 11:06) [14]

2Silver Alex ©   (21.05.04 10:52) [13]
Какой юмор? Я так предполагаю, что твой "компонет" делает примерно тоже самое.


 
Anatoly Podgoretsky ©   (2004-05-21 11:17) [15]

Sergey13 ©   (21.05.04 11:06) [14]
Необязательно, сушествуют и другие приемы, но у него наверно таймер и тогда его претензии неуместны.


 
Silver Alex ©   (2004-05-21 11:30) [16]

Таймер у меня там, таймер.Только нет у меня никаких претензий. Чего вы тут накинулись


 
jago   (2004-05-21 12:51) [17]

Мной был уже проделан вами предложенный путь и при открытии Dataset выдается ошибка: Не правильно определен объект Parameter. Предоставлены несовместимые или не полные сведения. Вот мой SQL
SELECT dc.*, dd.*
FROM dir_classes dc, drcl_drsc dd
WHERE
dc.DRCL_ID = dd.DRCL_DRCL_ID
dd.DRSC_DRSC_ID= :DRSC_ID
а вот так выглядит Master Dataset
SELECT
ds.DRSC_ID,
name
FROM dir_sch ds


 
Соловьев ©   (2004-05-21 12:57) [18]

TADOQuery.Parameters - в дизайне есть что-то? выставь типы и значения по умолчанию - NULL


 
Silver Alex ©   (2004-05-21 12:57) [19]


> jago   (21.05.04 12:51) [17]

покажи где и как подставляешь параметры


 
jago   (2004-05-21 13:01) [20]

так и стоит


 
Соловьев ©   (2004-05-21 13:06) [21]

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


 
jago   (2004-05-21 13:37) [22]

вот ведь у меня в новом проекте тоже все нормально работает. Спасибо всем ответившим, буду искать глюки по всему тексту



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

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.028 c
1-1085884346
R
2004-05-30 06:32
2004.06.13
ListView_GetItemText


14-1085836974
Drakon
2004-05-29 17:22
2004.06.13
Перенос Linux-приложений на Linux


14-1085668811
malkolinge
2004-05-27 18:40
2004.06.13
Нужен програмист


1-1086024148
Delphin
2004-05-31 21:22
2004.06.13
Есть код, только при попытке компиляции, орёт, что какая-то там о


14-1085239725
Ilya__
2004-05-22 19:28
2004.06.13
Windows