Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
база данных.docx
Скачиваний:
168
Добавлен:
24.03.2015
Размер:
5.83 Mб
Скачать

т

Макрос! : макрос

EGO 13

Макрокоманда

Примечание

U

janycK^anporaSQL1

J

J

Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof

Столбец для ввоаа примечании.

Рис. 10.28. Макрокоманда с оператором SQL

Макрокоманда ОтпкрытпъЗапрос позволяет открывать запрос на выборку или перекрестный запрос (в режимах Таблицы, Конструктора и Предвари­тельного просмотра), запускать запрос на изменение или ввод данных. Вы­зов ее эквивалентен нажатию кнопки Открыть (Open) или Конструктор (Design) в окне базы данных после выбора запроса на вкладке Запросы (Queries).

В макрокоманде задаются три аргумента: имя запроса, режим и режим дан­ных. Первый аргумент задает имя открываемого запроса и является обяза тельным. Второй аргумент задает режим открытия запроса. Допустимыми значениями яв тяются: «Таблица» (используется по умилчанию), «Конструк тор» и «Просмотр».

Третий аргумент описывает режим ввода данных в запрос. Аргумент мож­но применят ь к запросам, открываемым в режиме таблицы. Допустимые зна ченчя: «Добав чение» (можно вводить новые записи, нельзя изменять суще­ствующие), «Изменение» (можно вводить новые и изменять существующие записи; действует по умо. гчашло) и «Только чтение» (разрешается просмаг- рива гь записи).

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

Для вызова макрокоманды ОткрытьЗапрос в программе VBA использу­ют метод Opei iQuery объек га DoCmd.

SQL в программах на VBA

Напомним, что программы на VBA, как и макросы, предназначены для аи- тома гизации выполнения повторяющихся операций над объектами БД Access. Для выполнения программы следует запустить содержащую ее пооцеду ру Sub или функцию Function. Программа записывается в процедуре как набор ин- стрз кций и методов, с помощью которых вы in шняв 1тся 1 ребуемые действия Процедуры, как известно, хранятся в модулях и выполняются в ответ на со­бытия или вызываются из выражений, макросов и других процедур.

В Access существуют следующие способы запуска программ VBA:

  • включение программы в процедуру обработки события;

  • вызов ф) нкции в выражении:

  • вызов пооцедуры Sub в друг ой процедур»: или в окне отладки;

  • выполнение макрокоманды ЗапускПрограммы (RunCode) в макросе.

Например, чтобы вызвать прг -грамму вьхп< >лнения определенных действий при открытии формы, нужно включить ее текст в процедуру обработки собы тия Нажатие кнопки (Click) для кнопки, при нажатии которой будет откры ваться фирма.

Функции применяются в выражениях, определяющих вычиг пяемые поля в формах, отчетах или запросах. Выражения используются для указания ус­ловий в запросах и фильтрах, а также в макросах, в инструкциях и методах VBA, а также в инс грукциях SQL. В процедуру Sub можно вк /почать общедо­ступные VBA-подпрограммы, вызываемые из других процедур.

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

В запросе производится отбор в базе данных записей, удовлетворяющих определенным условиям (запрос на выборку), либо выдается инструкция на выполнение указанных действий с записями, удовлетворяющими определен­ным условиям (запрос на изменение).

Если запрос SQL используется для возвращения данных, ядром базы дан - ных Microsoft Jet создается объект Recordset. После создания этого объек та можно использовать методы поиска (Find) и перемещения но записям набора.

Существуют следующие способы выполнения запросов:

  • вызов метода Execute (для выполнения запросов SQL на изменение);

  • создание и выполнение специального объекта QueryDef:

•использование инструкции SQL в качестве аргумента метода

Open Recordset;

•выполнение метода OpenRecordset для существующего объекта QueryDef;

  • вызов методов RunSQL и OpenQuery.

Метод Execute используется, если требуегся выполнить такое изменение в БД, при котором не возвращаются записи. Это, например, операции впав ки или удаления записей.

В качестве простейшего примера приведем команды Visual Basic для пш ложений выполнения запроса на изменение, в котором выполняется обнов­ление записей таблицы «Должности», не имеющих значение в столбце ISBN. При возникн< 1вении ошибки все изменения отменяются.

Dim strSQL as String

strSQL = «DELETE FROM Должности WHERE ISBN IS NULL» dbsl hlio.Execute strSQL, dbFuilOnEtror

Объект QueryDef представляет собой сохраненное определение запроса в базе данных. Его можно рассматривать как откомпилированную инструкцию SQL.

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

Sub NewQueryO ' Объявление переменных

Dim dbs Л5 Database, qdf As QueryDef, strSQL As String ' Установка значения переменной типа Database, ' лредставляющсй текущую базу данных Set dbs = Current Db ' Строка запроса

strSQL =j «SELECT * FROM Сотруоники WHERE [ДатаНаима] >= # 1-1-95#»

' Создание новою объекта QueryDef Set qdf = dbs. Create OueryDef (->Новые Сотрудники % strSQL)

' (Открытие запроса DoCmd.OpenQuety qdf.Name End Sub

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

В следующей процедуре с помощью инструкции SQL создается объект Recordset типа динамического набора записей. В предложение WHERF инст­рукции SQL включена функция Year, опредеаяющэя отбор заказов, разме­щенных в 19U8 году.

Sub Orders98()

Dim dbs As Database. rstAs Recordset, strSQL As String

Dim fid A s Field Set rtbs =■ Current Ub

strSQL = «SELECT DISTINCTROW Заказ, ДатаРазмещения « &

«FROM Заказы WHERE ((УеагЦДатаРсишещения/)=1998));» Set rst = dbs.OpenRecordset(strSQL, dhOpenDynaset) rst.MoveLast

Debug.Print rst.Rer.ordCount

End Sub

Метод RunSQl выполняет макрокоманду ЗапускЗапросабОЬ (RuiiSQL) в программе VBA. В следующем примере изменяется название должности всех ai ентов по продажам в таблице «Сотрудники».

DoCmd.RnnSQL «UPDATE С отрудники « &

«SET Сотрудники.ТШе = 'Региональный представитель' « &

«WHERE Сотрудники.ТШе = 'Агент по продажам;»

Метод OpevQuery выполняет макрокоманду ОткрытьЗапрос (OoenQuery; в программе VBA. С его помощью можно открыть запрос в ре­жиме таблицы, Конструктора или просмотра. При этом устанавливается один из следующих режимов работы с данными: добавление, изменение или толь­ко чтение.

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

DoCmd.OpenQuery «Выработка сотрудников»,, ас Readonly

Выбор варианта выполнения запросов определяется программистом с уче­том особенностей решаемой задали.