-
Есть абстрактный запрос.
SELECT ZAKAZY.ID ZI, ZAKAZY.ZAKAZ_SUM, ZAKAZY.STOL_ID,
ZAKAZY.PAY_TYPE, USERS.USERNAME, COUNT(ZAK_CONTENTS.bludo_id) PB
FROM ZAKAZY
INNER JOIN USERS ON (USERS.ID=ZAKAZY.USERID)
INNER JOIN ZAK_CONTENTS ON (ZAK_CONTENTS.zakaz_id=ZAKAZY.ID)
WHERE STATUS=3 AND CAST (DATE_OPEN AS DATETIME)>=CAST(:ds AS DATETIME)
GROUP BY 1,2,3,4,5
Вопрос: почему при
xxx.ParamByName('ds').Value=DateTimePicker1.Value фильтр не срабатывает (0 записей), в IBExpert'е данный запрос выполняется с указанием даты и выдает нужные мне записи. Как же так? -
Медвежонок Пятачок © (05.12.12 09:13) [1]Потому что в запросе каст параметра, а сам параметр получает вариант значение.
И что там в результате получается - одному серверу известно. -
Медвежонок Пятачок © (05.12.12 09:21) [2]Вопрос: почему при
xxx.ParamByName('ds').Value=DateTimePicker1.Value фильтр не срабатывает (0 записей),
Все наоборот.
Фильтр срабатывает и в результате в выборке ноль записей. -
есть абстрактный вопрос.
нафига делать приведение поля к типу и параметра к нему же??? почему не сравнивать то что есть, или (если поле в неудобном для сравнения формате) то хотя бы параметр сразу в нужном не присваивать?
половину "полезности" от параметра "убиваешь". -
anatoly pogoretsky (05.12.12 09:36) [4]> pushkin42 (05.12.2012 02:53:00) [0]
F1 + TDateTime type -
> Как же так?
это божья кара за написание "абы как". :) -
Ну ок, а как тогда правильно писать? Под ночь тупил как-то...
-
Медвежонок Пятачок © (05.12.12 14:06) [7]правильно без извратов с кастом.
и без присваивания значения параметру через вариант. -
Вот так:
WHERE STATUS=3 AND DATE_OPEN>=:ds
xxx.ParamByName('ds').Value := DateTimePicker1.DateTime
или вот так:
WHERE STATUS=3 AND DATE_OPEN>='01.02.03 04:05:06'
т.е. с явным указанием строковой переменной? -
> DATE_OPEN>='01.02.03 04:05:06'
сам скажи что больше
это '01.02.03 04:05:06' или это '01.02.2001 04:05:06'
? -
строка <> дататайм
-
Медвежонок Пятачок © (05.12.12 17:52) [11]SELECT :ds_variant as VariantValue, :ds as DateTimeValue, DATE_OPEN
FROM ZAKAZY
xxx.ParamByName('ds_variant').Value := DateTimePicker1.DateTime
xxx.ParamByName('ds').AsDateTime := DateTimePicker1.DateTime
И после смотреть в грид.
Долго и пристально. Пока грид не начнет смотреть на тебя. -
anatoly podgoretsky © (05.12.12 17:56) [12]
> sniknik © (05.12.12 17:07) [9]
Змей однако. -
А я ещё, помнится, раз наколовшись в определении параметров по-умолчанию, отключал нафиг ParamCheck и создавал параметры в ран-тайм с привязкой к типу данных. Зато вот уж точно никаких проблем не было.