Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Параметр "для любого значения"! |
Автор: Rowi 3.3.2009, 18:12 | ||||||
Здравствуйте! Используется Delphi5 + ADO + Access Есть простейший запрос с фильтрацией типа:
С самой фильтрацией проблем нет, но если необходимо временно отключить фильтр по одному полю, какое значение параметра необходимо установить, чтобы, например, поле "FieldName1" не фильтровалось? Пробовал
Пробовал
В результате - пустой набор записей! Т.е. вопрос: какое значение параметра (для Access'а!) соответствует "равно любому значению"? Текст запроса изменять не хотелось бы - тогда теряется всё преимущество использования параметров! Есть ли такой способ? Или только изменять текст запроса? P.S. Да, кстати, если это важно - тип поля: числовой (целые числа) |
Автор: Kbl4AH 3.3.2009, 21:29 |
нет |
Автор: Данкинг 3.3.2009, 22:03 |
Зачем что-то придумывать? Заведи переменную для AdoQuery.Text и меняй её по своему усмотрению, или две разные переменных сделай. |
Автор: Akella 3.3.2009, 22:51 |
но в запросе у тебя 2 параметра |
Автор: Kbl4AH 3.3.2009, 23:06 |
он написал, какие значения параметру1 он пробовал присвоить |
Автор: Akella 4.3.2009, 00:26 |
а чему был равен в это время параметр 2? |
Автор: Kbl4AH 4.3.2009, 09:02 | ||||
какому-то нормальному значению ЗЫ. 2 Rowi Возможен такой способ:
Поменять на:
|
Автор: Rodman 4.3.2009, 09:58 |
если хошь достать все.. че просто не делать параметр?! |
Автор: Kbl4AH 4.3.2009, 18:28 | ||
да, глюканул
А тип Param1 (если в аксессе бывает тип переменной) делай строковый |
Автор: Rowi 4.3.2009, 18:57 | ||
ОК, попробую... А кстати, как в SQL-запросе перевод в строку делать? Там ведь IntToStr() не поставишь... |
Автор: Kbl4AH 4.3.2009, 19:51 |
не поставишь... зато поставишь другое))) я access не знаю в отличие от google'a((( |
Автор: Akella 4.3.2009, 20:51 | ||
Зависит от СУБД, в Firebird
|
Автор: Rowi 10.3.2009, 19:09 | ||||||
Ура! Разобрался!!! ![]() Просто вместо
я ввожу
В итоге умный Access (или ADO - уж не знаю, кто именно))) автоматически (!) преобразует значение поля в строковый вид (а LIKE работает только со строковыми значениями) и в итоге все работет!!! По крайней мере при значении '%' (при '*' не пробовал, но тоже должно по идее)
всё работает: фильтруется только по FieldName2, а по FieldName1 - никакой фильтрации, выдаются все значения. Что и требовалось, без изменения текста запроса! |
Автор: Akella 11.3.2009, 17:46 |
![]() ![]() |
Автор: Kbl4AH 12.3.2009, 08:26 | ||
все мы досмотрели, просто не понятно было, что человек хотел от запроса... |
Автор: Rowi 21.9.2012, 23:18 |
Продолжая свою же тему... Задача та же, но поле логического типа (true/false). Если для строкового нужно ставить "%" (что соответствует любому значению), то что надо ставить для логического, чтобы соответствовало любому значению? Добавлено через 9 минут и 29 секунд Блин, дико извиняюсь - уже решил. Оказывается, в свойствах параметра не нужно было менять тип данных: при DataType=ftWideString и Type=OleStr всё работает! (Value=%) Извините за беспокойство, спасибо! |