Создать параметрический запрос в access

Обмен данными между СберМегаМаркет (GOODS) и 1С

Данное расширение позволяет полностью интегрировать 1С:Управление торговлей 11 и 1С:Комплексная автоматизация 2 по API с SberMegaMarket.ru (GOODS.ru).
Расширение позволяет получать заказы с СберМегаМаркет автоматически, после чего их полностью отрабатывать, со всеми статусами в 1с, с формированием нескольких грузовых мест, печатать маркировочные листы, отгружать и закрывать их в СберМегаМаркет. В расширении присутствует настройка выгрузки в формате YML остатков и цен товаров, ссылку на которую указываем в личном кабинете СберМегаМаркет (обмен остатками и ценами проще говоря). Расширение полностью покрывает все необходимые бизнес-процессы обмена между системами.

Тестировалось на 1С:Предприятие 8.3 (8.3.15.1778) и Управление торговлей, редакция 11 (11.4.11.63).
UPD 12.10.2020: совместимо с Управление торговлей, редакция 11 (11.4.13.47);
UPD 17.05.2021: совместимо с Комплексная автоматизация 2 (2.4.13.170)

В связи с тем, что это двусторонний обмен, прошу учесть, что включить функционал интеграции по api, должен сотрудник поддержки goods (подробнее в конце статьи).

Просьба при скачивании учитывать версию, там присутствует информация, какие доработки присутствуют и для какой конфигурации. Т.е. в версии 2.2.5 нет доработок, которые идут в версии 5.5.1. Чтобы получить последнюю версию, необходимо скачивать/покупать именно последнюю.

14400 руб.

2.4. Microsoft Access 2007

2.4.5. Создание запросов и поиск информации в базе данных

В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.

В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).

Запросы на выборку используются для отбора требуемой пользователю информации, содержащейся в нескольких таблицах. Они создаются только для связанных таблиц. Queries могут основываться как на нескольких таблицах, так и существующих запросах. СУБД Access 2007 включает такие средства создания запросов, как Мастер и Конструктор.

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

На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.

Рассмотрим создание запроса на выборку с помощью Конструктора

Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).

Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.

В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).

Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.

Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.

При необходимости можно задать принцип сортировки (по возрастанию или по убыванию) результатов запроса. В строке «Вывод на экран» автоматически устанавливается флажок просмотра информации.

Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).

Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).

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

Закрыть окно запроса на выборку. На вопрос о сохранении изменения ответить — Да и ввести имя запроса, например «Параметрический query». Запустим Параметрический query, дважды щелкнув на нем. В открывшемся на экране окне диалога «Введите значение параметра» надо ввести фамилию студента, информацию об успеваемости которого необходимо получить (рис. 8).

Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).

В некоторых случаях для создания запросов можно использовать Мастер запросов. После создания запросов на выборку информации из БД Access 2007 можно приступать к формированию форм.

Обучение в интернет, . Обратная связь

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

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

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

В следующем примере создается процедура , которая возвращает список продуктов, цены которых не превышают заданного значения. На данном примере демонстрируется использование нескольких инструкций SELECT и нескольких параметров OUTPUT. Параметры OUTPUT позволяют внешней процедуре, пакету или нескольким инструкциям Transact-SQL осуществлять доступ к набору значений во время выполнения процедуры.

Процедура возвращает из базы данных Adventure Works список товаров (велосипедов) стоимостью менее $ 700. Параметры @cost и @compareprices инструкции OUTPUT используются в языке управления потоком для вывода информации в окне Сообщения.

Примечание

Переменная OUTPUT должна быть определена во время создания процедуры, а также в ходе использования переменной. Имена параметра и переменной не должны совпадать. При этом тип данных и положение параметра должны быть одинаковыми (если только не используется @listprice= переменная).

Частичный результирующий набор:

Где.

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

ВЫБРАТЬ
  Машины.Ссылка КАК Ссылка,
  Машины.ВерсияДанных КАК ВерсияДанных,
  Машины.ПометкаУдаления КАК ПометкаУдаления,
  Машины.Код КАК Код,
  Машины.Наименование КАК Наименование,
  Машины.Марка КАК Марка,
  Машины.ГосНомер КАК ГосНомер,
  Машины.ДатаОсаго КАК ДатаОсаго,
  Машины.Предопределенный КАК Предопределенный,
  Машины.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
{ВЫБРАТЬ
  Ссылка КАК Машина,
  Наименование,
  ДатаОсаго,
  Марка.*}
ИЗ
  Справочник.Машины КАК Машины
ГДЕ
  Машины.ПометкаУдаления = &ПометкаУдаления
{ГДЕ
  Машины.Марка.* КАК МаркаМашины,
  Машины.Наименование,
  Машины.ГосНомер,
  Машины.Предопределенный = &ТолькоПредопределенные}

Блок расширения “ГДЕ” может быть расположен после или вместо обычного блока “ГДЕ” в любом запросе, подзапросе, запросах объединения и заключается в фигурные скобки. Для присвоения отбору псевдонима используется конструкция “КАК”. Псевдоним нужно использовать чтобы отбор производился конструкцией расширения языка запросов, но не происходил автоматически по наименованию поля.

Если автозаполнение полей набора отключено, поля из этого блока попадают в перечень полей набора доступными только для отбора, использование дочерних полей зависит от наличия конструкции “.*”.

Если автозаполнение включено, и это поле включено в блок расширения “ВЫБРАТЬ” тогда настройки обоих блоков объединяются. Если не включено в “ВЫБРАТЬ” то поля попадают доступными для вывода, группировки, отбора и упорядочивания.

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

Параметры в блоке «ГДЕ» не обязательны для заполнения, поэтому эти параметры называют “необязательными” или “мягкими”.

Также в блоке “ГДЕ” вместо параметра может быть произвольное выражение с использованием конструкции ВЫБОР или параметров со страницы “Параметры” СКД. Правда в последнем случае вид сравнения необходимо указывать конкретно.

Нужно с осторожностью использовать вид сравнения МЕЖДУ поскольку:

ВЫБРАТЬ
  РеализацияТоваровУслуг.Ссылка КАК Ссылка
{ВЫБРАТЬ
  Ссылка.*}
ИЗ
  Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
{ГДЕ
  (РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода)}

Если параметры НачалоПериода и КонецПериода не будут заданы, то система получит документы за весь период.

Если параметры НачалоПериода и КонецПериода будут заданы, то система получит документы за указанный период.

Если какой-то один из параметров не будет задан, то система выдаст ошибку.

Один из вариантов решения это разбить МЕЖДУ на два условия чтобы система не выдавала ошибку в случае одного незаполненного параметра.

ВЫБРАТЬ
  РеализацияТоваровУслуг.Ссылка КАК Ссылка
{ВЫБРАТЬ
  Ссылка.*}
ИЗ
  Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
{ГДЕ
  (РеализацияТоваровУслуг.Дата >= &НачалоПериода),
  (РеализацияТоваровУслуг.Дата <= &КонецПериода)}

Это же замечание относится к любым выражением с использованием нескольких параметров.

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

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

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

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

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

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

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

Between And

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Расширенный перекрестный запрос

Продолжаем усложнять ситуацию. Еще труднее для понимания является информация о том, как создавать запросы в Access, если присутствует несколько таблиц с данными. Перекрестный запрос уже рассматривался выше, как один из вариантов работы с Мастером. Однако, и в режиме «Конструктора» можно создавать подобный запрос.

Для этого необходимо нажать «Конструктор запросов» — «Перекрестный».

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

Единственное, на что следует обратить внимание, – пункты «групповая операция» и «перекрестная таблица». Их нужно заполнять правильно, иначе процедура не будет выполнена корректно

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

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

Конечно, присутствуют и «подводные камни», которые могут помешать в работе. Например, при создании запроса на сортировку базы данных по значению столбцов система выдает ошибку. То есть доступна только сортировка по стандартным пунктам – «возрастание и убывание».

