Использование параметров в запросах и отчетах

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Если необходимо задавать для ввода каждый раз при запуске запроса, можно создать запрос с параметрами.

Для сбора значений параметров можно создать форму. Это позволяет:

  • использовать элементы управления, предназначенные для определенных типов данных;

  • включить сохранение значений параметров;

  • создать поля со списком (чтобы можно было выбирать значения из списка, а не вводить их вручную);

  • использовать другие доступные в формах элементы управления.

В данной статье приведены общие сведения о параметрах, их использовании в запросах, а также использовании форм для расширения возможностей работы с параметрами.

В этой статье

Общие сведения

Использование параметров в запросах

Указание типов данных для параметра

Создание формы для сбора параметров

Общие сведения

Условия в запросах Access можно использовать для ограничения набора записей, возвращаемых запросом. Рассмотрим следующую ситуацию.

Предположим, что имеется запрос с именем «Последний заказ», который возвращает имена и адреса клиентов, а также даты отправки им последнего заказа. Недавно на склад и в каталог было добавлено несколько новых продуктов. При каждой доставке заказа к нему прилагается копия текущего каталога. Предполагается, что новые продукты будут очень популярны, и необходимо обеспечить всех клиентов сведениями о них. Требуется разослать по почте новый каталог всем клиентам, которые не получили его вместе с доставленным заказом.

Таким образом, нужно создать список рассылки, содержащий имена и адреса клиентов, последний заказ которым был доставлен раньше, чем появился новый каталог. Для этого можно применить условие к полю даты доставки из запроса «Последний заказ». Условие указывает, что дата в поле даты доставки должна быть более ранней, чем дата начала распространения нового каталога (например, 31.03.2006). При запуске запроса будет получен список рассылки, куда войдут только те клиенты, которые не получили новый каталог.

Но что делать, если подобная ситуация повторится? Придется отредактировать запрос, изменив значение, определенное в условии. Однако было бы удобнее, если бы запрос предлагал ввести значение даты, а затем использовал это значение для выбора клиентов, которые войдут в список рассылки. Это можно сделать с помощью условия особого типа, называемого параметром.

Иногда возможностей диалоговых окон, выводимых на экран запросом с параметрами, бывает недостаточно. В этом случае можно создать форму, предоставляющую более широкие возможности для сбора параметров. В этой статье рассказано о том, как ее создать.

В статье предполагается, что пользователь умеет создавать запросы. Прежде чем продолжить, следует по меньшей мере ознакомиться с процедурой создания запроса на выборку.

Дополнительные сведения о создании запроса на выборку читайте в статье Выбор данных с помощью запроса. Дополнительные сведения о запросах в целом, читайте в статье Знакомство с запросами.

В этой статье приведены примеры использования параметров в запросах. Она не содержит подробных сведений о задании условий.

Дополнительные сведения об указании условий см. в статье Примеры критериев запроса.

К началу страницы

Использование параметров в запросах

Использовать запрос с параметрами так же просто, как и запрос с условиями. Можно создать запрос, который будет предлагать ввести один параметр, например серийный номер, или несколько, например две даты. Для каждого параметра запрос будет выводить на экран отдельное диалоговое окно с предложением ввести его значение.

Добавление параметра запроса

  1. Создайте запрос на выборку и откройте его в TE000032845.

  2. В строке Критерии поля, для которого нужно применить параметр, введите текст, который должен отображаться в диалоговом окне, заключив его в квадратные скобки, например:

    [Начальная дата]

    При запуске запроса с параметрами текст отображается в диалоговом окне без скобок.

    Можно также использовать выражение с предложениями ввести параметр, например:

    Между [Start Date] И [End Date]

    Примечание : Для каждого предложения ввести параметр появится отдельное диалоговое окно. Во втором примере должны появиться два окна: для начальной и конечной дат.

  3. Повторите действие 2 для каждого поля, к которому необходимо добавить параметры.

