powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема в запросе с параметром в Access!!!
12 сообщений из 12, страница 1 из 1
Проблема в запросе с параметром в Access!!!
    #39671148
Afkshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Проблема в том что если допустим назначить на два или более поля параметр и при выполнении запроса не ввести значение в один из них или наоборот ввести значение только в один из параметров, запрос выдаст пустую таблицу. Так как же сделать что бы учитывались те параметры в которые я ввел значения т.е. 3 из 5, 1 из 5 и т.д.
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671149
Afkshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще в дополнение. Смотрел видео на ютубе на эту тематику и в комментариях к нему был аналогичный вопрос, ответ на него был таков что вся проблема решается с помощью переменных, а как конкретно это делать автор видео обещался объяснить в след. видео но оно не выходит спустя 3 года)))
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671151
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Afkshnik,
Отвечу, как понимаю.
Допустим, у вас есть в запросе пять полей с параметрами.
Если параметр пропущен - то это не значит, что Акс перестанет обращать на него внимание, типа - ну нет, так нет. Просто этот параметр примет значение "", то есть - пустое значение. Соответственно, запрос будет искать строку с совпадением по образцу введённых параметров и с двумя или сколько там пустыми значениями поля из "пропущенных". И если такого совпадения не найдено - вы получаете свою пустую строку.
Теперь по вашему второму вопросу.
Запрос с параметром как он есть - не очень удобная штука, как вы сами убедились. Как вариант - играться с переменными, но не всегда это удобно.
Можно сделать проще. Сделайте форму, сделайте на ней пустые поля с нужным форматированием. И сделайте тот же запрос, который в качестве параметров будет брать значения из полей формы.
Нюансы:
может понадобиться прямо в запросе преобразовывать значение того или иного поля формы в нужный тип данных.
В некоторых случаях удобно сделать таблицу с полями нужных типов данных, и её прикрутить к форме, по которой будут забиваться значения в параметры запроса.
Может понадобиться сделать серию последовательных запросов, дабы правильно отработать все варианты значений, в том числе и с пустыми полями.
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671178
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim myQuery As QueryDef, strSQL, p1, p2
Set myQuery = CurrentDb.QueryDefs("ВашЗапрос")
strSQL="SELECT * FROM tbl WHERE"
IF IsNull(me.полеВвода1параметра) then 
		p1=null 
	Else 
		p1=" полеЗапросаПоКоторомуПроводитсяОтбор(=,>,<,<>,like)полеВвода1параметра" 
End if
IF IsNull(me.полеВвода2параметра) then 
		p2=null 
	Else 
		p2=" полеЗапросаПоКоторомуПроводитсяОтбор(=,>,<,<>,like)полеВвода2параметра" 
End if
myQueru.SQL=strSQL & p1 & p2
DoCmd.OpenQuery "ВашЗапрос"
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671244
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Afkshnik,

Я так понимаю ТС у нужно реализовать в запросе переменное количество параметров от ни одного до например пяти...
Можно сделать форму, вставить туда вместе с полями для параметров рядышком флажки и тащить в запрос и флажки и поля в качестве условий отбора, какие флажки включены, такие условия и работают...
Недостаток один - количество параметров ограничено и текст запроса из-за условий большой, например при трех параметрах в условии нужно прописать все комбинации:
000 - не используется ни один параметр
001 - используется третий параметр
010
011
100
101
110
111 - используются все параметры.
Так обычно делают все пионэры ибо метод требует минимум кода (во все флажки и поля по одному Requery).

Но правильнее имхо в зависимости от наличия галочек в форме формировать запрос налету с нужными параметрами, особенно когда параметров много...
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671257
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу пардон-забыл про AND и MID:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim myQuery As QueryDef, strSQL, p1, p2 'сколько хотите параметров pN
Set myQuery = CurrentDb.QueryDefs("ВашЗапрос")
IF IsNull(me.полеВвода1параметра) and IsNull(me.полеВвода2параметра) and... IsNull(me.полеВводаNпараметра) then
                     myQuery.SQL="SELECT * FROM tbl"
                      DoCmd.OpenQuery "ВашЗапрос"
                    exit sub
End if
strSQL="SELECT * FROM tbl WHERE"
IF IsNull(me.полеВвода1параметра) then  'или один блок IF c операторами ElseIF
		p1=null 
	Else 
		p1=" and полеЗапросаПоКоторомуПроводитсяОтбор(=,>,<,<>,like)полеВвода1параметра" 'аналогично для всех параметров
End if
IF IsNull(me.полеВвода2параметра) then 
		p2=null 
	Else 
		p2=" and полеЗапросаПоКоторомуПроводитсяОтбор(=,>,<,<>,like)полеВвода2параметра" 
End if
...................
myQueru.SQL=strSQL & Mid(p1 & p2 ....& pN,6)
DoCmd.OpenQuery "ВашЗапрос"

[/quot]
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671291
Afkshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasios, вот именно с формой я и пытаюсь это реализовать. Пока получилось сделать через макрос команду если и применить фильтр и то только два поля если больше полей то команды в макросе очень длинные а вот в запросе хотя бы так как в форме у меня не получилось, буду пробовать примеры приведенные ниже. Если у кого нить еще есть идеи все попробую
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671292
Afkshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Я так понимаю этот код пишется в режиме sql в запросе?
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671303
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfkshnikЕсли у кого нить еще есть идеи все попробую
вы бы примерчик своего решения приложили, а то сплошная игра типа УГАДАЙКА
и конечно это проще делать кодом , а не макросом

надо сделать форму, на которую разместить
--контролы для ввода значений ваших параметров
--и кнопку для запуска кода, динамически формирующего фильтр на основе введенных дначений
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671306
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Afkshnik,
пример динамического поиска и кода
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671308
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Afkshnik,

код уменьшится раза в 3, если фильтрацию делать не по-символьно, а по кнопке
(останется 4 строки на поле поиска+10 строк общего типа+10 строк , если фильтрация необновляемого запроса)
...
Рейтинг: 0 / 0
Проблема в запросе с параметром в Access!!!
    #39671324
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Afkshniksdku,
Я так понимаю этот код пишется в режиме sql в запросе?Этот код пишется на событии нажатия кнопки в той форме,которую Вы создаете.Еще исправьте: или пробел добавьте после WHERE,или 5 вместо 6 в MID
Зачем именно запрос? Гляньте это-форма "таблица1":
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема в запросе с параметром в Access!!!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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