Light-electric.com

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

Docmd access методы

VBA для чайников (90 стр.)

Сами по себе формы и отчеты VBA не способны взаимодействовать с базами данных, но написать код для связывания формы данных вручную не так уже сложно. Кроме а того, вы можете приобрести Office Developer или другие инструментальные средства от сторонних производителей, которые позволят связать формы и элементы управления с данными. Вы можете также переслать результаты своей работы непосредственно в другие VBA-приложения, так как они не зависят от форм Access.

* Visual Basic (не VBA). Visual Basic- это восхитительный инструмент для разработки баз данных. Написанный вами код на Visual Basic может через ADO подключаться к базам данных, как и при использовании VBA, однако формы Visual Basic напрямую поддерживают работу с базами данных, точно так же, как и формы Access. Программа, созданная с помощью Visual Basic, обладает двумя значительными преимуществами перед программой, созданной с помощью VBA-приложения, такого как Word или Excel. Во-первых, она быстрее работает, так как программы, написанные на Visual Basic, компилируются, а не интерпретируются при каждом выполнении, как программы, созданные с помощью VBA. Во-вторых, вы можете свободно распространять программы: конечным пользователям не понадобится базовое VBA-приложение с помощью которого оно было создано.

Программирование баз данных с помощью Access

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

* Формы Access несовместимы со стандартными пользовательскими формами VBA и формами Visual Basic. Если вы решите, что ваша программа будет лучше работать в другом VBA-приложении, вам придется создавать все формы заново.

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

Если вы опытный пользователь Access, но не имеете ни малейшего опыта программирования, объект DoCmd позволит вам постепенно перейти к использованию VBA. Однако этим объясняется и определенная проблема: объект DoCmd жестко привязывает вас к Access. Если же вы изучите стандартный VBA, вы сможете очень легко перейти к другим средам разработки Visual Basic.

Даже если вы выберете «чистый» VBA, вы все равно не обойдетесь без объекта DoCmd при создании программ в рамках Access. Возможно, в связи с тем, что формы Access не являются стандартными формами VBA, для отображения формы в VBAпрограмме Access вам придется использовать не стандартный метод Show, а метод OpenForm объекта DoCmd.

Написание кода базы данных с помощью ADO

Хотя проектирование правильных SQL-инструкций может оказаться сложным, написание кода базы данных с помощью ADO оказывается совсем несложной задачей. Вам необходимо освоить работу всего с тремя объектами: Connection, Recordset и Command; их методы и свойства реализованы достаточно логично.

Обработка ошибок

Из-за ограниченного объема главы я не могу подробно остановиться на рассмотрении такого чрезвычайно важного вопроса, как обработка ошибок. Однако очень важно включить код обработки ошибок в каждую процедуру базы данных. Подробные сведения о написании кода обработки ошибок на VBA изложены в главе 9.

Добавление ссылки на ADO

Прежде чем вы сможете использовать ADO и ее объекты в VBA-программе, вы должны сначала добавить в своем проекте ссылку на библиотеку объектов ADO. В окне редактора Visual Basic выберите команду Tools=References, после чего установите флажок напротив Microsoft ActiveX Data Objects 2.x Library (на момент написания книги последней версией была 2.5).

Вашей первоочередной задачей при необходимости доступа к источнику данных (базе данных или другому репозитарию данных) станет установка соединения с ним. Для организации подключения между вашей программой и данными предназначен объект Connection.

Это очень важно! Если вы используете Access для написания ADO-кода для ядра базы данных Jet, вам не нужно создавать объект Connection для работы с базой данных Jet, уже открытой в Access, так как Access автоматически выполняет подобные действия за вас. Для обращения к базе данных используйте свойство Connection объекта Current Project программы Access. Это позволяет сделать, например, приведенный ниже фрагмент кода:

Dim conADOConnection As Connection

Set conADOConnection = Current Project.Connection

Кроме того, вы можете легко установить подключение с базой данных SQL Server в проекте Access, если вы пишете код VBA в этом же проекте. В этом случае вам необходимо использовать свойство BaseConnectionString объекта Current Project, как показано ниже:

Dim conADO Аз New Connection

