Текущий архив: 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.49 MB
Время: 0.034 c