Можно использовать предыдущие действия для добавления параметра к запросам любого из следующих типов:

  • на выборку;

  • перекрестный;

  • На добавление

  • На создание таблицы

  • Обновление

Можно также добавить параметр в запрос на объединение.

  1. Откройте запрос на объединение в режиме SQL.

  2. Добавьте к нему предложение WHERE, содержащее все поля, для которых необходимо отобразить предложение ввести параметр.

    Если предложение WHERE уже существует, проверьте, присутствуют ли в нем все поля, для которых следует запросить параметры. Если нет, добавьте недостающие поля.

  3. Вместо включения условий в предложение WHERE вставьте предложение ввести параметр.

Сопоставление части значения поля со строкой параметра

Иногда необходимо немного изменить способ применения параметра запросом. Например, может потребоваться, чтобы запрос получал текстовую строку и сравнивал ее с частью поля. В этом случае пригодится ключевое слово Like в сочетании с подстановочными знаками. Предположим, например, что необходимо, чтобы запрос предлагал ввести страну происхождения и при этом сравнение выполнялось, когда значение соответствующего поля содержит строку параметра. Для этого выполните указанные ниже действия.

  1. Создайте запрос на выборку и откройте его в режиме конструктора.

  2. Введите в строке условия поля, по которому необходимо применить параметр Like "*" & [, введите текст, который вы хотите использовать в качестве запрос, а затем введите ] & "*".

    При выполнении запроса с параметрами на экран будет выведено диалоговое окно, сообщение в котором будет отображаться без квадратных скобок, ключевого слова Like и подстановочных знаков.

  3. Когда запрос получит значение параметра, он сравнит его со значениями, которые содержат строку параметра. Например, для строки параметра си будут найдены строки, в которых поле параметра имеет значение «Сингапур» и «Россия».

Также можно использовать ключевое слово Like и подстановочные знаки для указания того, что параметр должен совпадать с началом или окончанием значения поля. Чтобы определить совпадение с началом значения поля, не вводите кавычки, подстановочный знак и амперсанд (&), которые предшествуют открывающей квадратной скобке. Чтобы определить совпадение с окончанием поля, не вводите кавычки, подстановочный знак и амперсанд (&), которые стоят после закрывающей квадратной скобки.

Сопоставление на основе неравных значений

Вы можете собрать параметра, но вместо запрос возвращает строки с соответствующим значением, требуется запрос возвращает строки, для которых вычисляется некоторые другие сравнения true. Например может потребоваться допустимых год, а затем вернитесь строк, где значения года больше, чем строка параметров. Чтобы сделать это, введите оператор сравнения слева от первого квадратная скобка, закрывающего запрос параметра, например,> [год:].

К началу страницы

Указание типов данных для параметров

Можно также указать, данные какого типа разрешается вводить в качестве значения параметра. Тип данных можно указать для любого параметра, но особенно важно сделать это для числовых и денежных данных, а также даты и времени. Когда для параметра указан тип данных, пользователи получают более понятные сообщения об ошибках в случае ввода данных в неправильном формате, например при вводе текста, когда ожидается ввод денежных данных.

Примечание : Если параметр настроен таким образом, чтобы принимать текстовые данные, любое введенное значение воспринимается как текст и сообщение об ошибке не отображается.

Чтобы указать тип данных для параметров запроса, следуйте приведенным ниже инструкциям.

  1. Когда запрос открыт в режиме конструктора, на вкладке Конструктор в группе Показать или скрыть щелкните элемент Параметры .

  2. В диалоговом окне Параметры запроса в столбце Параметр введите текст приглашения на ввод значения для каждого параметра, для которого требуется указать тип данных. Убедитесь, что каждый параметр соответствует приглашению, которое используется в строке Условия в бланке запроса.

  3. В столбце Тип данных выберите тип данных для каждого параметра.

К началу страницы

Создание формы для сбора параметров

