Форум: "Базы";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];
ВнизAND и OR при параметрич.запросе Найти похожие ветки
← →
PKT (2002-11-15 05:53) [0]SELECT * FROM Data.db WHERE
(Num = :Num1) AND (Num = :Num2)
Далее
Params[0].AsInteger := 1;
Params[1].AsInteger := 1;
Проходит нормально, причем неважно, какие значения
присваиваются.
Но если поставить "ИЛИ"
SELECT * FROM Data.db WHERE
(Num = :Num1) OR (Num = :Num2)
то вываливается
Access violation at address 4C5F30C9 in module "idsql32.dll".
Неужто нельзя использовать OR при обращении через параметры
к одному и тому же полю дважды ?
← →
sniknik (2002-11-15 09:53) [1]странно должно работать (неохота проверять)
попробуй так
SELECT * FROM Data.db WHERE Num IN (:Num1, :Num2)
← →
Котелок (2002-11-15 09:55) [2]Поробуй через parambyname заполнять.
← →
sniknik (2002-11-15 10:23) [3]да уж забавное свойство BDE параметров (проверил всетаки), вставка значения в текст такого запроса работает, а с параметрами Access violation.
← →
oss (2002-11-15 10:25) [4]1. попробую
SELECT * FROM Data.db WHERE
((Num = :Num1) OR (Num = :Num2))
2. сделай переменную "SELECT * FROM Data.db %s"
потом по надобности испольуй Format и заноси все что душе угодно.
← →
PKT (2002-11-15 10:30) [5]to: sniknik © (15.11.02 09:53)
Предиката IN не прокатывает в параметр.запросах, это я на
форуме уяснил.
to:Котелок © (15.11.02 09:55)
Имелось в виду ParamValues ? Все равно ошибка вываливается.
Что интересно, если добавить
SELECT * FROM Data.db WHERE
(Num = :Num1) OR (Num = :Num2)
AND (Num < ЗаведомоБольшоеЧисло)
то все работает
← →
sniknik (2002-11-15 10:43) [6]так тоже работает
WHERE NOT ((Num<>:Num1) AND (Num<>:Num2))
проще конечно в запрос значение вставить без параметра текстом.
(замазывание проблемы)
← →
PKT (2002-11-15 10:50) [7]to: sniknik © (15.11.02 10:43)
Спасибо, пожалуй так и сделаю.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c