Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 18:18   #1
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию Delphi + Access + ADO, запрос к запросу с параметром

Помогите, пожалуйста, разобраться со следующей ошибкой.

В базе данных Access созданы следующие объекты:
Таблица MyTable: IDLine (счетчик), a, b (числа).
Запрос MyQuery с текстом:
Код:
SELECT IDLine, a+b AS Sum
FROM MyTable
WHERE IDLine >= :MinLine;
- то есть, запрос считает статистику по таблице и еще делает какой-то отбор записей по параметру.

Далее в Delphi создается запрос ADOQuery1:
Код:
SELECT *
FROM MyQuery
WHERE IDLine = :IDLine;
и пишется следующий код:
Код:
  ADOQuery1.Close;
  ADOQuery1.Parameters.ParamByName('MinLine').Value := 2;
  ADOQuery1.Parameters.ParamByName('IDLine').Value := 4;
  ADOQuery1.Open;
  ShowMessage(IntToStr(ADOQuery1.RecordCount));
- при этом на экран почему-то выводится 0, хотя строка с IDLine = 4 в запросе точно есть. Почему это происходит?

Если заменить текст запроса на
Код:
SELECT *
FROM MyQuery
WHERE IDLine = 4;
то количество строк выдается верно: 1.
Если убрать из запроса MyQuery параметр MinLine, ответ также выводится правильный, из чего я предполагаю, что проблема как-то связана с параметром - но, к сожалению, без параметра мне никак нельзя обойтись. Что я делаю не так и как можно решить эту проблему?
Sasha_S вне форума Ответить с цитированием
Старый 07.07.2014, 18:37   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

можно переформулировать в это:
Код:
SELECT IDLine, a+b AS Sum
FROM MyTable
WHERE IDLine >= :MinLine and IDLine = :IDLine;
Но тогда какой смысл в двух параметрах (возможно взаимо исключающих)?
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 07.07.2014, 20:02   #3
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
Но тогда какой смысл в двух параметрах (возможно взаимо исключающих)?
В таком виде и правда нет смысла, просто это смоделированный пример, насколько хватило фантазии Имелось в виду, что в MyQuery вообще есть какой-то параметр. Он, конечно, на самом деле никак не связан с IDLine, там идут связи между несколькими таблицами и вычисления, довольно громоздкие.

Объединить два условия в один WHERE не могу, потому что в AdoQuery тоже идет не просто SELECT *, а группировка и расчет функций MIN, MAX и др.

Идея всей конструкции в том, что в MyQuery рассчитывается одна группа статистических показателей, а потом на их основе в AdoQuery с учетом других таблиц рассчитываются новые показатели и добавляются через INSERT INTO в другую таблицу, причем доступ из программы нужен и к тем, и к другим. В тексте сообщения пыталась упростить ситуацию, возможно, перестаралась.
Sasha_S вне форума Ответить с цитированием
Старый 07.07.2014, 20:53   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

не уверен... может tadostoreproc поможет
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 08.07.2014, 13:06   #5
Sasha_S
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 16
По умолчанию

Причина ошибки была в порядке перечисления параметров в запросе ADOQuery. Первым должен быть указан параметр MinLine для вложенного запроса, вторым - параметр IDLine. У меня было наоборот. После исправления, тьфу-тьфу, что-то наконец заработало. Вопрос закрыт.
Sasha_S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sql запрос ADO ACCESS Konstantin_ua БД в Delphi 6 12.12.2013 12:24
Sql запрос ADO ACCESS Konstantin_ua БД в Delphi 4 03.12.2013 18:17
Access Запрос с параметром Условие komirevag Microsoft Office Access 1 12.06.2012 19:23
Про запрос с параметром Delphi ара Помощь студентам 6 15.05.2011 14:05
Delphi -> ADO -> Access, запрос с условием -MagicAlex- БД в Delphi 8 10.06.2010 05:56