Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выполнение лабораторной работы. Лабораторная работа №7

Читайте также:
  1. Fidelio Front Office - система автоматизации работы службы приема и размещения гостей.
  2. FILTER – задает один из трех режимов работы ручкам FREQ и RESON
  3. II. Методика работы
  4. II. Методика работы.
  5. II. Методика работы.
  6. II. Методика работы.
  7. II. Методика работы.

ЛАБОРАТОРНАЯ РАБОТА №7. Использование ACCESS VBA при решении задач обработки баз данных

 

Цель лабораторной работы

Лабораторная работа предназначена для получения практических навыков создания кодов VBA в Access на основе объектного событийно-управляемого подхода, что предполагает использование объектов Access Application, объектов доступа к данным DAO и объектов Access VBA.

 

Основные сведения об объектах ACCESS и DAO.

Объекты Access Application

К основным объектам Access Application относятся:

· Объект Application представляет саму СУБД Access, а также среду для выполнения макрокоманд и процедур VBA. При установке характеристик объекта Application изменяются свойства всей среды Access.

· Объекты Form ссылаются на конкретную открытую форму и являются членами совокупности Forms. Добавить объект или удалить его из совокупности Forms можно, только открыв или закрыв форму. Существует около 30 свойств событий, распознаваемых формой.

· Объекты Report ссылаются на конкретный открытый отчет и являются членами совокупности Reports. Добавить объект или удалить его из совокупности Reports можно, только открыв или закрыв отчет. Отчет распознает семь свойств событий.

· Объект Control представляет элемент управления в форме или отчете и принадлежит к совокупности Controls данной формы или отчета. Каждый тип элемента управления имеет собственный набор свойств, включая характеристики распознаваемых им событий.

· Объект DoCmd - необычный объект, доступный только в VBA. Не представляя никакой физической сущности с заданными свойствами и поведением, он осуществляет важную связь между макропрограммированием и программированием на VBA. Его можно использовать при выполнении макродействий в Visual Basic.

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

В семействах Forms и Reports содержатся лишь объекты, которые были открыты при помощи оператора DoCmd: Open тип_объекта или его эквивалентов.

Объект Form представляет форму MS ACCESS, открытую в режиме Design(Конструктор), Form(Режим формы) или DataSheet (Режим таблицы).

Чтобы начать работу с объектом Form, необходимо открыть форму, используя метод OpenForm объекта DoCmd. При неоднократном обращении к одному и тому же объекту Form лучше объявить объектную переменную, которая будет передавать этот объект.

Объект Report представляет собой отчет MS ACCESS, открытый в режиме Design (Конструктор), Print Preview (Предварительный просмотр) или Layout Preview (Образец).

Чтобы в VB можно было работать с объектом Report, сначала надо открыть отчет методом OpenReport объекта DoCmd. Можно получить ссылку на объект Report и присвоить ее объектной переменной.

Метод объекта DoCmd, соответствующий макрокоманде, обычно выполняет точный эквивалент макродействия. Методы объекта не возвращают значения или объекты и поэтому имеют следующий синтаксис:

DoCmd. метод аргумент1, аргумент2,...,аргументN

Существует два типа методов DoCmd, работающих с объектом Application в Access. Согласно одному из них объект нужно задавать как аргумент метода.

Например:

DoCmd.OpenReport"Приказ"

Второй метод применяется к активному объекту, поэтому объект не нужно задавать в качестве аргумента.

Например:

DoCmd.Close

 

Объекты DAO

Объекты DAO используются для управления базами данных из всех приложений, поддерживающих VBA.

Они позволяют:

1) Проектировать и создавать базы данных, изменять определения таблиц, запросов, индексов и связей.

2) Добавлять, удалять и изменять записи в базах данных.

3) Защищать и обеспечивать безопасность данных в базах данных.

4) Работать с различными форматами данных и присоединять таблицы из других баз данных.

5) Использовать информацию из удаленных баз данных и создавать приложения клиент-сервер.

К наиболее часто используемым объектам DAO относятся:

· Объект Database представляет открытую базу данных. Одновременно в одном рабочем пространстве можно открыть несколько баз данных. Существующая база данных открывается в процедуре VBA с помощью метода OpenDatabase объекта Workspace (рабочего пространства, создаваемого автоматически при запуске Access). Для ссылки на текущую базу данных Access позволяет использовать функцию CurrentDb().

· Объект Recordset представляет набор записей в таблице базы данных либо набор записей, получаемых в результате выполнения запроса или оператора SQL. В непустом объекте Recordset можно указать одну текущую запись.

Каждый объект Recordset состоит из записей и полей. Создаются объекты Recordset при вызове метода OpenRecordset. Этим методом обладают разные классы объектов: Database, QueryDef, RecordSet, TableDef. Каждый объект этих классов может породить набор записей(таблицу), составляющую новый объект RecordSet.

Перемещение по записям

Методы MoveLast, MoveFirst, MoveNext и MovePrevious находят в указанном объекте Recordset последнюю, первую, следующую за текущей и предыдущую запись и делают ее текущей.

Для перемещения на заданное число записей вызывается метод Move.

Добавление записей методом AddNew

Синтаксис использования метода:

набор записей.AddNew

Удаление записей

Для удаления текущей записи объекта RecordSet используется метод Delete:

набор_записей.Delete

Изменение текущей записи

Для изменения текущей записи используется метод Edit:

набор_записей.Edit

 

Основные сведения о программировании в Access VBA

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

Access поддерживает три типа модулей: стандартные, модули формы и модули отчета.

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

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

Для открытия модуля формы необходимо нажать кнопку «Программа» на панели инструментов в режиме конструктора формы или выполнить команду Вид / Программа. В любом случае откроется модуль Form _ имя _ формы. В Access 97 формы имеют новое свойство «Наличие модуля». Если ему присвоено значение «Да», значит, форма имеет модуль класса, «Нет» – в форму нет необходимости добавлять какой-либо код.

Модули отчета содержат код, являющийся реакцией на события, запущенные отчетами, разделами отчетов. Элементы управления отчетов не запускают события. Модули отчета открываются так же, как модули формы и автоматически приобретают название Report_Имя_отчета.

Особенности работы с объектами

Перед каждой операцией работы с объектом необходимо применить ссылку на объект.

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

· Восклицательный знак применяется при переходе от совокупности к одному из ее членов:

имя_совокупности!имя_объекта

например:

Forms!formname

· Точка используется при переходе от объекта к одной из совокупностей:

имя_объекта.имя_совокупности

например:

Forms!formname.Controls

Forms!formname.Controls!controlname

· Если имя объекта содержит пробелы, его нужно заключить в квадратные скобки:

Forms!Switchboard

Reports![Expense Report]

· Для отделения названия характеристики от имени объекта используется операция точки:

Forms![Expense Categories].RecordSource

· синтаксис ссылки на поле в таблице или запросе зависит от того, относится ли таблица или запрос к базовому источнику записей открытой формы.

Ссылка на поле в источнике записей формы имеет синтаксис:

Forms!имя_формы!имя_поля

Ссылка на поле в таблице или запросе основана на применении синтаксиса:

имя_таблицы.Fields!имя_поля или имя_таблицы!имя_поля

имя_запроса.Fields!имя_поля или имя_запроса!имя_поля

В программировании на VBA переменная - это временная область памяти, содержащая значение или используемая для ссылки на объект. Такой области присваивается имя.

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

При работе с характеристиками в VBA доступны два действия:

· изменение значения характеристики, т.е. ее установка

· считывание значения характеристики, т.е. ее получение.

При установке значения характеристики ей присваивается значение:

объект.имя_характеристики=значение

или

объект.имя_характеристики<значение

При получении характеристики считывается ее текущее значение. Для хранения результата обычно используется переменная.

Если значение является текстовым, результат можно присвоить переменной в операции присваивания:

переменная=объект.имя_характеристики

Если характеристика представляет собой объект, то ссылка на объект присваивается объектной переменной:

Set переменная=объект.имя_характеристики

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

объект.метод

Большинство методов не возвращает результат, но есть и такие, которые возвращают текстовые значения и даже объекты.

Если метод возвращает текстовое значение, то для его сохранения в переменной можно использовать оператор присваивания:

переменная=объект.метод

Если метод возвращает объект, для присваивания результата объектной переменной используется оператор Set:

Set переменная=объект.метод

 

Содержание лабораторной работы

Решается задача обработки поступления товаров на склад. База данных должна содержать две таблицы. Входная информация для решения задачи содержится в таблице «Наличие», а выходная – в таблице «Накладные». При решении этой задачи должна корректироваться запись входной таблицы "Наличие" и добавляться новая запись в выходную таблицу "Накладные".

Справочная информация о товарах, хранящихся на складе, имеется в таблице “Наличие , содержащей следующие данные:

¨ Код товара

¨ Наименование товара

¨ Остаток

¨ Дата

¨ Единицы измерения

В форму осуществляется ввод информации о каждой поступившей на склад партии товаров:

Ø номер накладной

Ø код товара

Ø дата поступления

Ø количество

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

1) Произвести корректировку найденной записи в таблице "Наличие", заключающуюся в добавлении к значению поля "Остаток" введенного значения "количество" и в замещении значения поля "Дата" на введенное значение "дата поступления"

2) Добавить новую запись в таблицу "Накладные".

Выходная таблица имеет следующий состав полей:

¨ Номер накладной

¨ Код товара

¨ Дата поступления

¨ Количество

 

Выполнение лабораторной работы

1. Загрузите ACCESS.

2. Создайте таблицу «Наличие» и введите данные по пяти товарам.

3. Создайте таблицу «Накладные».

4. Создайте форму следующего вида:

 
 

 
 


Задайте имена кнопкам соответственно: ОК и Выход, задайте имена полям соответственно: Номер накладной - nn, Код товара -kt, Дата поступления - dp, Количество -kp.

3. В окне свойств кнопки Ok на вкладке События выберите значение Процедура обработки события и здесь же нажмите кнопку (с тремя точками).

4. Введите текст процедуры в модуле формы «Поступление»:

Private Sub Ok_Click()

On Error GoTo Err_Ok_Click

n = nn.Value

t = kt.Value

d = dp.Value

k = kp.Value

Obrabotka

nn.Value = Null

kt.Value = Null

dp.Value = Null

kp.Value = Null

Exit_Ok_Click:

Exit Sub

Err_Ok_Click:

MsgBox Err.Description

Resume Exit_Ok_Click

End Sub

 

5. В секцию General введите следующие описания:

Option Compare Database

Option Explicit

Dim n As String

Dim t As String

Dim d As Date

Dim k As Single

 

6. Действуя по аналогии с п.3,4 введите текст процедуры обработки события Click для кнопки Выход:

Private Sub Выход_Click()

On Error GoTo Err_Выход_Click

DoCmd.Close

Exit_Выход_Click:

Exit Sub

Err_Выход_Click:

MsgBox Err.Description

Resume Exit_Выход_Click

End Sub

 

7. В окне VBA выполните команду Insert \ Procedure и затем в окне Add procedure введите имя Obrabotka и выберите тип function.

Function Obrabotka ()

Dim dbs As Database

Dim rst As Recordset

Dim nst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Наличие")

Set nst = dbs.OpenRecordset("Накладные")

rst.MoveFirst

Do Until rst.EOF

If t = rst![Код товара] Then

rst.Edit

rst![Остаток] = rst![Остаток] + k

rst![Дата] = d

rst.Update

nst.AddNew

nst![Номер накладной] = n

nst![Код товара] = t

nst![Дата поступления] = d

nst![Количество] = k

nst.Update

End If

rst.MoveNext

Loop

End Function

8. Выполните созданное приложение, вводя данные в поля формы "Поступление" и нажимая после каждого заполнения полей кнопку Ok.

 


Дата добавления: 2015-10-29; просмотров: 215 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ТРИ НЕРАСПЕЧАТАННЫХ ПИСЬМА| История SWOT-анализа

mybiblioteka.su - 2015-2024 год. (0.024 сек.)