powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Использование параметров в запросах, формах и отчетах
22 сообщений из 22, страница 1 из 1
Использование параметров в запросах, формах и отчетах
    #39705434
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема названа в честь справки MS, которой оказалось недостаточно.
Дано : форма с комбобоксом для выбора параметра, запрос с условием
SELECT Таблица1.Поле1
FROM Таблица1
WHERE (((Таблица1.Поле1)=[Формы]![Форма1]![кмбПоле1]));
Проблема : если комбобоксом ничего не выбрано (или если форма закрыта), то запрос должен вернуть все записи
SELECT Таблица1.Поле1
FROM Таблица1;

Помогите, пожалуйста . Перепробовал функции проверки - не получилось. Ошибка #Имя?
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705463
Код: sql
1.
WHERE (((Таблица1.Поле1)=[Формы]![Форма1]![кмбПоле1]) OR ([Формы]![Форма1]![кмбПоле1] Is NULL));

Если поле не заполнено - точно сработает, а если форма не открыта - запросит значение параметра. По логике, если ничего не указывать, то должно сработать.
ЗЫ. И луче, если писать не [Формы], а [Forms].
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705513
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

Спасибки. Работает. Если форма закрыта -- запрашивает параметр, но если его не вводить -- выводит все записи.
Жить можно. Но вот бы и параметр при закрытой не запрашивал.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705565
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman_Do,
Код: vbnet
1.
поле1=nz([Формы]![Форма1]![кмбПоле1],true)
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705582
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не будет запрашивать если форма открыта, но параметр не введен
если же хотите чтоб не запрашивал при закрытой форме-в уч.базе "Борей" есть функция IsLoaded и в условии отбора так:
Код: vbnet
1.
IIf (IsLoaded(ИмяФормы);полеТаблицыПоКоторомуОтбираем=[Формы]![Форма1]![кмбПоле1];полеТаблицыПоКоторомуОтбираем=true)

если второй аргумент "обернуть" в NZ не будет спрашивать в любом случае
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705967
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уверен,правильно ли я понял.
Код: sql
1.
2.
3.
SELECT Таблица1.Код, Таблица1.Поле1
FROM Таблица1
WHERE ((Таблица1.Поле1)=Nz([Формы]![Форма1]![кмбПоле1],True));


вапще не работает. И следующий тоже (если IIf поместить в условие отбора):
Код: sql
1.
2.
3.
SELECT Таблица1.Код, Таблица1.Поле1
FROM Таблица1
WHERE (((Таблица1.Поле1)=IIf(IsLoaded("Форма1"),([Таблица1].[Поле1])=[Формы]![Форма1]![кмбПоле1],([Таблица1].[Поле1])=True)));


и так тоже
Код: sql
1.
2.
3.
SELECT Таблица1.Код, Таблица1.Поле1
FROM Таблица1
WHERE (IIf(IsLoaded("Форма1"),([Таблица1].[Поле1])=[Формы]![Форма1]![кмбПоле1],([Таблица1].[Поле1])=True));


Может я туплю где. Исправьте.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705987
Roman_Doвот бы и параметр при закрытой не запрашивал. Можно в общем модуле нарисовать функцию, которая возвращает значение поля или NULL, если форма закрыта.
Тогда:
WHERE (((Таблица1.Поле1)=ВашаФункция()) OR (ВашаФункция() Is NULL));
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39705990
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman_Do, можно так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim str$
'функция точно isLoaded?
If  IsLoaded("Форма1") then
str="WHERE (((Таблица1.Поле1)=[Формы]![Форма1]![кмбПоле1]))"
else
str=vbnullstring
End if
str="SELECT Таблица1.Поле1 " & _
"FROM Таблица1 " & str & ";"


ещё вот так, только зачем... если только как пример
Код: vbnet
1.
2.
3.
4.
SELECT Код, Поле1
FROM Таблица 
WHERE (IIf(IsLoaded("Форма1"),Поле1=[Формы]![Форма1]![кмбПоле1],1=1));
' 1=1 более понятный аналог True.

...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706133
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А че Вы не хотите решить(если правильно понял задачу) вапще без запроса
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706432
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий, sdku,

С функцией IsLoaded из Борея разобрался. Работает.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706433
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

За приемчик в условии 1=1 спасибо. Нужная штука, когда используеш SQL без VBA.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706437
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