Хотя в запросах с параметрами и предусмотрено встроенное диалоговое окно для сбора параметров, оно обеспечивает лишь базовый набор функций. С помощью формы можно получить дополнительные возможности, указанные ниже.

  • Использование элементов управления, предназначенных для определенных типов данных, например календаря для ввода дат.

  • Сохранение собираемых параметров для использования в нескольких запросах.

  • Использование для сбора параметров списков или полей со списком, что позволяет выбирать нужное значение из списка доступных значений.

  • Предоставление элементов управления для других функций, например открытия или обновления запроса

Чтобы создать форму для сбора параметров, выполните указанные ниже действия

Этап 1. Создание формы, принимающей входные параметры

Этап 2. Создание модуля для проверки загрузки формы параметров

Этап 3. Создание макросов для контроля над формой

Этап 4. Добавление кнопок ОК и Отмена в форму

Этап 5. Использование данных формы в качестве критерия запроса

Этап 1. Создание формы, принимающей входные параметры

  1. На вкладке Создать в группе Формы нажмите кнопку Конструктор формы.

  2. В режиме конструктора нажмите клавишу F4, чтобы открыть окно свойств, и укажите свойства формы в соответствии с приведенной ниже таблицей.

Свойство

Значение

Заголовок

Введите имя, которое должно отображаться в заголовке формы.

Представление по умолчанию

Одиночная форма

Режим формы

Да

Режим таблицы

Нет

Режим сводной таблицы

Нет

Режим сводной диаграммы

Нет

Полосы прокрутки

Отсутствуют

Область выделения

Нет

Кнопки навигации

Нет

Тип границы

Диалог

  1. Для каждого параметра, который должна принимать форма, нажмите кнопку Надпись в группе Элементы управления на вкладке Конструктор.

  2. Задайте свойства вставленных полей в соответствии со следующей таблицей.

Свойство

Значение

Имя

Введите имя, описывающее параметр, например ДатаНачала.

Формат

Выберите формат, соответствующий типу данных поля параметра. Например, выберите для поля даты полный формат даты.

  1. Сохраните форму и присвойте ей имя, например Диапазон дат.

Этап 2. Создание модуля для проверки загрузки формы параметров

  1. На вкладке Создание в группе другое пункт модуль. Если эта команда недоступна, щелкните стрелку под макрос или Модуль класса кнопки и нажмите кнопку модуля.

    В редакторе Visual Basic откроется новый модуль.

  2. Введите или скопируйте в редактор Visual Basic следующий код:

    Function IsLoaded(ByVal strFormName As String) As Boolean
    Dim oAccessObject As AccessObject
    Set oAccessObject = CurrentProject.AllForms(strFormName)
    If oAccessObject.IsLoaded Then
    If oAccessObject.CurrentView <> acCurViewDesign Then
    IsLoaded = True
    End If
    End If
    End Function
  3. Сохраните модуль и закройте редактор Visual Basic.

Этап 3. Создание макросов для контроля над формой

  1. На вкладке Создание в группе Другие выберите Макрос. Если эта команда недоступна, нажмите стрелку под кнопкой Модуль или Модуль класса, а затем нажмите кнопку Макрос.

  2. На вкладке Конструктор в группе Показать или скрыть щелкните пункт Показать все действия.

  3. На вкладке " Конструктор " в группе Показать или скрыть щелкните Имена макросов для отображения столбца Имя макроса.

  4. Введите имя макроса, например Открытие диалогового окна, в столбце Имя макроса.

  5. Щелкните ячейку в столбце Действие рядом с именем нового макроса, нажмите стрелку раскрытия списка и выберите пункт ОткрытьФорму.

  6. В сетке Аргументы макрокоманды (находится под бланке макроса) задайте аргументы макрокоманды, как показано в таблице ниже.

Аргумент

Значение

Имя формы

Введите имя, присвоенное форму параметра отчета.

Вид

Форма

Режим данных

Изменение

Режим окна