В других ситуациях вам придется создавать объекты Connection самостоятельно. Для создания объекта Connection просто объявите имя переменной для объекта, после чего откройте подключение. Метод Open получает в качестве аргумента строку подключения, содержащие различные параметры, которые определяют используемое средство доступа OLE DB Provider и источник данных, с которым вы работаете. Либо же, вы можете сначала задать свойства объекта Connection, соответствующего элементам строки подключения, после чего уже использовать метол Open. Изучите приведенные ниже примеры эквивалентных инструкций, которые создают объект Connection для одной базы данных Jet:

Dim. conADOConnection As New Connection, strConnect As String

strConnect = «Provider=Microsoft.Jet.OLEDB.4.0; » _

Dim conADOConnection As New Connection

.Properties(«Data Source») = «=C:DataToys»

Параметры, необходимые методу Open, зависят от используемого вами средства доступа OLE DB Provider; обратитесь к справочной системе, Web-узлу компании Microsoft или документации по Office Developer для получения подробных сведений. Ниже приведен соответствующий пример для SQL Server:

Dim conADOConnection As New Connection

Dim strConnect As String

strConnect = «Provider=SQLOLEDB; Data Source* Hecate;» _

Если вы работаете в Access, ADO нельзя назвать универсальным решением по управлению данными. Проекты Access могут взаимодействовать только с базами данных SQL Server, но ни с какими другими средствами доступа OLE DB Provider. Кроме того, использование Access VBA для создания подключений к базе данных SQL Server требует различных параметров, используемых в других средах разработки. В Access свойству Provider должно быть присвоено значение MSDataShape, а свойству DataProvider следует присвоить значение SQL0LILD3.

ADO позволяет вам работать с объектами баз данных, обходясь без предварительного создания объекта Connection: вы можете связать эти объекты с подключением только тогда, когда придет время заполнить их реальными данными. Либо же вы можете создать подключение неявно в процессе определения объекта Recordset или Command. Однако создание объекта Connection явным образом упрощает ваш код и позволяет связывать одно подключение с несколькими другими объектами.

Читать еще:  Access 2020 онлайн работать

Работа с объектами Recordset

Давайте поближе познакомимся с объектами Recordset: вы используете при выполнении фундаментальных операций с данными. Объект Recordset — это контейнер, содержащий данные, полученные из источника данных. Как и положено контейнеру, один объект Recordset может содержать различные записи в разное время.

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

* собственный метод Open объекта Recordset;

* метод Execute объекта Command;

* метод Execute объекта Connection.

Простейший способ создания объекта Recordset — использование метода Open этого самого объекта. Метод Open хорошо работает в том случае, если вы используете простые инструкции Select для получения необходимых записей. Следующий фрагмент кода демонстрирует настройку объекта Recordset с помощью метола Open:

Dim conman As New Connection

Dim rstMan As Recordset

Dim strSQL As String

. (здесь содержится код, используемый для создания объекта подключения conMan) strSQL = «SELECT * FROM Toys» ‘ выбор всей таблицы Toys

Set rstMan.ActiveConnection = conman

rstMan.Open strSQL,, adOpenForwardOnly, adLockReadOnly, _

Обратите внимание на то, что приведенный выше фрагмент кода связывает подключение с объектом Recordset с помощью свойства ActiveConnection последнего. Кроме того, обратите внимание на то, что параметры, управляющие поведением объекта, указаны в качестве аргументов метода Open.

VBA в Access: как работает DoCmd.RunCommand acCmdSaveRecord?

чтобы сохранить, но я не уверен, как это на самом деле работает. Это сохранить все несохраненные изменения? Или он сохраняет все, независимо от того, был ли он изменен или нет? Или это только сохранить текущую форму? Что насчет высвобожденных несохраненных изменений в других формах? Или он функционирует каким-то другим образом? Есть ли официальная документация для этой функции?

1 Ответ

Он сохраняет текущую запись активной формы . Это то же самое, что нажать на селектор записей.

Если текущая запись в данный момент не редактируется (не «Dirty»), то ничего не происходит.

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

Сохранение текущей записи в модуле формы (только сохранение при необходимости):

