Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметры запроса по умолчанию 
:(
    Опции темы
troika
  Дата 25.6.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 12.4.2009

Репутация: нет
Всего: нет



Добрый день.
Есть запрос с 3 параметрами. Нужно сделать так, что если пользователь не ввел какой-либо параметр, то он бы не учитывался при отборе данных. Например, есть следующие параметры запроса: номер студенческого билета, факультет, ФИО.  Если пользователь ввел только факультет, то нужно показать всех студентов факультета, не зависимо от ФИО и номера студенческого билета. Проблема в том, что если не введен хоть один параметр, то ничего не отображается.
Можно ли как-то это исправить? Например, задать параметрам значение по умолчанию Like "*". Еще пробовал написать в условии отбора, например для поля Факультет, так: IIf(IsNull([Введите факультет]);Like "*";[Введите факультет]). Если что-то ввести, то работает, а если ничего не вводить - увы, нет.


Это сообщение отредактировал(а) Akina - 25.6.2009, 19:45
PM MAIL   Вверх
Akina
Дата 25.6.2009, 19:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

Select *
From [Таблица]
Where FIO Like ([Введите первые символы ФИО студента] & "*")



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 25.6.2009, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Или можно как-то так:
Код

WHERE iif(Not [параметр] is null, [Поле] = [параметр], True) = True

PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 26.6.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(bopoha @  25.6.2009,  22:46 Найти цитируемый пост)
Или можно как-то так:

Нельзя. Запрос параметра - обычный InputBox, и даже по Esc возвращает не Null, а пустую строку.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 26.6.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Цитата(Akina @  26.6.2009,  08:27 Найти цитируемый пост)
Нельзя. Запрос параметра - обычный InputBox, и даже по Esc возвращает не Null, а пустую строку. 

Это предположение, что InputBox, на самом деле если ничего не ввести, то параметр будет равен Null. И если бы возвращал пусто, то тоже можно обработать.

Еще как можно (см. запрос во вложенной бд)! 
И вообще давать пользователю возможность выполнять напрямую запрос не хорошо. Так надежней:
Код

Dim qry = CurrentDb.QueryDefs("имя")
qry.Parametrs("имя") = значение
qry.Execute
или 
... = qry.OpentRecordset()



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  test_prm.zip 9,76 Kb
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 26.6.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(bopoha @  26.6.2009,  12:46 Найти цитируемый пост)
на самом деле если ничего не ввести, то параметр будет равен Null

Да, ошибся... или перепутал, или так, как я написАл, было в очень давней версии.

Цитата(bopoha @  26.6.2009,  12:46 Найти цитируемый пост)
см. запрос во вложенной бд

В нём лень копаться, я написАл такой:
Код

SELECT TOP 1
IIf(isnull([Введите параметр]),"Null","Not Null") AS IsParameterNull
FROM tbl1;

что сути не меняет. Если же использовать IsEmpty или сравнение с пустой строкой - получим фигвам.

Однако приведённый мной выше вариант тоже работает, хотя Null & "*" = Null.

Так что не всё там просто, где-то логический косяк явно присутствует.

Это сообщение отредактировал(а) Akina - 26.6.2009, 12:02


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
troika
Дата 28.6.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 12.4.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 25.6.2009,  19:50)
Код

Select *
From [Таблица]
Where FIO Like ([Введите первые символы ФИО студента] & "*")

Спасибо. Все работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.