![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
исключение параметров из запроса не меняя тело [Access]
nick_van_rijn © (2007-06-01 16:14:00)Господа подскажите.
запрс вида
select t1.*,t2.* from t1,t2 where (t1.код=t2.код) and(t1.дата between [:D] and [:D1]) and (t1.Данные like[:N])
Каким образом передавать параметры что бы не меняя тела запроса можно было выбрать
1. (t1.Данные=[:N]) на все даты
2 с 1 мая по 30 независимо от (t1.Данные=[:N])
Если со вторым понятно -передать '*' как строку, то с датами не все понятно.
sniknik (2007-06-01 17:22:00) [1]>а никто не говорил что bde.
обдумай фразу тщательнее... там выбор, или/или.
и кстати очень зря, что не говорил.
> конечно два дополнительных параметра это вариант.... но...
ничего не поделаешь. если был не аксесс, а mssql(др.) можно было бы обойтись имеющимися, в нем возможны пакеты команд и переменные в запросах (один раз присваиваеш в нескольких местах используешь).
nick_van_rijn (2007-06-01 16:38:00) [2]конечно два дополнительных параметра это вариант.... но...
nick_van_rijn (2007-06-01 16:34:00) [3]>>sniknik © а никто не говорил что bde.
Sergey13 (2007-06-01 16:28:00) [4]> [0] nick_van_rijn © (01.06.07 16:14)
select t1.*,t2.* from t1,t2 where (t1.код=t2.код)
and((:need_date=1 and t1.дата between [:D] and [:D1]) or :need_date=2)
and ((:need_data=1 and t1.Данные like[:N]) or :need_data=2)
Управляя параметрами :need_date и :need_datа можно достичь желаемого
Если движок не позволяет использовать пераметр дважды, немного модифицируй запрос.
sniknik (2007-06-01 16:27:00) [5]select * from t1 INNER JOIN t2 ON t1.[код]=t2.[код]
where (t1.[дата] between :D and :D1 OR :D2 IS Null) AND (:N1 IS Null OR t1.[Данные] like :N)
> Если со вторым понятно -передать '*' как строку
сравнение на null будет быстрее чем строковое сравнение с '*' (кстати нужно не * а %... или все переделывать раз у тебя BDE)