Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Условие в SQL запросе: or <--> and


GHT ©   (2008-03-23 18:30:00) 

Подскажите, пожалуйста:
хочу дополнить sql запрос условием (в поле DataOtk пусто или равно 01.01.2008), - нужно ли заключать в скобки? как правиль но написать:  
+' AND DataOtk IS NULL OR DataOtk=:MDat'
и как явным образом в запросе прописать дату? вместо MDat?


Ega23   (2008-03-24 22:57:00) [1]


> зачем описание? если хочется просто посмотри код парсера.


Так в том-то и дело: мало-ли что они завтра в коде поменяют?
А вот когда документально закреплено - тогда другое дело.
А код парсера я и сам посмотреть могу, то как раз понятно


sniknik   (2008-03-24 22:49:00) [2]

> а вот перед ':' пробел необязателен.
это не из списка следует, а из условия в остальном коде.

кстати оттуда же следует (не знал пока не посмотрел :), что путь можно записывать в запросе так '...С ::\Dir\File.ras...', а я зачем-то автоопределение всегда выключал в таком случае и создавал их ручками, ради того чтобы нужное оставить...
век живи два учись...


sniknik   (2008-03-24 22:41:00) [3]

зачем описание? если хочется просто посмотри код парсера. там не очень много кода.

разделителями имен являются
function NameDelimiter: Boolean;
begin
 Result := CurChar in [' ', ',', ';', ')', #13, #10];
end;

т.е. '=1' в конце, если без пробела (/другого символа из списка), точно уже, присоеденит к имени параметра, а вот перед ':' пробел необязателен.
естественно это только для ADO (что смотрел), для другого парсер может быть иным.


Ega23   (2008-03-24 22:04:00) [4]


> Пробелы до и после, иначе не всегда сработает.


вот оно там как-то крайне странно срабатывает...
Вообще есть где-нибудь чёткое описание того, что будет являеться параметром при ParamCheck=True?


Anatoly Podgoretsky   (2008-03-24 20:29:00) [5]

Акцесс штучка такая, я бы не рисковал а написал бы так A = :P
Пробелы до и после, иначе не всегда сработает.


sniknik   (2008-03-24 15:58:00) [6]

> А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?
а вот и не уверен..., потому и написал "наверное", а может и поймет...
а с пробелом наверняка правильно определит.


Ega23   (2008-03-24 15:52:00) [7]


> sniknik ©   (24.03.08 15:23) [11]


А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?


sniknik   (2008-03-24 15:23:00) [8]

+ ошибка наверное будет... при определении параметра. если будет надо пробел поставить -> :DatCheck =1


sniknik   (2008-03-24 15:15:00) [9]

> Не знаю как в Access, для MSSQL я бы написал
не поддерживает пакетов... не получится.

можно так например, аналог
Select ....  where (NM=:NM) and (:DatCheck=1 or DataOtk=:DataOtk)
смысл думаю понятен.


Ega23   (2008-03-24 15:04:00) [10]

Не знаю как в Access, для MSSQL я бы написал

Declare @DataOtk datetime;
Set @DataOtk=:MDat;
Select ....  where (NM=:NM) and (@DataOtk is null or DataOtk=@DataOtk)


GHT   (2008-03-24 14:49:00) [11]

Раньше было:
' where DataOtk IS NULL OR DataOtk=:MDat'
я и горя не знал,
а теперь как на языке SQL написать:
... where (NM=:NM) AND (DataOtk IS NULL OR DataOtk=:MDat)'?


GHT   (2008-03-24 14:46:00) [12]

Использую я: ADO + Access
Запрос у меня заканчивается:
... where NM=:NM'+
и как, соответственно, мне дополнить его:
+' AND DataOtk IS NULL OR DataOtk=:MDat'
???


Германн   (2008-03-24 01:03:00) [13]


> Anatoly Podgoretsky ©   (24.03.08 00:53) [5]

Я же не о таких вариантах, когда обязательны скобки. Я о таких, когда они и не нужны. Но просто наглядно показывают отдельные сравнения.


Anatoly Podgoretsky   (2008-03-24 00:53:00) [14]

> Германн  (24.03.2008 00:44:04)  [4]

Не скажи, например - a and b or c, это или (a and b) or c, или a and (b or c)
результаты то разные


Германн   (2008-03-24 00:44:00) [15]


> Anatoly Podgoretsky ©   (24.03.08 00:38) [3]

Если ты про скобки, то чаще всего надо. Но, как правило, лишь самому программисту для "наглядности". При необходимости последующего изменения кода это полезно.


Anatoly Podgoretsky   (2008-03-24 00:38:00) [16]

И надо и нет, зависит от сервера и от логики.


DrPass   (2008-03-23 23:14:00) [17]


> нужно ли заключать в скобки

А ты попробуй. Не бойся, он тебя не укусит и винт не отформатирует, даже если ошибешься

>  как явным образом в запросе прописать дату? вместо MDat?

Зависит от региональных настроек твоего сервера.


Сергей М.   (2008-03-23 18:54:00) [18]

Все зависит от конкретной СУБД, каковую ты обозначить не удосужился.
Но скобки, как правило, нужны.


Наверх

Титульная страница Поиск, карта сайта Написать письмо