Содержание
Использование параметров в запросах, формах и отчетах
Если вам необходимо, чтобы запрос в Access при запуске каждый раз предлагал ввести параметры, создайте запрос с параметрами.
Вы также можете создать форму для ввода значений, позволяющих ограничить количество возвращаемых записей в запросах, формах и отчетах. В этой статье рассказывается, как с помощью форм сделать проще и удобнее работу с параметрами в запросах, формах и отчетах.
В этой статье
-
Обзор -
Использование параметров в запросах -
Указание типов данных для параметра -
Создание формы для ввода параметров -
Создание формы для ввода параметров для отчета
Обзор
С помощью условий в запросе с параметрами в Access можно ограничить набор записей, возвращаемых запросом. Функциональности диалоговых окон в запросе с параметрами может оказаться недостаточно. В этом случае можно создать форму, которая лучше подойдет для ввода параметров в вашей ситуации. В этой статье рассказывается, как настроить форму для ввода параметров запросов и отчетов. Здесь предполагается, что вы уже знакомы с принципами создания запросов и определения параметров в них. Прежде чем продолжать, ознакомьтесь как минимум с процедурой создания запроса на выборку.
В этой статье приведены примеры использования параметров в запросах. Она не содержит полной справочной информации о настройке условий.
-
Дополнительные сведения о создании запроса на выборку см. в статье Создание простого запроса на выборку.
-
Дополнительные сведения о запросах в целом см. в статье Знакомство с запросами.
-
Дополнительные сведения о создании параметров в запросах см. в статье Использование параметров для ввода данных при выполнении запроса.
-
Дополнительные сведения о настройке условий в запросах см. в статье Примеры условий запроса.
Использование параметров в запросах
Использовать в запросе параметр не сложнее, чем создать запрос на основе условий. Запрос можно настроить таким образом, чтобы предлагалось ввести определенное значение, такое как артикул товара, или несколько значений, например две даты. Для каждого параметра запрос выводит отдельное диалоговое окно, в котором предлагается ввести значение.
Добавление параметра в запрос
-
Создайте запрос на выборку и откройте его в конструкторе.
-
В строке Условия поля, для которого вы хотите применить параметр, введите в квадратных скобках текст, который должен отображаться в соответствующем диалоговом окне. Пример:
[Дата начала]При выполнении запроса с параметрами этот текст отобразится в диалоговом окне без квадратных скобок.
При запросе параметров также можно использовать выражения. Пример:
Between [Дата начала]
And
[Дата окончания]Примечание: Для каждого параметра выводится отдельное диалоговое окно. Во втором примере появляется два окна: одно для даты начала, второе — для даты окончания.
-
Повторите шаг 2 для каждого поля, для которого хотите добавить параметры.
С помощью описанных выше действий можно добавить параметр в запрос любого из следующих типов: выборка, добавление, создание таблицы и обновление, а также перекрестный запрос.
Кроме того, с помощью перечисленных ниже действий можно добавить параметр в запрос на объединение.
Откройте запрос на объединение в режиме SQL.
Добавьте предложение WHERE, содержащее каждое поле, для которого требуется ввести параметр.
Если предложение WHERE уже существует, убедитесь в том, что поля, для которых нужно ввести параметры, уже есть в этом предложении; в противном случае добавьте их.
Вместо условия в предложении WHERE используйте запрос параметра.
Указание типов данных для параметра
Вы также можете указать, данные какого типа разрешается вводить в качестве значения параметра. Тип данных можно настроить для любого параметра, но особенно важно сделать это для числовых и денежных данных, а также значений даты и времени. Когда для параметра указан тип данных, пользователи получают более осмысленные сообщения об ошибках в случае ввода значений неправильного типа (например, текста вместо денежных величин).
Примечание: Если параметр настроен для ввода текстовых данных, любое введенное значение будет распознаваться как текст, а сообщение об ошибке не будет выводиться.
Чтобы задать тип данных для параметра в запросе, выполните указанные ниже действия.
-
Когда запрос открыт в конструкторе, на вкладке Конструктор в группе Показать или скрыть нажмите кнопку Параметры.
-
В столбце Тип данных выберите тип данных для каждого параметра.
org/ListItem»>
В диалоговом окне Параметры запроса в столбце Параметр введите текст запроса на ввод значения для каждого параметра, для которого требуется указать тип данных. Убедитесь, что каждый из параметров соответствует запросу, который используется в строке Условие отбора в бланке запроса.
Создание формы для ввода параметров
Хотя в запросах с параметрами есть встроенные диалоговые окна для ввода значений, они предлагают лишь простейшие функции. В то же время форма для ввода параметров поддерживает перечисленные ниже дополнительные возможности.
-
Использование элементов управления для ввода данных определенных типов, например календарей для дат.
-
Сохранение введенных параметров для использования в других запросах.
-
Списки и поля со списками для ввода параметров, позволяющие выбирать значения из заранее заданных наборов.
-
Элементы управления для выполнения других функций, таких как открытие запроса или обновление данных в нем.
В приведенном ниже видео демонстрируется создание простой формы для ввода параметров запроса вместо стандартных диалоговых окон.
Создание формы для ввода параметров для отчета
Реализовать этот сценарий можно несколькими способами, но мы рассмотрим вариант, в котором активно используются макросы. Создать форму для сбора параметров отчета можно с помощью описанной ниже последовательности действий.
-
Шаг 1. Создайте форму для ввода значений -
Шаг 2. Создайте блок кода, проверяющий, загружена ли форма параметров -
Шаг 3. Создайте макрос, управляющий работой формы и отчета -
Шаг 4. Добавьте на форму кнопки «ОК» и «Отмена» -
Шаг 5. Используйте значения из формы в качестве условий запроса -
Шаг 6. Добавьте макрокоманды в события отчета -
Шаг 7. Проверьте форму в действии
Шаг 1. Создайте форму для ввода значений
-
На вкладке Создание в группе Формы нажмите кнопку Конструктор форм.
-
В режиме конструктора нажмите F4, чтобы открыть страницу свойств, и задайте свойства формы, как показано в таблице ниже.
Свойство
Значение
ПодписьВведите имя, которое будет отображаться в строке заголовка формы.
Режим по умолчаниюПростая форма
Режим формыДа
Режим таблицыНет
Режим сводной таблицыНет
Режим сводной диаграммыНет
Полосы прокруткиОтсутствуют
Область выделенияНет
Кнопки навигацииНет
Тип границыОкно диалога
-
Задайте для полей свойства, как показано в таблице ниже.
Свойство
Параметр
ИмяВведите имя, описывающее параметр, например ДатаНачала.
ФорматВыберите формат, который соответствует типу данных поля параметра. Например, для поля даты выберите вариант Полный формат даты.
-
Сохраните форму и задайте для нее название, например frmCriteria.
org/ListItem»>
Для каждого параметра, который будет вводиться с помощью формы, на вкладке Конструктор в группе Элементы управления нажмите кнопку Поле.
Шаг 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
-
Сохраните модуль под уникальным именем и закройте редактор Visual Basic.
Шаг 3. Создайте макрос, управляющий работой формы и отчета
С помощью функций в макроса Access можно определить все необходимые действия, которые необходимо предпринять в одном макросе. Мы создадим четыре вуа макроса — «Открыть диалоговое окно», «Закрыть диалоговое окно», «ОК» и «Отмена» — для управления задачами, необходимыми для выполнения этой процедуры. С помощью приведенного ниже снимка экрана создайте новый макрос со следующими макросами и макросами. В данном примере наша форма параметров называется frmCriteria. Настройте макрос в соответствие с именем созданной ранее формы. Кроме того, для просмотра всех макроса необходимо нажать кнопку «Показать все действия» на вкладке «Конструктор».
Сохраните и закройте макрос. Задайте для макроса имя, например Макрос диапазона дат.
Шаг 4. Добавьте на форму кнопки «ОК» и «Отмена»
-
Снова откройте форму параметров, которую создали в режиме конструктора.
-
На вкладке Конструктор в группе Элементы управления отмените выбор параметра Использовать мастера.
-
На вкладке Конструктор в группе Элементы управления щелкните Кнопка.
-
Расположите курсор под полями на форме и мышью создайте кнопку ОК.
-
Если окно свойств не отображается, откройте его, нажав клавишу F4.
-
Создайте кнопку Отмена и задайте для нее свойства, как показано в таблице ниже.
Свойство
ПараметрИмя
Отмена
Подпись
Отмена
Нажатие кнопки
Введите имя макроса, например Макрос диапазона данных. Отмена.
-
Сохраните и закройте форму.
org/ListItem»>
Задайте для кнопки ОК свойства согласно приведенной ниже таблице.
|
|
Имя
|
ОК
|
Подпись
|
ОК
|
По умолчанию
|
Да
|
Нажатие кнопки
|
Введите имя макроса, например Макрос диапазона дат. ОК.
|
Шаг 5. Используйте значения из формы в качестве условий запроса
-
Откройте запрос, который создали в режиме конструктора.
-
Введите условия для данных. Используйте объект Forms, имя формы и имя элемент управления:
-
Например, в базе данных Access (ACCDB или MDB) для формы frmCriteria можно задать следующее выражение, ссылающееся на элементы управления «Дата начала» и «Дата окончания» в запросе:
Between [Формы]![frmCriteria]![Дата начала] And [Формы]![frmCriteria]![Дата окончания]
-
Шаг 6.
Добавьте макрокоманды в события отчета
-
Откройте нужный отчет в режиме конструктора.
-
Если окно свойств не отображается, откройте его, нажав клавишу F4.
-
Убедитесь, что для свойства Источник записей в отчете используется запрос с параметрами, который мы создали.
-
Задайте два дополнительных свойства отчета, как показано в таблице ниже.
Свойство
ЗначениеОткрытие
Введите имя макроса, например Макрос диапазона дат. Открыть диалоговое окно.
Закрытие
Введите имя макроса, например Макрос диапазона дат.Закрыть диалоговое окно.
При открытии отчета Access будет выполнять команды, содержащиеся во вложенном макросе «Открыть диалоговое окно» объекта «Макрос диапазона дат». И аналогично: при закрытии отчета Access будет выполнять команды, содержащиеся во вложенном макросе «Закрыть диалоговое окно» объекта «Макрос диапазона дат».
-
Сохраните и закройте отчет.
Шаг 7. Проверьте форму в действии
Теперь, когда все объекты Access созданы, можно проверить, как они работают. Откройте отчет в режиме отчета или представлении для печати и обратите внимание, что перед показом отчета Access отображает форму ввода параметров в диалоговом режиме. Введите необходимые условия в созданные вами текстовые поля и нажмите кнопку ОК на форме. После этого Access скроет форму (вывод на экран — «Нет») и отобразит отчет, содержащий только те данные, которые соответствуют вашим условиям. Это произойдет благодаря тому, что запрос с параметрами, на котором основан отчет, использует значения в элементах управления на скрытой форме. Когда вы закроете отчет, Access также закроет форму параметров.
К началу страницы
Консоль запросов для управляемого приложения 1С 8.2 (Версия 6)
Обработка консольных запросов для управляемого приложения 1с 8.2 имеет интерфейс и функционал, аналогичный обработки для приложения 1С 8.1. Также существует возможность получать результаты временных таблиц и
пакетных запросов. Необходимое содержимое результата выполнения устанавливается в поле Получать результаты из 3-х возможных вариантов: Только временных таблиц, Только запросов, Запросов и временных таблиц.
Запросы могут выполняться как на тонком, так и на толстом клиенте, т.к. для их исполнения производится обращение к серверу.
Файл запросов
Файл запросов формата .sel для Консоли запросов 1С 8.2 сходен с соответствующим файлом для Консоли запросов 8.1; могут быть открыты существующие файлы запросов, созданные в 1С 8.1.
Кроме того, файлы, разработанные в Консоли управляемого режима, могут быть открыты в Консоли 8.1.
Конструктор запроса
Конструктор запроса запускается с помощью контекстного меню поля текста запроса. Он не доступен в тонком клиенте (пункт меню запуска Конструктора неактивно), но доступен в толстом клиенте.
Цветовое оформление
В управляемом приложении не поддерживается подсветка ключевых слов запроса — весь текст запроса черного цвета.
Параметры запроса
Параметры запроса устанавливаются на вкладке Параметры запроса в верхней левой области формы Консоли. При нажатии кнопки Заполнить запускается заполнение списка параметров запроса автоматически.
Можно устанавливать параметр типа Тип. Для чего необходимо установить тип параметра ОписаниеТипов и указать нужный тип. При задании составного типа, будет использовано только первое значение из списка типов.
Тип МоментВремени и Граница
Параметры этих типов могут быть настроены на внутренней вкладке Особые закладки Параметры запроса. Ввести их можно вручную с помощью кнопки Добавить,
а также перевести параметры в категорию «особые» с закладки Общие, щелкнув по флажку в колонке Особый тип — при этом будет выдано предупреждение,
при подтверждении которого параметр переведется на закладку Особые. (В режиме автозаполнения списка параметров все параметры будут переведены на закладку Общие).
Для настройки параметров данных типов будет открыта форма Редактирование параметра особого типа, содержащая поля редактирования имени и типа параметра ( доступны только типы МоментВремени и Граница;
в будушем планируется добавить тип ТаблицаЗначений). После выбора типа параметра из списка Тип параметра в форме возникают поля для установки его значения. Для установки значения параметра МоментВремени необходимо указать
документ, а для параметра Граница — ввести тип и значение границы (Включая или Исключая). Для значения границы также можно указать момент времени или дату (выбирается в радиокнонке Способ задания).
Завершить настройку параметров необходимо нажатием кнопки Завершить.
Поле результата запроса
Результат запроса отображается в поле табличного документа. Так как выровнять ширину таблицы результата автоматически достаточно сложно, используется визуальное выравнивание вручную с
помощью слайдера Ширина колонок: при передвижении его ползунка по горизонтали изменяется ширина всех колонок таблицы одновременно, что позволяет выровнять правую
границу таблицы с правым краем формы. Значение ширины колонок каждого запроса записывается в файл запросов (.sel).
Примечание. Если последнее редактирование файла запросов производилось в Консоли запросов 1С 8.1, то при его открытии в Консоли управляемого приложения ширина колонок результата
будет установлена в значение по умолчанию, т.к. в Консоли запросов 8.1 значение ширины колонок не сохраняется.
Вложение таблиц
Вложенные таблицы (поле результата запроса с типом РезультатЗапроса) подсвечиваются надписью <РЕЗУЛЬТАТ ЗАПРОСА> зеленого цвета в ячейке поля результата.
Вложенная таблица отображается в виде табличного документа и запускается двойным щелчком.
Пакетные запросы
Пронумерованный список результатов пакетных запросов отображается в поле результата списком один под другим. Ширина колонок и способ выгрузки одни и те же для всех запросов пакета.
Временные таблицы
Если установлен вывод временных таблиц, то при исполнении запроса в тексте производится поиск имен временных таблиц, и для каждой последовательно осуществляется выборка и выводится ее результат.
Если пакетный запрос содержит предложение УНИЧТОЖИТЬ, то для удаленных таблиц будет выведено сообщение об ошибке.
Выполнение выделенного текста
При выделении фрагмента текста в поле запроса и выборе пункта меню Выполнить выделенный фрагмент будет выполнен как самостоятельный запрос. Это дает возможность исполнять
отдельные пакетные и вложенные запросы. При этом необходимо следить, чтобы выделенный фрагмент текст представлял собой синтаксически корректный запрос.
Переподчинение в дереве запросов
Перенести запрос в другую ветвь дерева можно перетаскиванием его мышью в новую родительскую ветвь. При зацикливании подчинения будет выведено
предупреждающее сообщение и переподчинение не осуществляется.
Вывод для ссылок значений ГУИД вместо строковых представлений
Вывод значения результата полей ссылочного типа требует значительного времени для получения представлений ссылок. Для того чтобы сократить время вывода,
необходимо поставить флажок Для ссылок выводить ГУИД — в этом случае вместо строковых представлений ссылок будут выводиться их глобальные уникальные идентификаторы — ГУИД. В процессе получения значения ссылки ГУИД,
в отличие от получения строкового представления, не происходит обращения к информационной базе.
java — Как я могу вызвать setParameter в объекте запроса?
спросил
Изменено
4 года, 8 месяцев назад
Просмотрено
58 тысяч раз
Вероятно, это связано с моим непониманием и неполной информацией о JSP и JSTL. У меня есть веб-страница, на которой есть элементы ввода, такие как
Когда я пытаюсь сохранить форму, я проверяю, чтобы этот elementID и другие элементы соответствовали определенным ограничениям «числовые, меньше XXX». Я показываю сообщение об ошибке, если они этого не делают. Все параметры сохраняются и пользователю не нужно вводить их снова после исправления ошибки.
После сохранения, когда я перенаправляюсь на ту же страницу для редактируемого объекта, я ищу способ установить параметр, например request.setParameter("elementID",..)
Есть ли способ сделать это? Однако единственное, что я могу найти, это request.setAttribute
.
- Java
- JSP
- JSTL
3
HTTP-ответы не поддерживают передачу параметров.
JSP/Servelets позволяет вам использовать для этой цели request.setAttribute
или session.setAttribute
. Оба метода доступны при обработке страницы, на которую вы перенаправляетесь, так что, в принципе, вы все сделали правильно…
Кроме того, исходя из того, что вы описываете, вы можете захотеть проверить проверку на стороне клиента: не отправляйте форму, пока вы не проверите ее с помощью сценария на стороне клиента (javascript)
После того, как сервлет обработает форму (т. е. .. сохраняет пользовательский ввод в базе данных), сервлет перенаправляет (не перенаправляет, потому что это приведет к потере параметров запроса) запрос к тому же jsp, который содержит форму. Таким образом, нет необходимости устанавливать параметры, поскольку сервлет просто возвращает тот же объект запроса.
JSP, который содержит форму, должен иметь ввод, подобный этому: