Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
10-1102582361
Tormoz
2004-12-09 11:52
2005.10.02
Как соединить две таблицы в одну (Word) ?


11-1107505848
Lars
2005-02-04 11:30
2005.10.02
sending message inside same application


11-1107451723
Kobik
2005-02-03 20:28
2005.10.02
Компонент типа THotKey.


4-1123441832
Anton S.
2005-08-07 23:10
2005.10.02
системный трей


2-1124773293
Serfy
2005-08-23 09:01
2005.10.02
Не могу разобраться...