sdkuА че Вы не хотите решить(если правильно понял задачу) вапще без запроса
Да, вы поняли правильно. Отвечать баюс, чтобы не отклонится от темы или не уйти в споры.
Но,раз спросили - отвечу.
Создаю веб-базу. Там с SQL проблем нет, а из VBA работает тока макросятина. За пример спасибо. Но, то что ВБА можно собрать любой запрос SQL быстро, легко и удобно - я знал. Стараюсь VBA не использовать.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706439
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уверен правильно ли будет задавать второй вопрос здесь. Но он по теме.
Можно ли без VBA прикрутить комбобокс из формы к параметру SQL
Код: sql
1.
2.
3.
4.
PARAMETERS Параметр Text ( 255 );
SELECT Таблица1.Код, Таблица1.Поле1
FROM Таблица1
WHERE (((Таблица1.Поле1)=[Параметр]));


т.е. чтоб Access не спрашивал юзера, а видел из открытой формы.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706799
К комбо такое же обращение, как и к полю. Но надо учесть, что в запрос будет передано значение связанного столбца, а он часто не тот, что вы видите.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706961
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через поле запроса мне понятно как. Но хочется сделать вроде такого:
Код: sql
1.
2.
3.
4.
PARAMETERS Параметр1=[Формы]![Форма1]![кмбПоле1] Text ( 255 );
SELECT Таблица1.Код, Таблица1.Поле1
FROM Таблица1
WHERE (((Таблица1.Поле1)=[Параметр1]));


Т.е. чтобы сразу в начале запроса объявить привязки (ссылки на объекты форм)
Text ( 255 ) для примера. Понятно, что тип данных поля и параметра должны быть "одинаковы" (ну или совместимы).
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39706973
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это нужно чтобы сократить код. Потому, как ссылки бывают достаточно длинные (особенно на объекты субформ) и когда их около 10 (еще и выражения с условиями), то код трудно читаем (короче каша).
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707129
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещо один вопрос всплыл. Не могу отфильтровать дату комбобоксом.
Код: sql
1.
2.
3.
SELECT Таблица1.Код, Таблица1.Дата
FROM Таблица1
WHERE (((Таблица1.Дата)=[Формы]![Form1]![кмбДата]));


В табл хранится полный формат дата и время, В комбо - уникальная дата (без времени)
Код: sql
1.
2.
SELECT DISTINCT DateSerial(Year([Дата]),Month([Дата]),Day([Дата])) AS Выражение1
FROM Таблица1;


Пробовал c #,с форматами -- никак. Извиняюсь за простоту вопроса.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707166
Roman_DoВ табл хранится полный формат дата и время, В комбо - уникальная дата (без времени)
Можно так:
Код: sql
1.
WHERE (Таблица1.Дата >= [Формы]![Form1]![кмбДата]) AND (Таблица1.Дата < [Формы]![Form1]![кмбДата]+1)


Roman_DoПотому, как ссылки бывают достаточно длинные (особенно на объекты субформ) и когда их около 10 (еще и выражения с условиями), то код трудно читаем (короче каша). Для этого на главной форме можно создать скрытые вычисляемые поля со ссылками на поля субформ (а, возможно, и выражения с условиями). В запросе ссылаться на эти поля. А "сразу в начале запроса объявить привязки (ссылки на объекты форм)" - не взлетит.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707224
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Код: sql
1.
WHERE (Таблица1.Дата >= [Формы]![Form1]![кмбДата]) AND (Таблица1.Дата < [Формы]![Form1]![кмбДата]+1)


не работает. Пишет: Выражение неверно введено или является слишком сложным для расчета ...
Но идею я понял. И вот так работает:
Код: sql
1.
2.
3.
SELECT Таблица1.Код, Таблица1.Дата
FROM Таблица1
WHERE (((Таблица1.Дата)>=[Формы]![Form1]![кмбДата] And (Таблица1.Дата)<DateAdd("d",1,[Формы]![Form1]![кмбДата])));


А ссылки понятно буду на скрытые поля делать. Спасибо.
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707448
Roman_Do
Код: sql
1.
WHERE (Таблица1.Дата >= [Формы]![Form1]![кмбДата]) AND (Таблица1.Дата < [Формы]![Form1]![кмбДата]+1)


не работает. Пишет: Выражение неверно введено или является слишком сложным для расчета А так:
Код: sql
1.
WHERE (Таблица1.Дата >= [Формы]![Form1]![кмбДата]) AND (Таблица1.Дата < ([Формы]![Form1]![кмбДата]+1))


Вообще-то для прибавления/вычитания дней достаточно арифметических действий. Использование функций (DateAdd и т.п.) - архитектурное излишество.
Разве что "В комбо - уникальная дата (без времени)" - это строка. Как вы ее получаете?
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707969
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

выше я прикрепил ПолеДата.rar - 19Kb
...
Рейтинг: 0 / 0
Использование параметров в запросах, формах и отчетах
    #39707986
Roman_Do
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
да, так тоже работает и согласен лучше. Спасибо.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Использование параметров в запросах, формах и отчетах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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