Диалог

  1. Для добавления второй макрокоманды в следующей ячейке Действие выберите пункт ОтменитьСобытие. Эта макрокоманда будет использоваться для отмены предварительного просмотра или печати отчета при нажатии кнопки Отмена формы.

  2. Если столбец Условие не отображается, нажмите кнопку Условия в группе Отображение на вкладке Конструктор.

  3. В столбце условие введите не IsLoaded, за которым следует открывающую круглую скобку и кавычка, за которым следует имя предоставил форму параметра отчета и затем следуют кавычки и закрывающую скобку. Например, если форма называется сбора параметра, введите не IsLoaded("Параметра сбора").

  4. В следующую пустую строку сетки конструктора макроса введите имя нового макроса, например Закрытие диалогового окна.

  5. В смежные ячейки Действие щелкните стрелку раскрывающегося списка и нажмите кнопку Закрыть. Это действие будет использоваться по запросу, чтобы закрыть форму параметра. Задайте аргументы макрокоманды, как показано в таблице ниже.

Аргумент

Значение

Тип объекта

Форма

Имя объекта

Введите имя, присвоенное форму параметра отчета.

Сохранение

Нет

  1. В следующую пустую строку сетки конструктора макроса введите имя нового макроса, например ОК. В смежной ячейке Действие нажмите стрелку раскрытия списка и выберите пункт ЗадатьЗначение. Эта макрокоманда будет использоваться для скрытия формы параметров отчета после того, как пользователь нажмет кнопку . Задайте аргументы макрокоманды в соответствии со следующей таблицей.

Аргумент

Значение

Элемент

[Видимый]

Выражение

Нет

  1. В следующую пустую строку сетки конструктора макроса введите имя нового макроса, например Отмена. В смежной ячейке Действие нажмите стрелку раскрытия списка и выберите пункт Закрыть. Эта макрокоманда будет использоваться для закрытия формы параметров отчета после того, как пользователь нажмет кнопку Отмена. Задайте аргументы макрокоманды в соответствии со следующей таблицей.

Аргумент

Значение

Тип объекта

Форма

Имя объекта

Введите имя, присвоенное форму параметра отчета.

Сохранение

Нет

  1. Сохраните и закройте группу макросов. Присвойте имя, например, Макрос диапазон датгруппу макросов.

Этап 4. Добавление кнопок ОК и Отмена в форму

  1. Снова откройте форму диапазон дат в режиме конструктора.

  2. Убедитесь, что кнопка Использовать мастера в группе Элементы управления на вкладке Конструктор не выделена.

  3. На вкладке Конструктор в группе Элементы управления щелкните элемент Кнопка.

  4. Поместите указатель мыши под полями формы и перетащите его для создания кнопки ОК.

  5. Если окно свойств не открыто, откройте его нажатием клавиши F4.

  6. Задайте свойства кнопки ОК в соответствии с приведенной ниже таблицей.

Свойство

Значение

Имя

ОК

Подпись

ОК

По умолчанию

Да

OnClick

Введите имя макроса, например, Дата Range.OK.

  1. Создайте кнопку Отмена и настройте ее свойства в соответствии с приведенной ниже таблицей.

Свойство

Значение

Имя

Отмена

Подпись

Отмена

OnClick

Введите имя макроса, например, Дата Range.Cancel.

  1. Сохраните и закройте форму.

Этап 5. Использование данных формы в качестве критерия запроса

  1. Откройте запрос в режиме конструктора.

  2. Введите условие для данных. Использование форм объект, имя формы и имя элемент управления:

    • Например, в базе данных Access (.accdb или .mdb) в форме с именем «Диапазон данных» для ссылки на элементы управления «Начальная дата» и «Конечная дата» необходимо использовать в запросе следующее выражение:

      Между [формы] ! [Диапазон дат]! [StartDate] и [формы]! [Диапазон дат]! [EndDate]

К началу страницы

Примечание : Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

Были ли сведения полезными?

Что мы могли бы улучшить?

Что мы могли бы улучшить?

Чтобы защитить вашу конфиденциальность, не указывайте контактные данные в своем отзыве. Обзор наших политика конфиденциальности.

Спасибо за ваш отзыв!