![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Master Detaile с помощью ADOQuery [D7]
jago © (2004-05-20 16:01:00)на форме лежат ADOQuery, на них смотрят 2 грида. Как правильно настроить возможность перемещения по первому гриду, так чтобы дочерний (2 грид) отображал значения в зависимости от набора полей главного грида.
Оба ADOQuery выводят набор по нескольким таблицам
jago (2004-05-21 13:37:00) [1]вот ведь у меня в новом проекте тоже все нормально работает. Спасибо всем ответившим, буду искать глюки по всему тексту
Соловьев (2004-05-21 13:06:00) [2]не знаю что там делал - я только что попробовал новый проект - без проблем все получилось, даже не компилил - все в дизайне заработало
jago (2004-05-21 13:01:00) [3]так и стоит
Silver Alex (2004-05-21 12:57:00) [4]
> jago (21.05.04 12:51) [17]
покажи где и как подставляешь параметры
Соловьев (2004-05-21 12:57:00) [5]TADOQuery.Parameters - в дизайне есть что-то? выставь типы и значения по умолчанию - NULL
jago (2004-05-21 12:51:00) [6]Мной был уже проделан вами предложенный путь и при открытии 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
Silver Alex (2004-05-21 11:30:00) [7]Таймер у меня там, таймер.Только нет у меня никаких претензий. Чего вы тут накинулись
Anatoly Podgoretsky (2004-05-21 11:17:00) [8]Sergey13 © (21.05.04 11:06) [14]
Необязательно, сушествуют и другие приемы, но у него наверно таймер и тогда его претензии неуместны.
Sergey13 (2004-05-21 11:06:00) [9]2Silver Alex © (21.05.04 10:52) [13]
Какой юмор? Я так предполагаю, что твой "компонет" делает примерно тоже самое.
Silver Alex (2004-05-21 10:52:00) [10]
> Sergey13 © (21.05.04 10:38) [12]
молодец, ценю чувство юмора :)
Sergey13 (2004-05-21 10:38:00) [11]2Silver Alex © (21.05.04 10:32) [11]
>Если ты знаешь чего с этим таймером делать, тогда Бог в помощь
Выставлять задержку, например 250 миллисек. 8-)
Silver Alex (2004-05-21 10:32:00) [12]
> Sergey13 © (21.05.04 10:03) [9]
какой таймер?TTimer что ли?Ты вообще про что?Или сработал стадный инстинкт?Все бросаются и я тоже ломанусь.Если ты знаешь чего с этим таймером делать, тогда Бог в помощь
Johnmen (2004-05-21 10:28:00) [13]>Silver Alex © (21.05.04 09:56) [7]
Так мы не про задержку. С ней все приемы уже известны.
Мы про используемый обработчик.
Sergey13 (2004-05-21 10:03:00) [14]2Silver Alex © (21.05.04 09:56) [7]
>я же написал что есть у меня компонент
Таймер у всех есть по умолчанию. Подумаешь - компонент. 8-)
Соловьев (2004-05-21 10:00:00) [15]
> Ну а теперь подумайте ,господа программеры, и скажите чем
> этот метод хуже.
что-то подобное реализовано в FIBPlus - там тоже открывается подчененная таблица, только после того как мастер закончил скроллирование. Если ты сам написал такую компоненту - прими мои поздравления. Это классно.
> А на счет OnAfterScroll, можно и так но не думаю что это
> лучший метод
> [6] Johnmen © (21.05.04 09:42)
Silver Alex (2004-05-21 09:56:00) [16]
> Соловьев © (21.05.04 09:38) [4] and Johnmen © (21.05.04 09:42) [6]
вы ,ребята, невнимательно читаете, я же написал что есть у меня компонент и работает все нормально ,даже более.Обьясню в чем преимущество.Выставляется задержка, например 250 миллисек. вот и бежишь по датасету.За эти 250 мс пробежал четыре записи, а рефреш произошел только один раз.Ну а теперь подумайте ,господа программеры, и скажите чем этот метод хуже. А на счет OnAfterScroll, можно и так но не думаю что это лучший метод
Johnmen (2004-05-21 09:42:00) [17]>Silver Alex © (21.05.04 09:27) [3]
>я например на обработчик OnDataChange
Возникает при ЛЮБОМ изменении значений полей в буфере текущей записи. Не только при прокрутке, но и при модификации.
Поэтому корректней Соловьев © (21.05.04 09:38) [4]
Johnmen (2004-05-21 09:38:00) [18]>Как ему передать значение если я использую SQL для определения
>набора данных?
Через параметр. Типа ... WHERE FieldFK=:FieldID для дочернего запроса, где FieldID имя поля из мастерного НД (из первого в твоем случае).
Соловьев (2004-05-21 09:38:00) [19]
> [2] jago (21.05.04 08:02)
имя параметра запроса набора данных детайла должно соответсвовать имени ключевого поля мастера.
> [3] Silver Alex © (21.05.04 09:27)
мой вариант не требует никаких строчек кода :) и работает не хуже:)
Кстати, надо использовать не OnDataChange, а OnAfterScroll
Silver Alex (2004-05-21 09:27:00) [20]я например на обработчик OnDataChange главного DataSource переоткрываю DataSet детализации.Ну и в обработчике события OnBeforeOpen DataSetа детализации подставляю нужные параметры, которые естественно берутся из главного DataSetа.И есть у меня компонент производный от DataSource, в котором событие OnDataChange происхоидт с нужной задержкой, т.е. когда по гриду бежишь не рефрешаться все записи, а происходит все более корректно.Ну если подойдет тебе этот метод пиши, вышлю чего нужно