Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
Помогите составить запрос Найти похожие ветки
← →
Dell3r © (2005-08-20 12:20) [0]Есть база с полями Name, Data, Data2
В поле Data2 есть как даты так и пустые поля.
выполняю запрос
Memo.Lines.Strings[0]:="Select * from Name WHERE (((Data<= :Da) and (Data>= :Da1)) not (Data2<> :Da2)";
QueryTMC.SQL.Assign(Memo.Lines);
QueryTMC.Params.Items[0].DataType:=ftDate;
QueryTMC.Params.Items[0].Value:=da;
QueryTMC.Params.Items[1].DataType:=ftDate;
QueryTMC.Params.Items[1].Value:=da1;
QueryTMC.Params.Items[2].DataType:=ftDate;
QueryTMC.Params.Items[2].Value:=da2;
try
QueryTMC.Open;
except
MessageDlg("Невозможно связаться с таблицей",mtError,[mbOk],0);
end;
Почему ругается на "not" в запросе?
← →
sniknik © (2005-08-20 12:26) [1]почитай про ошибки
http://delphimaster.net/view/3-1124365701/
после сделай нормально, и прочитай в ней причину...
← →
Dell3r © (2005-08-20 12:36) [2]Я вообщето имел ввиду логическое условие not.
т.е. Вывести все записи в которых НЕ заполна дата (пустые)
← →
}{ander © (2005-08-20 12:46) [3]> Почему ругается на "not" в запросе?
"Потому что гладиолус" (с)
Как сервер должен обработать твое выражение? произвести побитное not результата выражения (Data2<> :Da2)?
> Я вообщето имел ввиду логическое условие not.
Что значит имел в виду условие not?
> т.е. Вывести все записи в которых НЕ заполна дата (пустые)
Записи, в которых в поле Data2 находится null (скорее всего именно это ты имеешь в виду, говоря, что оно пустое) находятся по условию:Data2 is null
И вообще - можешь сказать, что конкретно ты хотел получить, выполняя этот запрос?
← →
Dell3r © (2005-08-20 12:56) [4]Спасибо за подсказку.
>И вообще - можешь сказать, что конкретно ты хотел получить, выполняя этот запрос?
В данном поле указаны даты когда нужно созваниваться с клиентом.
В Data указывается дата редактирования записи.
Запрос выбирает записи по полю Data если прошло 2 месяца после последнего редактирования записи.
А поле Data2 нужно для того если нужно выводить записи не через 2 месяца, а в какой-то определенный день.
Получется, что имея две даты эти записи засоряют выборку.
Правдо их было максимум 5, а сейчас за 30 перевалило. вот и приходится от них избавляться.
← →
Sam Stone © (2005-08-20 21:35) [5]Ну, во-первых, not это унарная операция :)
2}{ander
ну хотя бы результат "not(Data2<> :Da2)" будет аналогичен "Data2=:Da2", потому что отрицание производится над булевой величиной (даты либо равны, либо нет)
2Dell3r"Select * from Name WHERE (((Data<= :Da) and (Data>= :Da1)) and (Data2 is null)"
это для Вывести все записи в которых НЕ заполна дата (пустые)
← →
}{ander © (2005-08-21 10:22) [6]2 Sam Stone © (20.08.05 21:35) [5]
> ну хотя бы результат "not(Data2<> :Da2)" будет аналогичен "Data2=:Da2"
Согласен. И что должен делать после этого интерпретатор выражений? Ака он будет обрабатывать следующий предикат:(Условие1 and Условие2) Условие3
Явно не хватает операции между скобками и Условием3.
Кстати! Вот это:(Data<= :Da) and (Data>= :Da1)
можно заменить наData between :Da1 and Da
Удачи.
Страницы: 1 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.042 c