Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321

Условие с SQL оператором IN

02.04.2018, 08:32. Показов 752. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Нужно реализовать условие с SQL операторм IN
подскажите как сделать, безуспешно пытался сделать через Memo:
Delphi
1
Form1.ADOQuery1.Parameters.ParamByName('b1').Value:= Memo1.Lines.CommaText;
в каждой строке новое значение. Или может можно сделать как то по другому?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2018, 08:32
Ответы с готовыми решениями:

datetimepicker1 sql запрос с оператором between
Спасибо заранее просто за то что прочитали! Уважаемые форумчане я знаю что таких тем много, но мало ли кто откликнется так как искать время...

Sql запрос в условие if
Подскажите как правильно написать sql запрос в условие if ('select regformid from brsreportsref where regformid in...

Sql запрос и условие для даты
Доброго времени суток. Сложилась такая ситуация. В программе есть возможность записывать в БД информацию. Информация записывается в...

21
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
02.04.2018, 08:42
а сам запрос то где?
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
02.04.2018, 08:44  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
а сам запрос то где?
Delphi
1
2
Form1.ADOQuery1.SQL.Add('SELECT ChequeId AS  "Id чека", Ch_Pos AS "Позиция в чеке", Code AS "Код товара", BarCode AS "Штрих-код", GoodsName AS "Название", Summa AS "Сумма", Disc_Summ AS "Сумма скидки", DateOperation AS "Дата операции" FROM [SES].[dbo].[ChequePos]');
Form1.ADOQuery1.SQL.Add('WHERE BarCode IN (:b1)AND YEAR(DateOperation) >= :b2 AND YEAR(DateOperation) <= :b22 AND MONTH(DateOperation) >= :b3 AND MONTH(DateOperation) <= :b23 AND DAY(DateOperation) >= :b4 AND DAY(DateOperation) <= :b5 ');
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
02.04.2018, 08:49
нет, так работать не будет
конструкция IN () предполагает в скобках перечисления через запятую, поэтому строку скорее всего нужно формировать в цикле
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
02.04.2018, 09:07  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
предполагает в скобках перечисления через запятую
Memo1.Lines.CommaText;

CommaText - как раз приводит к виду: 4015400736325,4015400736370
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
02.04.2018, 09:18
Представляет весь список одной строкой, разделенной запятыми. При этом строки с пробелами заключаются в двойные кавычки
ну значит должно работать, я делал 1 раз и через цикл

еще, если список в IN (), длинный, то лучше его загрузить во временную таблицу и сделать Join
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:10  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
ну значит должно работать, я делал 1 раз и через цикл
а не осталось примера случайно?


Цитата Сообщение от qwertehok Посмотреть сообщение
еще, если список в IN (), длинный, то лучше его загрузить во временную таблицу и сделать Join
думаю ограничивать до 10-15
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,417
Записей в блоге: 3
03.04.2018, 08:21
Вместо выполнения запроса сделайте
Delphi
1
ShowMessage(Form1.ADOQuery1.SQL.Text);
и посмотрите, корректно ли сформирован Ваш запрос...
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
03.04.2018, 08:22
Цитата Сообщение от Dr@gon. Посмотреть сообщение
а не осталось примера случайно?
примера как склеить строку с пробелом?

Delphi
1
2
3
4
5
for i:=0 to xxx.Items.Count-1 do
begin
  s:=s+xxx.Items[i]+',';
end
// и дальше удаляешь последнюю запятую
Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
и посмотрите, корректно ли сформирован Ваш запрос...
не получится - там параметры, а запрос с параметрами просто так не отображается
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:26  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
корректно ли сформирован Ваш запрос
вот так отображается
Миниатюры
Условие с SQL оператором IN  
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:30  [ТС]
если сделать так:
SQL
1
WHERE BarCode IN ('+Memo1.Lines.CommaText+')
то выдает ошибку: Ошибка арифметического переполнения при преобразовании varchar к типу данных numeric
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,417
Записей в блоге: 3
03.04.2018, 08:40
Цитата Сообщение от qwertehok Посмотреть сообщение
там параметры
вот за что терпеть их не могу...

Добавлено через 3 минуты
и не нравится мне, что в конструкции Where у вас между скобкой и первым AND пробела нет...
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
03.04.2018, 08:41
Цитата Сообщение от Dr@gon. Посмотреть сообщение
если сделать так:
WHERE BarCode IN ('+Memo1.Lines.CommaText+')
то тогда показывай ShowMessage
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:46  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
то тогда показывай ShowMessage
вот, и пробел добавил
Миниатюры
Условие с SQL оператором IN  
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
03.04.2018, 08:48
колонка BarCode какого типа?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
03.04.2018, 08:49
а нельзя дату просто по-человечьи?
Delphi
1
and dateoperation between :date1 and :date2
1
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:50  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
колонка BarCode какого типа?
varchar

Добавлено через 1 минуту
Цитата Сообщение от krapotkin Посмотреть сообщение
а нельзя дату просто по-человечьи?
можно, оказывается) спасибо
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
03.04.2018, 08:53
если колонка varchar то почему ты в нее пихаешь цифры? нужно так IN ('1','2')
0
19 / 19 / 9
Регистрация: 22.11.2010
Сообщений: 321
03.04.2018, 08:55  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
если колонка varchar то почему ты в нее пихаешь цифры? нужно так IN ('1','2')
в самом SQL такая конструкция прокатывает IN (1,2) вот и не стал заморачиваться
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
03.04.2018, 08:57
исправляй и отписывайся - работает или нет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2018, 08:57
Помогаю со студенческими работами здесь

Запрос SQL и условие Delphi 2010
Всем доброе время суток, нужно было сделать кнопку, которая по зарегистрированному номеру из базы данных MySQL(через денвер) доставала его...

SQL запрос, условие отбора массив
Есть БД Access с таблицами. Нужно послать запрос где условие отбора будет массив. var fish:array of string; ... with ...

SQL запрос между 2 датами + к нему дополнительное условие
Приветствую всех! У меня возникла одна проблема. Как добавить ещё условие для поиска по какому-нибудь полю в таблице. С датами по...

If условие. Что-то с оператором
var a, b:integer; k, play:string; begin k:='text - '; writeln('System: text'); writeln(); writeln('Enter your name, then...

как правильно проверить условие оператором if
Подскажите, как правильно и кратко записать проверку этого условия оператором if: if(i / 10 == 1 или 2 или 3 или 4......и.т.д) а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru