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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2014, 13:59   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Как прередать параметры оператору SQL "IN"

Есть запрос
SELECT * FROM DOC WHERE DOC.ID NOT IN (:ID)
Есть компонент FibPlus “TpFibDataset”
Делаю так :
Код:
S := ‘1,2,3,4’
with TpFibDataset1 do
begin
  Active := False;
  SQLs.SelectSQL.Clear;
  SQLs.SelectSQL.Add(’ SELECT * FROM DOC WHERE DOC.ID NOT IN (:ID)’); 
  ParamByName('ID').Asstring := S;
  Active := True;
end;
При Active := True ругается на ошибку конвертации данных
Подскажите как правильно передать параметры в «IN».
Спасибо.
tarakan1983 вне форума Ответить с цитированием
Старый 05.12.2014, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
S := QuotedStr('1,2,3,4')
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2014, 14:37   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

QuotedStr не нужен. Да и вообще съест ли
Код:
ParamByName('ID').Asstring := '1,2,3,4';
Я бы просто так сделал
Код:
SQLs.SelectSQL.Add(Format(’SELECT * FROM DOC WHERE ID NOT IN (%s)’,[s]));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.12.2014, 16:35   #4
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
S := QuotedStr('1,2,3,4')
Не?
Не хавает.

Цитата:
SQLs.SelectSQL.Add(Format(’SELECT * FROM DOC WHERE ID NOT IN (%s)’,[s]));
Я написал простой пример, у меня запрос большой.
Не хочется его в коде прописывать, потому что для данной таблицы может быть обновление, а я забываю что запрос прописан в коде и пол дня потом долбаюсь над ошибкой, пока не вспомню, что запрос в коде.
Если бы хотел прописать все в коде, то и вопроса бы не было как передать параметром.
tarakan1983 вне форума Ответить с цитированием
Старый 05.12.2014, 16:48   #5
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

храни запрос отдельно, а перед открытием подменяй в датасете
можно даже на beforeopen
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
параметры бывают " -" " /" и все? goluzov Общие вопросы Delphi 3 03.07.2011 11:58
Параметры запуcка. как обрабатывать параметры вида -somecmd "?" Человек_Борща Общие вопросы Delphi 1 15.01.2011 15:48
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53