Access. Сборник рецептов для профессионалов (+CD)
Шесть типов запросов Access, создаваемых при помощи бланков запросов (Query By Example, QBE), и три типа SQL-запросов предоставляют в ваше распоряжение невероятно мощные и универсальные средства поиска, сортировки, обобщения, модификации и форматирования данных, хранящихся в таблицах, для последующего вывода на формах или печати отчетов. На первый взгляд может показаться, что запросы Access сложны и запутанны, но стоит разобраться в этой теме, как внешний вид и функциональные возможности всех форм и отчетов окажутся под вашим полным контролем. К тому же запросы Access универсальны - научившись работать с ними, вы сможете использовать запросы там, где традиционно приходилось писать менее эффективный программный код.
В этой главе вы научитесь создавать запросы с параметрами, позволяющие управлять критериями отбора записей на стадии выполнения (а не на стадии конструирования, как обычно). Аналогичная методика будет использована для динамической фильтрации содержимого поля со списком в зависимости от текущего содержания другого поля. Мы рассмотрим возможности управления результатами перекрестных запросов; вы узнаете, как организовать адресную группировку при печати почтовых наклеек, чтобы вам не приходилось отправлять несколько писем по одному адресу. Далее будет показано, как при помощи запроса с обновлением изменить содержимое одной таблицы на основании данных другой таблицы. Вы освоите очень полезный прием, который может использоваться для фильтрации запросов по значениям переменных VBA (Visual Basic for Application). Если вам вдруг понадобится организовать произвольную выборку из источника данных, вы узнаете, как построить запрос для получения случайного набора записей. Затем будет рассмотрен пример использования функции Partition для анализа распределения данных во времени.
Кроме того, в этой главе рассматриваются и менее тривиальные случаи применения запросов. Вы узнаете, как создать объединение, основанное на интервальном критерии (в отличие от традиционных объединений с проверкой равенства), научитесь производить горизонтальное слияние данных из двух таблиц и использовать его для включения дополнительных строк в поле со списком. Далее речь пойдет о применении запросов с самообъединением для моделирования рекурсивных иерархических связей, о поиске с учетом регистра символов и применении языка определения данных (Data Definition Language, DDL) для создания и модификации структуры таблиц. Мы рассмотрим методику хранения запросов в таблицах, которая позволяет скрыть запросы от пользователей и в полной мере управлять тем, кто и когда может выполнить тот или иной запрос. Глава завершается описанием методики создания наборов записей на базе запросов с параметрами в программном коде VBA.
Во многих примерах этой главы используется база данных, в которой вы можете хранить информацию о своей фонотеке.
Определение критериев запроса на стадии выполнения
При конструировании запроса не всегда известно, по какому критерию будет производиться выборка во время работы программы. Вместо создания нескольких запросов с одинаковой структурой и незначительно отличающимися критериями было бы логичнее создать один запрос, который возвращает одни и те же поля, но для разных наборов записей.
Access позволяет создавать запросы с одним или несколькими параметрами, вводимыми на стадии выполнения. В настоящем решении приведен пример создания и выполнения запросов со стандартным механизмом ввода параметров.
Ниже описана процедура создания запроса с параметрами, использующего стандартный механизм ввода параметров.
1. Создайте запрос произвольного типа в режиме конструктора запросов.
source