Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 245
от 25.11.2006, 01:35

Администратор:CJ
В рассылке:Подписчиков: 286, Экспертов: 31
В номере:Вопросов: 1, Ответов: 2


Вопрос № 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.Parameters.ParamByName('p1').Value := ADOQuery1.FieldByName('id_field').AsInteger;

Т.е. хочется чтобы в 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное