Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.04.2013, 16:06
Taddy28 Taddy28 вне форума
Прохожий
 
Регистрация: 05.04.2013
Сообщения: 4
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию Опертор IN применяемый к параметру

задача такая :
есть текс скл запроса в свойстве скл ADOquery. (access)
Там есть оператор In , а что будет под оператором ин - это уже должно динамически меняться, то есть по сути определяться через параметр.

Проблема следующая неясно как корректно задавать такой параметр т.е. возможно какая то определенная орфография должна быть.
В аксесе все просто IN (a,b,c)

ВОТ так в делфи работает
Код:
datamodule2.statQ.sql.Add('select sum(price*qnt) as total1') ;
datamodule2.statQ.sql.Add('from buy') ;
datamodule2.statQ.sql.Add('where ID_buy in (:listID)' ) ;

datamoduleunit.DataModule2.statq.Parameters.ParamByName('listID').Value:='120';


А вот так уже не работает
Код:
datamoduleunit.DataModule2.statq.Parameters.ParamByName('listID').Value:='120,222';


Как тут быть?

Заранее спасибо

Последний раз редактировалось Taddy28, 09.04.2013 в 16:09.
Ответить с цитированием
  #2  
Старый 09.04.2013, 16:19
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

строку
Код:
'where ID_buy in ()'
формируй динамически на основании своих данных, а потом уже делай
Код:
datamodule2.statQ.sql.Add
для полученой строки
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 09.04.2013, 17:31
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Угу, для IN нельзя параметром передавать диапазон значений. Потому текст запроса придется формировать динамически.
Но можно вот так извернуться, создав временную таблицу для значений:
Код:
create table #ListID (ID int)
Заполняем таблицу значениями, затем выполняем основной запрос:
Код:
select sum(price*qnt) as total1 from buy inner join #ListID on buy.ID=#ListID.ID
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 19.04.2013, 10:40
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Не уверен что Access поддерживает временные таблицы... (хотя может и ошибаюсь).

Пс. как писалось выше динамический запрос Вам поможет.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 19.04.2013, 16:45
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Поддерживает, куда же без них
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter