![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Условие в 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]Все зависит от конкретной СУБД, каковую ты обозначить не удосужился.
Но скобки, как правило, нужны.