powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP + фильтр по выделенному
18 сообщений из 18, страница 1 из 1
ADP + фильтр по выделенному
    #32241140
Чумаков А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поиски по форуму привели к убеждению, что удобный для юзеров "Фильтр по выделенному" в 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, то все их разнообразие увеличивается по законам комбинаторики. Неужто городить такое кол-во ветвлений придется ?
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241178
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@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
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241208
Чумаков А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так:

SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Number Like COALESCE(@ID_Cust ,'%')
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241226
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только учти, что Like работает медленнее, чем =
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241256
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не парься,
пойди освежись.
ответ здесь найдешь ты,
улучшится жизнь

SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Number=@ID_Cust or Customers.Number=0
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241291
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам:
сам-то понял чего написал
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241366
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собери строку запроса в переменную по переданным параметрам, а потом просто execute(@strSQL)
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241377
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чаво тут непонятного?
для Саши1 поясняю:
запрос вернет записи
для конкретного Customers.Number
либо вернет ВСЕ записи,
если Customers.Number=0
(0- подразумевает "(Все)"
на форме поля со списком)
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241411
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Nick987

Например на форме один параметр - текстовое поле
По твоему совету
В хранимой процедуре собираем запрос как строку

@str='SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Name=''' +@Cust + ''''
exec (@str)

Я в форме задал такое условие поиска "Иванов' delete from customers ' "
как думаешь, что получится после выполнения процедуры?
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241465
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 incold
:-)
Можно не отвечать?
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241481
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам:
не тормози.
Customers.Number - это код в таблице !!!
он никак не ноль !!!
посто при @ID_Cust = 0 должны выбираться ВСЕ записи с ЛЮБЫМ
Customers.Number !!!
а при @ID_Cust <> 0 должны выбираться записи
с Customers.Number=@ID_Cust !!!
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241657
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша1!
ты чо в рассуждалки
играешь?
ты сначала попробуй
код, а потом гутарить будешь
я потому и 0 использую,
что его НЕТ в таблице
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241671
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам:
SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Number=@ID_Cust or Customers.Number=0

при @ID_Cust=0 вернет 0 записей, а должен вернуть ВСЕ

(вроде доходчиво объясняю? :)
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241692
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ощибка при копировании
не так написал
виноват
а сам наезжаю
на маленьких
простите, пожалуйста
вот как нада
SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Number=@ID_Cust or @ID_Cust =0
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241694
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хам:

то-то же
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241773
Чумаков А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.
В итоге остановился на варианте Хама, как наиболее красивого и быстрого.

SELECT Customers.Number, Customers.Firms
FROM Customers
WHERE Customers.Number =@ID_Cust or @ID_Cust =0
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241791
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хам, слыхал? Ты наиболее красивый и быстрый.
...
Рейтинг: 0 / 0
ADP + фильтр по выделенному
    #32241900
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что есть
того не отнять
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP + фильтр по выделенному
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]