SELECT Fiie1.Kpoмe того, AS Последствия, Fiie1.Последствия, [Последствия]*1.2 AS [Оценка материального ущерба] FROM Fiie1;
В режиме ANSI-92 SQL Microsoft Access рассчитывает значение Оценка материального ущерба, используя поле Последствия, и увеличивает каждое значение в этом поле на 20 %. В режиме ANSI-89 SQL Microsoft Access рассчитывает значение Оценка материального ущерба, используя псевдоним Последствия, и в результате увеличивает каждое значение поля Кроме того на 20 %. Очевидно, что это далеко не одно и то же. Как избежать затруднений, связанных с одновременным использование разных режимов запросов ANSI SQL в одной базе данных
Советуем избегать следующих действий, чтобы не столкнуться с затруднениями, к которым приводит одновременное использование запросов, созданных в разных режимах ANSI SQL:
• преобразования баз данных Microsoft Access, настроенных на режим запросов ANSI-92 SQL, из формата файлов 2002 в формат файлов 2002 или 97. Режим запросов ANSI-92 SQL поддерживается только в формате файлов 2002;
• смены режима запросов ANSI SQL для текущей базы данных после создания одного или нескольких запросов. Если необходимо это сделать, заново протестируйте существующие запросы и перепишите их;
• импорта запросов, созданных в одном режиме запросов ANSI SQL, в базу данных Microsoft Access, настроенную на использование другого режима, или экспорта запросов, созданных в одном режиме запросов ANSI SQL, в базу данных Microsoft Access, настроенную на использование другого режима;
• смены режима запросов ANSI SQL в существующем приложении. Это может нарушить выполнение приложения и потребовать его переработки. В Microsoft Access 2002 можно менять режим запросов ANSI SQL только программным образом, а любые запросы, созданные в режиме ANSI-92, оказываются скрытыми в окне базы данных. В Microsoft Access 2002 разработчик или пользователь может менять режим запросов ANSI SQL через интерфейс пользователя, а запросы ANSI-92 не являются скрытыми в окне базы данных. Поэтому необходимо предотвратить случайную или преднамеренную смену режима запросов ANSI SQL в приложении, защитив программу и запретив смену режима через интерфейс пользователя;
• использования неоднозначных псевдонимов и имен столбцов. Во избежание затруднений проверяйте, что псевдонимы и имена столбцов в инструкциях SQL являются уникальными.
Режим запросов ANSI SQL по умолчанию для новых баз данных Microsoft Access в форматах файлов 2002 и 2000 Режим ANSI-89 является настройкой по умолчанию для новой базы данных Microsoft Access в формате файлов 2002 и 2000. Невозможно установить режим запроса SQL ANSI-92 для новой базы данных в формате файла 2002, поскольку данный параметр отключен. Режим ANSI-89 является единственной доступной настройкой для базы данных в формате файла Microsoft Access 2002.
1. Главной задачей языка SQL является конструирование запросов пользователя к базе данных. Поэтому по большей части программирование на языке SQL – это формирование таких запросов.
2. Основные типы запросов с использованием SQL:
– запрос на выборку;
– запрос на создание таблицы – создает новую таблицу на основе данных, которые уже размещены в одной или нескольких таблицах;
– запрос на удаление – удаляет все записи из одной или нескольких таблиц на основании критериев, заданных пользователем;
– запрос на присоединение – добавляет целые записи или только указанные поля в одну или больше таблиц;
– запрос на обновление – изменяет данные в существующих таблицах на основании информации в окне конструктора.
3. Запросы могут создаваться как с помощью конструктора запросов, так и посредством мастера запросов. На наш взгляд, конструктор удобнее: во-первых, его операции оформляются более наглядно, во-вторых, из конструктора легко переходить к инструкциям в форме SQL и наоборот. Тем не менее в этой главе были показаны и примеры построения запроса с использованием мастера запросов.
4. Возможна и третья форма представления запроса – инструкции SQL. Между запросом, сформированным посредством конструктора, и инструкцией SQL существует жесткая и однозначная связь.
5. В этой главе были подробно рассмотрены конкретные примеры формирования запросов различных типов:
– запросы с использованием групповых операций;
– запросы с дополнительными условиями;
– запросы с параметрами;
– запросы на создание таблицы;
– запросы на добавление записей в таблицу;
– запросы на удаление записей;
– запросы на обновление записей;
– перекрестные запросы;
– сложные запросы, формируемые на основе перечисленных.
Поскольку в большинстве СУБД использование языка SQL фактически является правилом, наличие общепринятого языка позволяет стандартизировать работу приложений с источниками данных – различными СУБД. В Windows такую возможность обеспечивает Open Data Base Connectivity (ODBC) – стандартный набор функций, помогающих обрабатывать информацию на серверах баз данных SQL. Именно ODBC обеспечивает различным программам доступ к одному и тому же источнику сведений, например СУБД, не требуя инсталляции этой СУБД. Так, в частности, возможны доступ и работа с данными, сформированными в Access, без инсталляции программы. В этой главе показан пример реализации такой возможности.
Access 2002 предусматривает возможность использования дополнительного режима запроса с использованием SQL – режима ANSI SQL-92. Он предназначен для реализации определенных, достаточно специфических функций. При этом данный режим требует осторожного и аккуратного обращения – он несовместим, в частности, с режимом запроса ANSI SQL-89, использовавшимся в прежних версиях (он применим и в Access 2002), а в некоторых случаях приводит к существенно отличающимся результатам.
Глава 12 Программирование с помощью процедур VBA
Как уже говорилось, VBA – это объектно-ориентированный язык программирования. В свое время он был разработан специально для записи макросов в Microsoft Excel 5.0. Затем он начал использоваться и другими приложениями Microsoft Office, в частности Access. Сейчас VBA стал стандартным языком макропрограммирования, что очень полезно, так как облегчает взаимодействие различных приложений. VBA позволяет записать не только последовательные действия, выполняемые пользователем, но и все необходимые для языка программирования высокого уровня элементы, включая разнообразные средства организации ветвлений, циклов и ведения диалога с пользователем. Кроме того, VBA – это язык, управляемый событиями, поэтому с его помощью можно установить требуемую реакцию объекта на определенное событие.
Начнем эту главу с краткого обзора основных положений VBA.
Базовые термины
Вначале рассмотрим наиболее важные термины VBA (см. табл. 12.1).
Таблица 12.1
Объектно-ориентированный язык VBA базируется на трех основных компонентах: объектах, событиях и методах.
Объекты, как уже неоднократно говорилось, представляют собой элементы, входящие в состав приложений: таблицы, формы и их элементы управления, отчеты, запросы и т. д. События подробно рассматривались в предыдущей главе.
Последним компонентом являются методы. Для каждого объекта определен набор методов, которые могут быть к нему применены. Метод представляет собой действие, например Перейти на запись, Применить фильтр, Открыть форму. Такие действия указываются в установках свойств события объекта. Если пользователь не определил свойство события для объекта (не связал его с каким-либо действием), то объект отвечает на событие действием, заданным для его типа по умолчанию. Например, если текстовое окно получает фокус и не определено свойство события Получение фокуса, то встроенный метод может изменить цвет этого окна. Если вы установили свойство события объекта для макроса или процедуры обработки события, то Access сначала обрабатывает встроенный режим, а затем выполняет заданный вами макрос или процедуру. Например, вы щелкаете по командной кнопке, которая активизирует вторую страницу формы. Отображается щелчок по кнопке – кнопка на экране на мгновение «утапливается» (поведение по умолчанию), затем выполняется переход к следующей странице формы.
Окно модуля
Программа VBA создается, редактируется и отображается в окне модуля. Такое окно для класса, связанного с формой или отчетом, можно открыть либо из окна базы данных, когда объект закрыт, либо из окна объекта в режиме конструктора. Чтобы открыть окно модуля, надо выполнить одно из перечисленных действий:
1. В окне базы данных выберите имя формы или отчета на соответствующих вкладках Формы или Отчеты.
2. Выберите позицию Программа в меню Вид или щелкните по кнопке
(Программа) на панели инструментов.
На экране появится окно модуля VBA (рис. 12.1), разделенное на две области.
Рис. 12.1
Левая область – окно свойств. В верхнем поле этой области показано, свойства какого элемента программы здесь представлены. Если вы выходили в окно модуля непосредственно из окна базы данных, то будут представлены свойства формы или отчета в целом. Если вы попали в окно модуля из конструктора форм или отчетов, будут представлены свойства того элемента управления, который был активизирован перед переходом в окно модуля. Щелкнув по стрелке прокрутки справа от этого поля, вы легко можете перейти в любой элемент управления, и в левой области появятся его свойства. Свойства могут быть отсортированы в алфавитном порядке – вкладка Алфавитный – или разбиты по разделам – вкладка Категории: Данные, Событие, Другие. С таким способом отображения информации вы уже встречались при работе с конструкторами (см., например, рис. 10.2). Разделы, содержащие свойства, могут сворачиваться или раскрываться с помощью значков плюса (+) и минуса (-), расположенных слева от названия раздела.
Кроме того, в левой области вы можете соотнести какое-либо свойство с макросом или процедурой обработки событий. Но поскольку здесь отсутствует полоса прокрутки и нельзя использовать списки, имена макросов и процедур надо вносить с клавиатуры, что неудобно.