Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Передать параметр в запрос access

Access передача параметра из формы в запрос

Доброго времени суток,

весь день не могу найти ошибку.

1. с запуском формы выполняется код,
2. первым делом в поле на форме заносится значение «1» — это будущий параметр в запрос,
3. далее запускаются около 15 запросов, в которых сей параметр учавствует,
4. по окончанию процедуры данные передаются в эксель, vba заносит в первоначальное поле (где было «1») значение «2» и вся процедура повторяется,
5. проблемма в том что иногда код работает нормально, а иногда прога ругается на сточки кода которые стартуют запросы с параметром из формы,
6. я пробывал способом ФОРМА!ИМЯФОРМЫ!ПОЛЕ и способом создания Public Function AAA () где AAA = ФОРМА!ИМЯФОРМЫ!ПОЛЕ,

может есть другие способы, или я что то не так делаю?

Передача параметра из формы в форму Access VBA
имеются таблицы Студент и Поселение в базе данных для общежития для них нужны формы. первая для.

Передача параметра из-под формы в запрос и выборка значения
Здравствуйте. Имеется запрос на выборку, который по некоторому текстовому значению находит.

Передача параметра в запрос Access’a
Так как в методе OpenRecordset нельзя использовать подзапросы, приходится пользоваться внутренними.

Передача параметра в запрос
Доброго времени всем. Подскажите, пожалуйста. VFP 9.0, есть форма на ней Грид, беру значение из.

Не факт, но возможно ругается из за того, что форма, в которой нужный параметр, в это время бывает — ЗАКРЫТА.
Ведь — ФОРМА!ИМЯФОРМЫ!ПОЛЕ, подразумевает ссылку на поле открытой формы.
Кроме того, порекомендовал бы вместо

писать как изначально заповедовали разработчики и классики Access в своих древних талмудах и манускриптах

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

Решение

Тоже частенько так делаю.
Создаю табличку — Главная или Настройки, с нужными полями, типа — Настройки по умолчанию и Создаю форму, для удобства ввода или изменения этих данных.
Форме запрещаю добавление, получается таблица с одной записью и несколькими полями.
Ссылаюсь на нужное поле так:

ltv_1953, VinniPuh, спасибо Вам большое за поддержку.
Ближе к полуночи нашлось решение:

Те запросы которые не выполнялись (они сложные, являлись последним звеном череды других запросов) содержали в себе запрос, в котором я применял таблицу параметров (не из формы, а просто таблицу в файле бд). Эта таблица не была соединена с таблицей запроса. Просто находилась «в воздухе» в поле для таблиц и уже в запросе из нее брались параметры. К примеру [A]>=[ТаблицасПараметрами].[ПолевНей].
Плюс к тому же,
задавались параметры из формы, как указано выше, да еще в две строки (ФОРМА!ИМЯФОРМЫ!ПОЛЕ or ФОРМА!ИМЯФОРМЫ!ПОЛЕ is null)

Разделив один сложный запрос на несколько простых — процедура снова заработала.

Казалось бы все просто, но изрядно заняло меня вчера.

Для всех ищущих — пожалуйста, не делайте запросы сложными, ни к чему хорошему это не приведет. не повторяйте моих ошибок!

СПАСИБО.

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

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

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

В этой статье

Обзор

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

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

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

Дополнительные сведения о запросах в целом см. в статье Знакомство с запросами.

Дополнительные сведения о создании параметров в запросах см. в статье Использование параметров для ввода данных при выполнении запроса.

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

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

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

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

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

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

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

При запросе параметров также можно использовать выражения. Пример:

Between [Дата начала] And [Дата окончания]

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

Повторите шаг 2 для каждого поля, для которого хотите добавить параметры.

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

Читать еще:  Регистрация office 2020

Кроме того, с помощью перечисленных ниже действий можно добавить параметр в запрос на объединение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В приведенном ниже видео демонстрируется создание простой формы для ввода параметров запроса вместо стандартных диалоговых окон.

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

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

Шаг 1. Создайте форму для ввода значений

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

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

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

Режим по умолчанию

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

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

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

Задайте для полей свойства, как показано в таблице ниже.

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

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

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

Шаг 2. Создайте блок кода, проверяющий, загружена ли форма параметров

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

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

Вставьте в редакторе следующий код:

Сохраните модуль под уникальным именем и закройте редактор Visual Basic.

Шаг 3. Создайте макрос, управляющий работой формы и отчета

С помощью функций вложенных макросов в макросах Access можно определить все необходимые действия, которые необходимо выполнить в одном макросе. Мы создадим четыре вложенных макроса: открыть диалоговое окно, закрыть диалоговое окно, ОК и отменить, чтобы управлять различными задачами, необходимыми для этой процедуры. С помощью снимка экрана ниже в качестве руководства создайте новый макрос со следующими вложенными макросами и действиями. Обратите внимание, что в этом примере наша форма параметра называется frmCriteria. Измените макрос таким образом, чтобы он соответствовал имени созданной ранее формы. Кроме того, вы должны убедиться, что на вкладке конструктор выбран пункт Показать все действия , чтобы просмотреть все макрокоманды.

Сохраните и закройте макрос. Задайте для макроса имя, например Макрос диапазона дат.

Шаг 4. Добавьте на форму кнопки «ОК» и «Отмена»

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

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

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

Расположите курсор под полями на форме и мышью создайте кнопку ОК.

Если окно свойств не отображается, откройте его, нажав клавишу F4.

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

Studhelper IT

Разработка приложений, переводы книг по программированию

Страницы

воскресенье, 31 мая 2015 г.

Запуск параметрического запроса Access из формы

Обычный способ разработки запроса с параметром в Access – создать параметры и установить их в условиях отбора с квадратными скобками. При запуске запроса последовательно появляются окна ввода, в которые пользователь должен ввести нужные значения. При этом нельзя вернуться к предыдущему окну и исправить ошибочно введенные данные. Пользователь должен вводить значения вручную, без выбора из списка, что тоже повышает вероятность ошибки.
Рассмотрим еще способ, при котором данные будут подставляться из формы.
Для примера возьмем базу данных абитуриентов. Создадим запрос, который будет отбирать абитуриентов по специальности и учебному заведению. Запускаться запрос будет из формы. На вкладке «Создание» в разделе «Формы» выберем пункт «Пустая форма».
Добавим на форму 2 поля со списком и две кнопки.
Поле со списком
На первом шаге выбираем способ получения значений:

То есть объект будет получать данные из другой таблицы или запроса.
Затем выбираем источник данных (таблицу специальностей):

Читать еще:  World office онлайн

Затем выберем нужные поля для помещения в поле:

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

Указываем подпись к этому элементу. Затем переименовываем его, например, ПолеСпециальность.
Точно так же создаем поле со списком учебных заведений, но включаем в него два поля – учебное заведение и город:

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

Коды можно не выводить на экран.
Поставим параметры в условие отбора. Для этого нажимаем правую кнопку мыши на ячейку «Условие отбора» в нужном поле и выбираем пункт контекстного меню «Построить». Затем выбираем значения как на рисунке:

Нажимаем Ок.
Подставленное значение:
[Формы]![Форма для отбора по специальности и Уз]![ПолеСпециальность]
Затем так же создаем параметр в поле кода учебного заведения, но выбираем другое поле со списком.
Сохраняем запрос («ПарамЗапрос»).
Возвращаемся в форму и добавляем кнопку «Выполнить запрос».
На первом шаге Мастера запросов выбираем действие: категория «Разное», действие «Выполнить запрос». Затем из списка запросов выбираем наш «ПарамЗапрос». Затем выбираем подпись или картинку для кнопки. Сохраняем кнопку.
Добавляем вторую кнопку – для выхода. С помощью мастера указываем категорию – «Работа с формой», действие «Закрыть форму».
Сохраняем форму.
После запуска формы выбираем нужные поля и запускаем запрос:

Запросы с параметрами

Запрос в Access является объектом, который сохраняется в файле базы данных и может многократно повторяться. Все запросы, которые мы демонстрировали до сих пор, содержали конкретные значения дат, названий, имен и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно открыть в режиме Конструктора, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно Введите значение параметра (Enter Parameter Value), в котором пользователь может ввести конкретное значение и затем получить нужный результат.

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

  1. Откройте данный запрос в режиме Конструктора.
  2. Чтобы определить параметр запроса, введите в строку Условие отбора (Criteria) для столбца «Название» (CompanyName) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например [Поставщик:]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.
  3. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый (Text). Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду Параметры (Parameters) или выполните команду меню Запрос, Параметры (Query, Parameters). Появляется диалоговое окно Параметры запроса (Query Parameters), представленное на рис. 4.31.

Рис. 4.31. Диалоговое окно Параметры запроса

  1. В столбец Параметр (Parameter) нужно ввести название параметра точно так, как он определен в бланке запроса (легче всего это сделать путем копирования через буфер обмена), только можно не вводить квадратные скобки. В столбце Тип данных (Data Type) выберите из раскрывающегося списка необходимый тип данных. Нажмите кнопку ОК.
  2. Нажмите кнопку Запуск (Run) на панели инструментов, чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра (Input Parameter Value) (рис. 4.32), в которое нужно ввести значение, например Tokyo Traders. Результат выполнения запроса представлен на рис. 4.33. В него попадают только те товары, которые поставляются данным поставщиком.

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

Рис. 4.32. Диалоговое окно Введите значение параметра

Рис. 4.33. Результат выполнения запроса с параметром

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

Передать параметр в запрос access

ЗАМЕЧАНИЕ После выбора для поля Количество (Quantity) групповой операции Sum конструктор автоматически присвоит этому полю имя Sum-Количество (SumOfQuantity). На первый взгляд, для придания имени поля читабельного вида достаточно убрать из его названия первые четыре символа (шесть — для английского варианта). Однако если это сделать, то при попытке выполнить запрос Microsoft Access в этой ситуации выдаст сообщение об ошибке:

нельзя указывать подчиненный запрос
(Subqueries cannot be used in the expression Sum(CCur([Order Details].UnitPrice*[Quantity]*(1 -[Discount])/10O)*10O)).
Это связано с тем, что при вычислении поля Стоимость (Cost) используется поле Количество (Quantity) таблицы Заказано (Order Detail). Этой ситуации можно избежать несколькими способами. Один из них заключается в задании нового имени — Кол-во (Qty).

На следующем шаге необходимо сконструировать форму, которая будет подчиненной и основанной на только что созданном запросе. Перейдите на вкладку Формы (Forms) и откройте новую форму в режиме конструктора. Задайте для нее следующие свойства:

  • Режим по умолчанию (Default View) — Таблица (Datasheet).
  • Режим формы (Allow Form View) — Нет (No).
  • Режим таблицы (Allow Datasheet View) — Да (Yes).
  • Режим сводной таблицы (Allow PivotTable View) — Heт (No).
  • Режим сводной диаграммы (Allow PivotChart View) — Heт (No).
  • Источник записей (Record Source) — Продажи товаров за период (запрос).
Читать еще:  Microsoft office что это такое

Нажмите на панели инструментов кнопку Список полей( Field List). Из появившегося окна перетащите на форму все содержащиеся в нем поля. Закройте готовую форму, сохранив ее под именем Продажи товаров за период (подчиненная).

На этом все подготовительные действия закончены. Теперь можно приступить к созданию нужной нам формы. Откройте новую форму в режиме конструктора и задайте для нее следующие свойства:

  • Подпись (Caption) — Продажи товаров за период;
  • Режим по умолчанию (Default View) — Простая форма (Single Form);
  • Режим формы (Allow Form View) — Да (Yes);
  • Режим таблицы (Allow Datasheet View) — Heт (No);
  • Режим сводной таблицы (Allow PivotTable View) — Heт (No);
  • Режим сводной диаграммы (Allow PivotChart View) — Heт (No);
  • Полосы прокрутки (Scroll Bars) — Отсутствуют (Neither);
  • Область выделения (Record Selectors) — Heт (No);
  • Кнопки перехода (Navigation Button) — Heт (No);
  • Разделительные линии (Dividing Lines) — Heт (No);
  • Автоматический размер (Auto Resize) — Heт (No).

Остальные свойства формы можно оставить без изменений.

ЗАМЕЧАНИЕ Значения всех перечисленных свойств можно задать по своему усмотрению. Я просто привел те значения свойств, которые обычно использую при конструировании форм.

Поместите в форму два элемента управления поле (Text Box) и выровняйте их таким образом, чтобы они располагались друг за другом вдоль горизонтальной линии. Введите текст присоединенной надписи (подписи) первого элемента — Период с, а для второго элемента — по. Для того чтобы размер надписей соответствовал размеру содержащегося в них текста, поочередно выберите из их контекстного меню пункт Размер|по размеру , данных (Size|To Fit).

Для первого поля задайте имя Дата0 и укажите для свойства Значение по умолчанию (Default Value) следующее:
=Format(«01.01.» & Str(Year(Date()));»Средний формат даты»)

Для второго поля введите имя Дата1 и значение свойства Значение по умолчанию (Default Value):
=Date().

Для обоих полей задайте следующие свойства:

  • Формат поля (Format) — Средний формат даты (Medium Date);
  • Выравнивание текста (Text Align) — По центру (Center);
  • После обновления (After Update) — в тело процедуры обработки этого события введите оператор —
    Forms![Продажи товаров за период (форма)]. Form![Продажи товаров за период (подчиненная)].Requery.

Последнее, что еще можно сделать, — выбрать для полей и их подписей способ оформления (обычное оформление, приподнятое и т.д.).

Далее выберите на панели элементов элемент Подчиненная форма/отчет (Subform/ Subreport) и расположите его на макете формы. Как уже упоминалось выше, это приведет к запуску соответствующего мастера. В первом окне мастера выберите ранее созданную форму Продажи товаров за период (подчиненная) в качестве основы для создаваемой подчиненной формы. В остальном поведение мастера практически ничем не отличается от описанного выше. Единственным исключением является то, что не будет выдано на экран окно мастера, предлагающего указать поля для связи между главной и подчиненной формами (см. рис. 5.43 и 5.44). Это окно отображается на экране только тогда, когда для главной формы указан источник данных.

После окончания работы мастера удалите присоединенную к подчиненной форме надпись и подкорректируйте размер и положение всех элементов управления так, чтобы это выглядело примерно как на рис. 5.56. Сохраните полученную форму под именем Продажи товаров за период (форма). В режиме формы она представлена на рис. 5.57.

  1. Функция Date() возвращает текущую системную дату, функция Year(Date()) возвращает значение текущего года, функция Str(Year(Date())) превращает это значение в строку, а выражение «01.01.» & Str(Year(Date())) возвращает строку, содержащую дату начала текущего года. Последнее действие совершается при помощи функции Format — полученное строковое значение преобразуется в средний формат даты. Если функцию Format не использовать, дата будет отображаться в том виде, в каком мы ее сконструировали, независимо от значения свойства Формат поля (Format). Например, если текущая системная дата лежит в пределах 1998 года, то без использования функции Format значение поля Дата0 будет отображаться в виде: 01.01. 1998 (Обратите внимание на пробел между последней точкой и значением текущего года).
  2. При открытии формы Продажи товаров за период (форма) в режиме просмотра в поля Дата0 и Дата1 подставляются значения первого дня текущего года и текущей системной даты соответственно. Эти же значения автоматически используются в качестве параметров запроса, лежащего в основе подчиненной формы. При изменении значения даты одного из полей инициируется событие После обновления (After Update) и запускается соответствующая процедура обработки. Она содержит всего один оператор, который выполняет обновление (requery) подчиненной формы. При обновлении формы происходит, кроме всего прочего, и повторное выполнение лежащего в ее основе запроса. В качестве значений параметров используются обновленные значения полей формы. Следует заметить, что событие После обновления (After Update) происходит после того, как значение элемента управления было модифицировано и элемент потерял фокус ввода (однако форма при этом осталась активной).
  3. Единственный оператор процедуры обработки события После обновления (After Update) иллюстрирует синтаксис обращения к методам и свойствам подчиненной формы. Полный синтаксис обращения к подчиненной форме таков:

Forms![Имя_главной_формы].Form![Имя_подчиненной_формы]

  • Microsoft Access позволяет в режиме конструктора главной формы просматривать и модифицировать свойства подчиненной формы и ее элементов. Для этого необходимо сначала выделить элемент управления Подчиненная форма/отчет (Subform/Subreport), щелкнув на ограничивающей его рамке. После этого можно выделить либо форму, являющуюся источником для подчиненной формы, либо любой из ее элементов и работать с ними как обычно.
  • В этом примере не использовалась форма-календарь, созданная нами в предыдущем примере. Это было сделано с целью упростить изложение и избежать загромождения примера несущественными в данном случае подробностями. Однако ничто не мешает привязать к полям Дата0 и Дата1 календарь, облегчив тем самым ввод и модификацию значений типа дата.
  • Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector
    ×
    ×