Вопрос № 63327: Здравствуйте!
Delphi 7 + ADO + Access
На форме есть два компонента: ADOQuery1 и ADOQuery2. В них прописаны следующие запросы (для примера):
ADOQuery1.SQL := 'SELECT id_field, field1 FROM Table1'
ADOQuery2.SQL := 'SELECT field1, field2...
Вопрос № 63.327
Здравствуйте!
Delphi 7 + ADO + Access
На форме есть два компонента: ADOQuery1 и ADOQuery2. В них прописаны следующие запросы (для примера):
ADOQuery1.SQL := 'SELECT id_field, field1 FROM Table1'
ADOQuery2.SQL := 'SELECT field1, field2 FROM Table2 WHERE foreign_id = :param1'
Table1 и Table2 соответственно связаны по полям id_field и foreign_id...
Для ADOQuery1 в обработчике события AfterScroll пишу:
Т.е. хочется чтобы в ADOQuery2 выбирались только те записи, которые соответствуют текущей записи из ADOQuery1... Но вот беда - этого не происходит.. С конкретными значениями запросы работают, проверял.
Почему так происходит?
Заранее спасибо
Отправлен: 20.11.2006, 01:09
Вопрос задал: Savnick (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Savnick!
Потому что когда Вы поменяли значение параметра во втором запросе, Вам нужно заново сделать запрос, чтобы данные обновились в соответствии с этим параметром.
ADOQuery2.Parameters.ParamByName('p1').Value := ADOQuery1.FieldByName('id_field').AsInteger;
ADOQuery2.Requery;
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 20.11.2006, 06:16 Оценка за ответ: 5 Комментарий оценки: Все заработало, спасибо большое
Отвечает: Синельников Сергей
Здравствуйте, Savnick!
Могу добавить вот что:
Если добавить еще Datasource и связать его с ADOQuery1, а второй запрос переписать так ADOQuery2.SQL := 'SELECT field1, field2 FROM Table2 WHERE foreign_id = :id_field' и ADOQuery2.Datasource:=Datasource1, то не нужно будет никаких Requery и AfterScroll. Будет все само обновляться, так сказать аутоматически :)
Ответ отправил: Синельников Сергей (статус: 1-ый класс)
Ответ отправлен: 21.11.2006, 06:15 Оценка за ответ: 5