Вкладка Advanced («Дополнительно»)

Раздел «Редактирование»

Текст параметра Строка аргумента
Переход при нажатии клавиши ВВОД Переход при нажатии клавиши ВВОД
Поведение при переходе к полю Поведение при переходе к полю
Переход по клавише со стрелкой Переход по клавише со стрелкой
Остановка на первом и последнем поле Остановка на первом и последнем поле
Поиск и замена по умолчанию Поиск и замена по умолчанию
«Подтверждение», «Изменения записей» Подтверждение изменения записей
«Подтверждение», «Удаления документов» Подтверждение удаления документов
«Подтверждение», «Запросов на изменение» Подтверждение запросов на изменение
Направление по умолчанию Направление по умолчанию
Обычное выравнивание Обычное выравнивание
Перемещение курсора Перемещение курсора
Элемент IME в режиме таблицы Элемент IME в режиме таблицы
Использовать календарь Хиджра Использовать календарь Хиджра

Раздел «Вывод на экран»

Текст параметра Строка аргумента
Показывать следующее количество последних баз данных Размер списка использованных файлов
Строка состояния Строка состояния
Отображать анимацию Отображать анимацию
Отображать теги действий в таблицах Отображать теги действий в таблицах
Отображать теги действий в формах и отчетах Отображать теги действий в формах и отчетах
«Отображать в конструкторе макросов», «Столбец имен» Столбец имен
«Отображать в конструкторе макросов», «Столбец условий» Столбец условий

Раздел «Печать»

Текст параметра Строка аргумента
Левое поле Левое поле
Правое поле Правое поле
Верхнее поле Верхнее поле
Нижнее поле Нижнее поле

Раздел «Общий»

Текст параметра Строка аргумента
Звуковое сопровождение событий Звуковое сопровождение событий
«Формат года из четырех цифр», «Эта база данных» Формат года из четырех цифр
«Формат года из четырех цифр», «Все базы данных» Формат года из четырех цифр для всех баз данных

Раздел «Дополнительно»

Текст параметра Строка аргумента
Открывать последнюю использовавшуюся базу данных при запуске Access Открывать последнюю использовавшуюся базу данных при запуске Access
Режим открытия по умолчанию Режим открытия по умолчанию для баз данных
Блокировка по умолчанию Блокировка по умолчанию
Открывать базы данных с использованием блокировки на уровне записей Использование блокировки на уровне записей
Время ожидания OLE/DDE (с) Время ожидания OLE/DDE (с)
Период обновления (с) Период обновления (с)
Число повторов обновления Число повторов обновления
Период обновления ODBC (с) Период обновления ODBC (с)
Период повтора обновления (мс) Период повтора обновления (мс)
«Операции DDE», «Пропуск команд DDE» Пропуск команд DDE
«Операции DDE», «Обновление связей DDE» Обновление связей DDE
Аргументы командной строки Аргументы командной строки

Примечание

  • Если ваша база данных открывается в версии Access для языка, отличного от того, для которого вы ее создали, следует указать аргументы для методов GetOption и SetOption на английском языке.
  • Некоторые параметры доступны только в пределах базы данных Access или проекта Access (.adp).
  • Когда вы закончите отладку своего кода, разрабатывая приложение базы данных, надстройку, базу данных библиотеки или указанную базу данных, установите 2 в качестве значения параметра «Перехват ошибок» («Прерывать на необработанных ошибках»).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Создание простого запроса

Откроем базу данных STUD, как было рассмотрено в ЛР1. Создадим запрос, выводящий информацию о студентах, у которых имеются задолженности.

Для создания запроса активизируем окно базы данных (см. ЛР1). После этого щелкнем по корешку «Запрос» и кнопке «Создать». В появившемся диалоговом окне «Создание запроса» выберите кнопку «Конструктор». Access откроет диалоговое окно «Добавление таблицы», позволяющее выбрать базовые таблицы и запросы для создаваемого запроса. Выберите таблицы «Результаты» и «Cтуденты», нажимая кнопку «Добавить», после чего закройте это окно кнопкой «Закрыть».

Открывшееся окно конструктора запросов состоит из двух частей: верхняя содержит списки полей выбранных таблиц, а нижняя — бланк QBE для создания запроса. Каждый столбец бланка описывает одно поле, участвующее в запросе.

Включение поля в запрос производится перетаскиванием его из списка полей таблиц (расположенного в верхней части экрана) в нужный столбец бланка QBE при помощи мышки. Включение всех полей таблицы происходит перетаскиванием символа «*», находящегося вверху списка полей данной таблицы в верхней части экрана. Включите в запрос поля таблицы «Результаты»:

перетащив их в бланк QBE . Рассмотренным выше методом перетащите из таблицы “Студенты” поле Фамилия.

Запрос “Задолженность” будет иметь вид, как показано на рисунке. Установка связей между таблицами производится автоматически, используя структуру связей, созданную при генерации проекта БД. Можно задавать другие варианты связи таблиц и иные типы связей (внешнее объединение, «один-к-одному», «один-ко-многим» и т.д.). Изменение связей производится в верхней части окна выбором связанного поля в описании одной таблицы и транспортировкой его при нажатой кнопке мышки на описание соответствующего поля связанной таблицы. Тип связи можно изменить, активизировав ее щелчком мышки на линии связи.

Условие для отбора нужных нам полей производится включением этого условия для данного поля в строке QBE «Условие отбора». Несколько значений отбора вводятся в одну строку, разделенные логическими условиями AND или OR, либо вводятся в последующие ячейки строки «или». Установим для таблицы «Результаты» условие отбора студентов, у которых задолженности, для чего в столбец описания поля внесем строку «Задолженность» из таблицы «Результаты», и в строке «Условие отбора» введем: Да

Сбросим для этого поля флажок «Показать», запрещающий вывод данного поля в выборке (т.к его не обязательно выводить). Кроме стандартных операторов сравнения ‘=’, ‘ ‘, ‘ =’, Access поддерживает также BEETWEN, IN, LIKE. В запросе могут присутствовать т.н. вычисляемые поля — вычисленные значения над любыми полями таблицы. Access поддерживает большое число функций и операторов, применяемых при генерации вычисляемых полей. Чтобы просмотреть результат запроса необходимо на панели нажать кнопку:

Изменить заголовок можно также активизировав столбец с описанием поля; а затем выполнив команду «Свойства» меню «Вид», ввести в строку «Подпись поля» его название.

Строки итоговой таблицы желательно отсортировать по полю «Фамилия» таблицы «Студенты». Для этого в столбце с описанием данного поля в строке «Сортировка» выберем пункт «по возрастанию». При необходимости сортировки по нескольким полям Access сортирует данные в порядке их расположения в бланке QBE. После просмотра запроса видно, что необходимо ввести поле Имя из таблицы “Студенты”, т.к фамилии повторяютя и запрос не несет необходимой информации. Чтобы вставить поле, перетяните его в сетку QBE на место, где он должен находится и все остальные поля передвинуться на одну позицию в право. Запустить полученный запрос на выполнение можно также командой «Выполнить» меню «Запрос». Проверим полученные результаты на соответствие критериям отбора. Сохраним полученный запрос под именем «Задолженности». Запрос представляет собой таблицу:

Создадим запрос, в котором будет вычисляться дополнительное поле. Кафедра вычислительной техники решила своим работникам к новому году выплатить премию в размере 10% от зарплаты. Создадим запрос на базе таблицы “Преподаватели”, с полями Фамилия, Кафедра, Должность, Зарплата. Чтобы создать вычисляемое поле “Премия”, выводящее информацию о величине премии работнику, в новом столбце (следующим за заполненным), в строке “Поле” введем выражение Зарплата*0,1. Изменим заголовок поля, введя перед выражение его название. Ячейка будет содержать: «Премия: *0,1».

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector