Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запрос из Access в Delphi

22K
10 мая 2007 года
krilya
12 / / 19.04.2007
помогите переместить запрос из access'a в Delphi...

в access это работает а в делфи нет. Использую компонент ADOQuery
 
Код:
SELECT sub.date, sub.FIO, sub.[Sum-premya]
FROM [SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya]
FROM bonus GROUP BY bonus.date, bonus.FIO]. AS sub
WHERE (((sub.date)=[d]) AND ((sub.FIO)=[n]));
10
10 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: krilya
в access это работает а в делфи нет.


Завершающую точку с запятой убери.

22K
10 мая 2007 года
krilya
12 / / 19.04.2007
пробовал.. пишет "недопустимое использование скобок с именем 'SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya' "
убираю скобки лезут другие ошибки, например: "Ошибочное или пропущенное зарезервированное слово или аргумент в инструкции SELECT или неверная пунктуация."

В качестве альтернативы хотел избавиться от вложенности запросов(прошу прощения за терминологию). Думал сделать 2 использовать AdoQuery. Но не знаю как результат запуска первого запроса подставить во второй.
7.8K
10 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: krilya
 
Код:
SELECT sub.date, sub.FIO, sub.[Sum-premya]
FROM [SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya]
FROM bonus GROUP BY bonus.date, bonus.FIO]. AS sub
WHERE (((sub.date)=[d]) AND ((sub.FIO)=[n]));



А зачем здесь еще подзапрос? Разве вот такое вот:

 
Код:
SELECT date, FIO, SUM(premya) AS sum_premya
FROM bonus
WHERE date=:d AND FIO=:n
GROUP BY date, FIO

будет давать другой результат?
22K
11 мая 2007 года
krilya
12 / / 19.04.2007
Спасибо. Запрос работает и в аксесе и в делфи. Один нюанс выплал.. я использую в базе формат даты: день.месяц.число а в AdoQuery надо указывать месяц.день.число В принципе не страшно, но можно как нибудь этот порядок поменять?

нашел еще багу
 
Код:
sql := 'SELECT date, FIO, SUM(premya) AS sum_premya';
AdoQuery1.SQL.Add (sql);

Проблема со скобками в выражении SUM(premya). В таком виде вылетает с ошибкой в отладчик. Если убрать закрывающую скобку из выражения добавляется нормально. Запрос естественно не работает.

P.S. Подзапрос... понятия не имею зачем он мне нужен был. Просто из-за отсутствия опыта сначала делаю запросы в конструкторе access
7.8K
11 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: krilya
нашел еще багу
 
Код:
sql := 'SELECT date, FIO, SUM(premya) AS sum_premya';
AdoQuery1.SQL.Add (sql);

Проблема со скобками в выражении SUM(premya). В таком виде вылетает с ошибкой в отладчик. Если убрать закрывающую скобку из выражения добавляется нормально.


Да? Мистика. Ну попробуйте не Add использовать, а сформировать сразу весь запрос и добавить его через AdoQuery1.SQL.Text:=sql;. Кстати, прежде чем добавлять к запросу строки (Add) Вы вызываете AdoQuery1.SQL.Clear ?

Цитата: krilya
P.S. Подзапрос... понятия не имею зачем он мне нужен был. Просто из-за отсутствия опыта сначала делаю запросы в конструкторе access


Это к вопросу о том, с чего нужно начинать. Не хвататься сразу за конструкторы и мастера, а сначала полистать книжку по SQL )).

22K
11 мая 2007 года
krilya
12 / / 19.04.2007
AdoQuery1.SQL.Text:=sql; не помогло.. тот же глюк
AdoQuery1.SQL.Clear - да вызываю
пробовал по разному разбить строку
AdoQuery1.SQL.Add (')'); - глючит даже так, ниче не понимаю :(

P.S. книжку по sql с удовольствием почитаю. но пока начальство.. сроки... и за делфей если чесно сижу месяц... не мое..
10
11 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: krilya
я использую в базе формат даты: день.месяц.число а в AdoQuery надо указывать месяц.день.число В принципе не страшно, но можно как нибудь этот порядок поменять?


Воспользоваться параметрами.

22K
14 мая 2007 года
krilya
12 / / 19.04.2007
Cделал следующим образом свойство ADOQuery.SQL задал не программно(через Object Inspector). Из запроса исключил оператор WHERE..
в программеперебираю результат запроса и использую if.. then.. вместо WHERE... Может не очень красисо.. но работает
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог