|
|
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Поиски по форуму привели к убеждению, что удобный для юзеров "Фильтр по выделенному" в ADP + SQL работает, но итоги по форме не пересчитываются для отфильтрованнх записей. Поэтому нужда заставила ваять свой фильтр по формам. Логика проста - на форме располагаются дополнительные поля для указания в них критерия фильтрации, а данные из них передаются в SP, на основе которой построена форма и все. Но вот как в этой самой SP написать код примерно такого типа ------------------------------ @ID_Cust INT As SELECT Customers.Number, Customers.Firms FROM Customers WHERE (CASE WHEN @ID_Cust=0 then Customers.Number Like % else Customers.Number=@ID_Cust END) ------------------------------------ Т.е. так SQL, естетсвенно, ругается (а хочется, чтобы при критерии = 0 (т.е. без фильтра по этому полю) выводились все записи, а с критерием - нужные), Можно, конечно и так: --------------------------------------- @ID_Cust INT As if @ID_Cust=0 SELECT Customers.Number, Customers.Firms FROM Customers Else SELECT Customers.Number, Customers.Firms FROM Customers WHERE (ustomers.Number=@ID_Cust) --------------------------------------- Но когда критериев не 1 и не 2, то все их разнообразие увеличивается по законам комбинаторики. Неужто городить такое кол-во ветвлений придется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 09:31 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
@ID_Cust INT As SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number Like nz(@ID_Cust ,`%`) nz напиши по аналогии с Акесовской nz, чтобы при @ID_Cust=0 выдавала %, иначе @ID_Cust ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 09:50 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Сделал так: SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number Like COALESCE(@ID_Cust ,'%') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 10:03 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
только учти, что Like работает медленнее, чем = ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 10:13 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
не парься, пойди освежись. ответ здесь найдешь ты, улучшится жизнь SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number=@ID_Cust or Customers.Number=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 10:25 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 Хам: сам-то понял чего написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 10:34 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Собери строку запроса в переменную по переданным параметрам, а потом просто execute(@strSQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 10:59 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
чаво тут непонятного? для Саши1 поясняю: запрос вернет записи для конкретного Customers.Number либо вернет ВСЕ записи, если Customers.Number=0 (0- подразумевает "(Все)" на форме поля со списком) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:01 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 Nick987 Например на форме один параметр - текстовое поле По твоему совету В хранимой процедуре собираем запрос как строку @str='SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Name=''' +@Cust + '''' exec (@str) Я в форме задал такое условие поиска "Иванов' delete from customers ' " как думаешь, что получится после выполнения процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:12 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 incold :-) Можно не отвечать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:27 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 Хам: не тормози. Customers.Number - это код в таблице !!! он никак не ноль !!! посто при @ID_Cust = 0 должны выбираться ВСЕ записи с ЛЮБЫМ Customers.Number !!! а при @ID_Cust <> 0 должны выбираться записи с Customers.Number=@ID_Cust !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:33 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Саша1! ты чо в рассуждалки играешь? ты сначала попробуй код, а потом гутарить будешь я потому и 0 использую, что его НЕТ в таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 12:50 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 Хам: SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number=@ID_Cust or Customers.Number=0 при @ID_Cust=0 вернет 0 записей, а должен вернуть ВСЕ (вроде доходчиво объясняю? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 12:56 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
ощибка при копировании не так написал виноват а сам наезжаю на маленьких простите, пожалуйста вот как нада SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number=@ID_Cust or @ID_Cust =0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 13:03 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
2 Хам: то-то же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 13:05 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. В итоге остановился на варианте Хама, как наиболее красивого и быстрого. SELECT Customers.Number, Customers.Firms FROM Customers WHERE Customers.Number =@ID_Cust or @ID_Cust =0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 13:43 |
|
||
|
ADP + фильтр по выделенному
|
|||
|---|---|---|---|
|
#18+
Хам, слыхал? Ты наиболее красивый и быстрый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 13:50 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32241291&tid=1679819]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 433ms |

| 0 / 0 |