Сохранение записи в любом виде

Это гораздо яснее и лучше IMO. Я полностью прекратил использовать DoCmd.RunCommand acCmdSaveRecord .

Похожие вопросы:

Взрыв из прошлого. Получил задание очистить устаревший Access 2000 adp, используемый для управления данными, находящимися на сервере SQL 2005. На одной из форм данных, всякий раз, когда я пытаюсь.

Это мой сценарий (MS Access 2007): На форме 1 у меня есть список записей (заказов). Form1 имеет кнопку, которая запускает Form2. Форма 2 используется для создания новых заказов. Кнопку Save в форме.

У меня есть база данных, настроенная на MS Access 2007. На выбор BeforeUpdate в свойствах формы, я разместил ниже макрос: Private Sub Form_BeforeUpdate(Cancel As Integer) If MsgBox(Changes have been.

Мне нужно убедиться, что мои пользователи не вводят больше времени простоя, чем у них есть. Чтобы сделать это, я рассчитал время, которое они имеют в наличии, и сделал столбец running total в форме.

У меня есть непрерывная форма, привязанная к источнику записей DAO. Мое правило условного форматирования выглядит следующим образом: Выражение: [DateTimeDeleted] не является NULL (заполните textbox.

У меня есть база данных с 2 подформами в форме с полями, как показано ниже Подформа 1: Кол-Во Забронировано, Кол-Во Забронировано Sub Form 2: ‘Total Stock’ При работе в Access 2003 поле ‘Total.

У меня есть код VBA, который должен экспортировать отфильтрованные данные запроса в Excel. Когда я активирую код через кнопку OnClick, я получаю ошибку: Method pastespecial of worksheet class failed.

Сегодня у меня возникла проблема, когда одна из моих форм заполняет все поля #DELETED после сохранения записи. Это не происходило три часа назад, и, похоже, это началось без того, чтобы я что-то.

Я ищу решение VBA (в Access) для следующего: У меня есть форма под названием CS_Order, из которой я хочу открыть отчет под названием “Packing list” На форме есть поле call PO number (это текстовое.

Я действительно Новичок в Access, поэтому я не слышал о большинстве команд для Access VBA, но я довольно хорошо знаком с Excel VBA. То, что я пытаюсь сделать, это сохранить вложение, которое было.

Автоматизация приложения с помощью VBA: Методические рекомендации по выполнению лабораторной работы , страница 2

Методы

Каждый объект или семейство имеют определенный набор методов, которые могут быть выполнены. Примеры некоторых методов формы : Refresh – обновляет все поля в основном источнике записей с изменениями, сделанными в форме, Set Focus – активизирует указанную форму или элемент управления.

Многие методы имеют аргументы, позволяющие уточнить, как они должны действовать на объект. Например, при применении метода OpenRecordset к таблице вы можете создать динамический, или обновляемый, набор записей (Dynaset) либо статический набор записей, позволяющий только просматривать данные.

После открытия набора записей для перехода к нужной записи можно использовать методы Move (MoveFirst, MoveLast, MoveNext, MovePrevious).

Для перехода к определенной строке, удовлетворяющей заданным критериям, используется один из методов Find (FindFirst, FindLast, FindNext, FindPrevious).

Соглашения по синтаксису

Область определения переменной (или константы) определяет, известна ли она только одной процедуре, всем процедурам в модуле или всем процедурам в базе данных. Для объявления общей переменной используйте инструкцию Public в разделе описаний модуля. Чтобы переменную можно было использовать во всех процедурах некоторого модуля, объявите ее в разделе описаний стандартного модуля или модуля формы или отчета. Переменная или константа, описанная в процедуре, доступна только в этой процедуре.

Инструкция Constиспользуется для объявления констант.

Инструкция Dimиспользуется для объявления переменной или массива переменных.

где есть [нижняя граница То] верхняя граница.

Ключевое слово New указывает, то объявляемая объектная переменная является новым экземпляром объекта. Ключевое слово WithEvents применяется в модуле класса для указания объектной переменной, использующейся при отклике на события, гнерируемые объектом ActiveX.

Для объявления переменной как объекта типа Database введите

Dim mydb As Database

Следующая инструкция описывает массив, содержащий строки фиксированной длины по 20 символов, причем 50 элементов массива пронумерованы от 51 до 100

Dim mymassiv (51 To 100) As String * 20

Инструкция Setиспользуется для присваивания значения объектной переменной.

Читать еще:  Access docmd runsql

Set имя переменной = ссылка на объект

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

Dim mydb As Database

Set mydb = CurrentDb()

Чтобы создать переменную, ссылающуюся на таблицу Клиенты в текущей базе данных, используя только что определенную переменную mydb, введите

Dim myTab As TableDef

Set myTab = mydb![Клиенты]

Чтобы создать переменную, ссылающуюся на поле Название таблицы Клиенты, введите

Dim myPole As Field

Set myPole = myTab![Название]

Ссылки на формы, отчеты, их свойства и элементы управления

Ссылки на формы или отчеты можно делать только когда они открыты. Access использует коллекции Forms и Reports (множества открытых форм и отчетов), чтобы сохранить путь, из которого открываются соответствующие формы и отчеты. Коллекцию необходимо указывать, т. к. Access позволяет использовать одно и то же имя для формы и для отчета. Объекты Form и Report имеют свойства. Пример ссылки на свойство Источник записей формы Товары :

Чтобы установить значение свойства формы в собственном модуле класса формы, используйте идентификатор Me – ссылку на самого себя :

Чтобы сослаться на элемент управления Код товара формы Товары, введите :

Ссылки на подчиненные формы и отчеты

Ссылка на подчиненную форму Заказанный товар в форме Заказы будет иметь вид :

Для ссылки на свойство Вывод на экран рассмотренной выше подчиненной формы введите выражение :

Для ссылки на элемент управления Код товара подчиненной формы Заказанный товар, внедренной в форму Заказы, будет иметь вид :

Forms![Заказы]![Заказанный товар].Form![Код товара]

Функции и подпрограммы

В VBA имеется два типа процедур : функции (процедуры Function) и подпрограммы (процедуры Sub). Процедуры обоих типов могут иметь аргументы – переменные, с помощью которых передаются значения, определяющие работу процедуры при конкретном вызове. Функции можно выполнять из любого места в Access, в том числе из выражений в запросах, а подпрограмму можно выполнять только при вызове из функции, из другой подпрограммы или как процедуру обработки события в форме или отчете.

Пользуясь методами объекта DoCmd, можно выполнять макрокоманды и команды меню в процедурах VBA. К наиболее употребляемым макрокомандам, которые выполняются из среды VBA, относятся :ApplyFilter (Применить фильтр), Close (Закрыть), FindNext (Следующая запись), FindRecord (Найти запись), Maximize (Развернуть), Minimize (Свернуть), OpenForm (Открыть форму), OpenQuery (Открыть запрос), OpenReport (Открыть отчет) и др.

Например, чтобы открыть форму Клиент для ввода данных в режиме формы, введите :

DoCmd.OpenForm “Клиент”, acNormal , , , acAdd

Закрыть форму Клиент можно с помощью инструкции:

DoCmd. Close acForm, “Клиент”

Аргументы в процедурах

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

Стандартный модуль в этом случае выглядит:

Public Function Открыть(strFormName As String) As Integer

Объект Screen ссылается на конкретную форму, отчет или элемент управления. Применяя объект Screen, можно ссылаться на активный объект, не зная его имени.

Можно заменить объект Screen объектом Me, если приведенная выше процедура используется только в одной форме (Ме.Visible=False).

При вызове этой процедуры в свойстве события Нажатие кнопки нужно ввести имя процедуры с именем конкретной формы : = Открыть(“Заказы”).

Использование функции DLookup

Функция DLookup выполняет поиск информации в еще не открытых таблицах. Синтаксис:

DLookup(«[Поля, которые нужно отобразить]»,»[Таблица представления]»,» «),

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

Критерий поиска имеет следующий формат :

  • АлтГТУ 419
  • АлтГУ 113
  • АмПГУ 296
  • АГТУ 266
  • БИТТУ 794
  • БГТУ «Военмех» 1191
  • БГМУ 171
  • БГТУ 602
  • БГУ 153
  • БГУИР 391
  • БелГУТ 4908
  • БГЭУ 962
  • БНТУ 1070
  • БТЭУ ПК 689
  • БрГУ 179
  • ВНТУ 119
  • ВГУЭС 426
  • ВлГУ 645
  • ВМедА 611
  • ВолгГТУ 235
  • ВНУ им. Даля 166
  • ВЗФЭИ 245
  • ВятГСХА 101
  • ВятГГУ 139
  • ВятГУ 559
  • ГГДСК 171
  • ГомГМК 501
  • ГГМУ 1966
  • ГГТУ им. Сухого 4467
  • ГГУ им. Скорины 1590
  • ГМА им. Макарова 299
  • ДГПУ 159
  • ДальГАУ 279
  • ДВГГУ 134
  • ДВГМУ 408
  • ДВГТУ 936
  • ДВГУПС 305
  • ДВФУ 949
  • ДонГТУ 497
  • ДИТМ МНТУ 109
  • ИвГМА 488
  • ИГХТУ 130
  • ИжГТУ 143
  • КемГППК 171
  • КемГУ 507
  • КГМТУ 269
  • КировАТ 147
  • КГКСЭП 407
  • КГТА им. Дегтярева 174
  • КнАГТУ 2909
  • КрасГАУ 345
  • КрасГМУ 629
  • КГПУ им. Астафьева 133
  • КГТУ (СФУ) 567
  • КГТЭИ (СФУ) 112
  • КПК №2 177
  • КубГТУ 138
  • КубГУ 107
  • КузГПА 182
  • КузГТУ 789
  • МГТУ им. Носова 367
  • МГЭУ им. Сахарова 232
  • МГЭК 249
  • МГПУ 165
  • МАИ 144
  • МАДИ 151
  • МГИУ 1179
  • МГОУ 121
  • МГСУ 330
  • МГУ 273
  • МГУКИ 101
  • МГУПИ 225
  • МГУПС (МИИТ) 636
  • МГУТУ 122
  • МТУСИ 179
  • ХАИ 656
  • ТПУ 454
  • НИУ МЭИ 640
  • НМСУ «Горный» 1701
  • ХПИ 1534
  • НТУУ «КПИ» 212
  • НУК им. Макарова 542
  • НВ 778
  • НГАВТ 362
  • НГАУ 411
  • НГАСУ 817
  • НГМУ 665
  • НГПУ 214
  • НГТУ 4610
  • НГУ 1992
  • НГУЭУ 499
  • НИИ 201
  • ОмГТУ 301
  • ОмГУПС 230
  • СПбПК №4 115
  • ПГУПС 2489
  • ПГПУ им. Короленко 296
  • ПНТУ им. Кондратюка 119
  • РАНХиГС 186
  • РОАТ МИИТ 608
  • РТА 243
  • РГГМУ 117
  • РГПУ им. Герцена 123
  • РГППУ 142
  • РГСУ 162
  • «МАТИ» — РГТУ 121
  • РГУНиГ 260
  • РЭУ им. Плеханова 122
  • РГАТУ им. Соловьёва 219
  • РязГМУ 125
  • РГРТУ 666
  • СамГТУ 130
  • СПбГАСУ 315
  • ИНЖЭКОН 328
  • СПбГИПСР 136
  • СПбГЛТУ им. Кирова 227
  • СПбГМТУ 143
  • СПбГПМУ 146
  • СПбГПУ 1598
  • СПбГТИ (ТУ) 292
  • СПбГТУРП 235
  • СПбГУ 577
  • ГУАП 524
  • СПбГУНиПТ 291
  • СПбГУПТД 438
  • СПбГУСЭ 226
  • СПбГУТ 193
  • СПГУТД 151
  • СПбГУЭФ 145
  • СПбГЭТУ «ЛЭТИ» 379
  • ПИМаш 247
  • НИУ ИТМО 531
  • СГТУ им. Гагарина 113
  • СахГУ 278
  • СЗТУ 484
  • СибАГС 249
  • СибГАУ 462
  • СибГИУ 1654
  • СибГТУ 946
  • СГУПС 1473
  • СибГУТИ 2083
  • СибУПК 377
  • СФУ 2423
  • СНАУ 567
  • СумГУ 768
  • ТРТУ 149
  • ТОГУ 551
  • ТГЭУ 325
  • ТГУ (Томск) 276
  • ТГПУ 181
  • ТулГУ 553
  • УкрГАЖТ 234
  • УлГТУ 536
  • УИПКПРО 123
  • УрГПУ 195
  • УГТУ-УПИ 758
  • УГНТУ 570
  • УГТУ 134
  • ХГАЭП 138
  • ХГАФК 110
  • ХНАГХ 407
  • ХНУВД 512
  • ХНУ им. Каразина 305
  • ХНУРЭ 324
  • ХНЭУ 495
  • ЦПУ 157
  • ЧитГУ 220
  • ЮУрГУ 306

Полный список ВУЗов

Чтобы распечатать файл, скачайте его (в формате Word).

Иллюстрированный самоучитель по Microsoft Access 2002

Использование объектов и семейств

Свойства и методы объектов

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

Читать еще:  Vba access dlookup

Замечание
Если вы хотите иметь подробную информацию обо всех свойствах и методах объекта, следует обратиться к соответствующему разделу справки. Например, чтобы получить сведения о любом объекте модели Access, нужно раскрыть раздел Объекты Microsoft Access в папке Программирование, Справочник по языку Visual Basic Microsoft Access и затем щелкнуть на нужном объекте или семействе. Однако делать это вам придется, скорее всего, не очень часто, т. к. краткую информацию обо всех свойствах и методах объекта при написании программы в среде редактора VBA можно получить очень быстро, подключив оперативную подсказку или пользуясь Окном просмотра объектов
.

Установка свойства объекта – это присвоение значения данному свойству. Поэтому для установки свойства используется оператор присваивания, например, чтобы установить свойство Visible (Вывод на экран) элемента управления формы, можно использовать инструкцию VBA:

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

Получить свойство означает прочитать текущее значение этого свойства. Например, инструкция VBA:

…присваивает переменной значение свойства Count семейства Forms.

Метод объекта в инструкциях VBA обозначается так же, как и свойство. Это видно и из приведенных в предыдущем разделе примеров, где мы использовали методы Append, Delete и Refresh семейства TableDefs. Однако, в отличие от свойств, методы могут иметь аргументы. Например, в следующей инструкции VBA применяется метод OpenReport объекта DoCmd.

Объект DoCmd – это специальный объект, который позволяет в программах VBA выполнять макрокоманды. Имя каждой макрокоманды является методом этого объекта. В приведенном примере создается отчет «Вакансии» в режиме Предварительного просмотра. При этом метод OpenReport не возвращает никакого значения, и аргументы в данном случае не требуется заключать в скобки.

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

Метод OpenRecordset объекта Database возвращает ссылку на объект Recordset (Набор записей), присваиваемую объектной переменной rs. Метод close, который имеют оба объекта – Recordset и Database, – не использует аргументов.

Cоздание модуля обработки событий в СУБД Access 2003

Cоздание модуля обработки некоторого события в Access 2003

Рассмотрим одну из процедур обработки события Click, изложенных на страничке «Создание модуля формы в СУБД Access 2003». В нашем случае событие (нажатие кнопки) происходит, когда пользователь щелкает левой клавишей мыши на командной кнопке cmdPusk. В окне редактора кода Training_students_O — Form_FormaP (Code), скриншот которого представлен на рисунке 1, отображается рассматриваемая заготовка модуля.

Для завершения процесса создания модуля формы для обработки события необходимо в заготовку модуля (рис.1) между операторами Sub cmdPusk_Click () и End Sub вставить соответствующую процедуру. Процедуру обработки событий можно самостоятельно написать непосредственно в окне редактора кода или использовать код модуля полученный в результате преобразования макроса в процедуру.

Самый простой способ создания модуля — это преобразовать макрос в процедуру, а затем скопировать код VBA в модуль формы Form_FormaP. Для этих целей можно использовать, например, макрос»Откр_запрос», созданный в базе данных Training_students_O. Этот макрос надо преобразовать в модуль и присвоить ему имя «Преобразованный макрос-Откр_запрос».

Технология преобразования макроса в модуль. Сначала в контекстном меню требуется выбрать команду «Сохранить как» (рисунок 2). Откроется окно диалога Сохранение (рис. 3). В окне выбираем команду Сохранить, как Модуль, и щелкаем на кнопке ОК.

Откроется диалоговое окно «Преобразование макроса: Откр_запрос». В этом окне надо установить флажки и щелкнуть на кнопке Преобразовать. Появится сообщение «Преобразование закончено!», щелкнуть на кнопке ОК.

Откроется редактор VB. В окне «Projekt — Деканат» в директории Modules появится новый стандартный модуль: «Преобразованный макрос: Откр_запрос».

А в окне редактора кода (Code) будет отображаться код программы на Visual Basic.

В коде преобразованного макроса можно увидеть раздел объявлений «Option Compare Database» или инструкций в верхней части окна, далее помещена строка: ‘ Откр_запрос. Запись в строке после апострофа — это комментарий. Затем между операторами Function Откр_запрос () и End Function находятся инструкции. Необходимо отметить, что инструкция представляет собой одну строку текста, т.е. начинается и заканчивается на одной строке. Если в строке находится несколько инструкций, то они разделяются двоеточиями. Функция имеет имя и аргументы, которые помещаются в круглые скобки. Даже при отсутствии аргументов, круглые скобки после имени функции обязательны.

Первая инструкция «On Error GoTo Откр_запрос_Err» процедуры указывает на обработку ошибок. При возникновении ошибки «Откр_запрос_Err» будет выполняться инструкция «MsgBox», которая выдает диалоговое окно с описанием ошибки «Error$». $ означает, что результат функции выдается в виде строки. При этом Resume передает управление инструкции Exit Function через инструкцию Откр_запрос_Exit и метку Откр_запрос_Exit, в результате осуществляется выход из процедуры. Если макрокоманда OpenQuery выполняется без ошибок, то следующая за ней инструкция «Exit Function» обеспечивает выход из процедуры.

Основная часть работы по обработке событий выполняется оператором (процедурой): DoCmd.OpenQuery «Успеваемость студентов», acViewNormal, acEdit. Где DoCmd — процедура класса (DoCmd инструкция) предназначена для работы с записями в VB. Инструкция DoCmd или объект DoCmd позволяет выполнять макросы (макрокоманды) с помощью процедуры на VB. Инструкция DoCmd имеет следующий формат: DoCmd макрокоманда аргументы.

OpenQuery — это макрокоманда «Открыть запрос». DoCmd.OpenQuery — этот оператор выполняет те же действия, что и запрос на выборку «Успеваемость студентов» на вкладке Запрос или макрос «Откр_запрос» на вкладке Макросы. Макрокоманда OpenQuery имеет три аргумента. Первый аргумент — это имя запроса: «Успеваемость студентов». Второй — режим: acViewNormal — устанавливается по умолчанию для печати формы. Третий аргумент — режим данных: acEdit — режим изменения данных.

Выделяем и копируем оператор (исполняемый код): DoCmd. OpenQuery «Успеваемость_студентов», acViewNormal, acEdit. Затем вставляем его в заготовку модуля формы для обработки события между операторами Sub cmdPusk_Click () и End Sub.

Таким образом, создаем модуль объекта для обработки события Click (нажатия кнопки) объекта cmdPusk. Теперь запрос «Успеваемость_студентов» будет запускаться после выполнения такого события как нажатие кнопки Пуск на форме FormaP. Для этого переходим в окно базы данных на вкладку Формы, выделяем FormaP и щелкаем на кнопке Открыть. Откроется форма «FormaP: форма».

Щелкаем на кнопке «Пуск», запускается процедура обработки события и в результате откроется запрос «Успеваемость студентов: запрос на выборку».

В этой статье была рассмотрена технология создания модуля объекта для обработки события Click, использовав в качестве процедуры обработки события код программы преобразованного макроса «Откр_запрос».

Copyright

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

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×