Базы данных: модели, разработка, реализация

Проектирование реляционных баз данных с использованием декомпозиционного и ER–методов. Вопросы поддержки целостности, защиты информации и параллельной обработки данных. Приложения для работы с базами данных с использованием СУБД Access и языка VBA.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 01.03.2011
Размер файла 211,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Значение аргумента

Представление окна формы

Normal (Обычный)

Соответствует установкам в окне свойств формы

Hidden (Скрытый)

Соответствует команде Скрыть из меню Окно

Ikon (Пиктограмма)

Представление в свернутом виде

Dialog (Диалоговый)

Определение окна формы как модельного или всплывающего

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

Значение Normal устанавливается по умолчанию. В этом случае можно задать местоположение и размер окна с помощью специальной команды MoveSize (Сдвиг/Размер). Местоположение открываемого окна определяется путем указания расстояния по вертикали вниз (аргумент Down) и по горизонтали вправо (аргумент Right) от левого верхнего угла окна Access. Размер окна по вертикали равен значению аргумента Height, а по горизонтали - значению аргумента Width. В качестве единицы измерения используются сантиметры или дюймы (в зависимости от установок в Control Panel Windows). Обозначения единиц измерения вводить не обязательно, они вставляются автоматически при переходе к полю следующего аргумента.

Команда MoveSize не воздействует на окно формы, если перед ее выполнением для аргумента Режим окна макрокоманды ОткрытьФорму было установлено значение Окно диалога.

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

Чтобы сослаться на элемент неактивного объекта, нужно указать полное имя этого элемента. Например, если запустить макрокоманду Управление вводом из окна базы данных, не открывая форму, содержащую поле Оклад, то выполнение макроса будет прервано. Этот макрос можно использовать в другой форме или в другом отчете, если в них находится поле с таким именем. Такая универсальность макроса вряд ли может быть отнесена к его достоинствам, поскольку в большинстве случаев макросы разрабатываются для применения с конкретным объектами. Для доступа к элементу объекта необходимо включить в макрокоманду его полную спецификацию, которая в общем случае имеет вид:

[Тип_ Объекта]![Имя_ Объекта]![Имя_ Элемента]

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

[Reports]! [Имя_ Объекта]![Имя_ Элемента]

Вызов приложений и управление ими. С помощью макроса можно запустить из Access приложения Microsoft Office, а также программы, работающие под управлением Windows или DOS, например, чтобы выполнить некоторые вычисления (с помощью Excel) или сделать небольшие заметки посредством редакторов Notepad и Word. Вызов выполняется одинаково во всех случаях и заключается главным образом в указании имени запускаемой программы. Макрос для вызова прикладной программы можно связать с кнопкой формы, таким образом, ускорив доступ к нужному приложению.

Запуск прикладных программ с параметрами. Запуская прикладные программы с помощью макрокоманды Запуск_ Приложений, можно указывать ключи, которые обычно вводятся в командной строке после имени программы при запуске с уровня DOS. Эти ключи служат для задания режима работы прикладной программы. Если, к примеру, из макроса запускается редактор Word, то параметр /t имя_документа применяется для загрузки документа с указанным именем, который используется в качестве шаблона. Ключ /n указывается при запуске Word без открытия нового документа. Способ указания ключей в аргументе Command Line такой же, как в командной строке DOS, например:

C:\Program Files\Microsoft Office\0ffice\winword.exe /n Использование ключей допускается при запуске большинства прикладных программ.

Управление прикладными программами из Access. В макросах предусмотрена возможность управления прикладными программами из Access с помощью комбинаций клавиш. Access моделирует в макросе передачу прикладной программе последовательности нажатий клавиш с помощью макрокоманды КомандыКлавиатуры.

С помощью макрокоманды КомандыКлавиатуры пользователь может передать в Access или в другую прикладную программу любую последовательность нажатий клавиш, которая, однако, не должна превышать 255 символов. Обозначения отдельных клавиш заключаются в фигурные скобки. Для обозначения клавиш [Alt], [Ctrl] и [Shift] используются следующие символы: Alt - %; Ctrl - ^; Shift - + .

Остальные клавиши обозначаются следующим образом:

Backspace - {BACKSPACE}; Del - {DEL}; End - {END}; Esc - {ESC}; «Влево» - {LEFT}; Home - {HOME}; Page Down - {PGDN}; Print Screen - {PRTSC}; Scroll Lock - {SCROLLOCK}; «Вверх» - {UP}; A - Z - {A} - {Z}; Break - {BREAK}; «Вниз» - {DOWN}; Enter - {ENTER}; Help - {HELP}; Num Lock - {NUMLOCK}; Ins - {INSERT}; Page Up - {PGUP}; «Вправо» - {RIGHT}; Tab - {TAB}; F1 - F15 - {F1} - {F15}; 0 - 9 - {0} -{9}.

Если в одной строке аргументы команды КомандыКлавиатуры следуют друг за другом несколько комбинаций клавиш, то для аргумента Пауза следует установить значение Yes, чтобы выполнение макроса продолжалось только после нажатия последней клавиши в комбинации.

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

На первом этапе разрабатываются макросы, которые будут применяться в качестве команд меню.

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

Второй этап включает создание макрогруппы, включающей макросы для выполнения команд меню.

На третьем этапе необходимо составить макрос, формирующий и обслуживающий пользовательскую строку меню.

Преобразование макросов в программы на Visual Basic

В некоторых случаях может оказаться полезным использовать заложенную в Access возможность преобразования макросов, связанных с формами или отчетами, в программы на языке Visual Basic.

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

1. Открыть форму Кнопка в режиме конструктора.

2. Выбрать команду Сервис/Макросы/Преобразовать макросы. Программа откроет диалоговое окно.

3. Установить в окне нужные параметры и нажмите кнопку Преобразовать.

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

3.2.8 Работа с внешними данными

В Access можно добавлять в базу данных копии таблиц из других приложений или использовать таблицы, которые существуют в посторонних базах данных или электронных таблицах. Access может импортировать или связывать данные из таблиц, созданных в предыдущих версиях Access, из других баз данных, таких как FoxPro и Paradox, из электронных таблиц, таких как Excel и Lotus 1-2-3, из таблиц, имеющих формат HTML, из сети Интернет или из корпоративных сетей.

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

Для этого необходимо выполнить команду Внешние данные / Импорт или Внешние данные / Связь с таблицами меню Файл Данное действие выведет на экран диалог выбора файлов для добавления в Access. В списке Тип файлов этого диалога необходимо выбрать ODBC Databases, что позволит вызвать окно выбора источника данных ODBC.

В представленном диалоге следует выбрать закладку Источник данных компьютера, после чего в списке определить необходимый источник данных DSN. Если требуемого источника нет в списке, то его можно создать, используя кнопку Создать данного диалога.

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

При выборе команды Внешние данные / Связь с таблицами меню Файл, т.е. при определении связи с таблицей, а не импортировании ее, система выведет диалог указания ключевого поля, другими словами, однозначный индекс, по которому будет осуществляться проверка целостности.

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

3.3 Программирование в Access

3.3.1 Вводные замечания

Для программирования в Access используется процедурный язык Visual Basic for Applications (Visual Basic для приложений - VBA) с добавлениями объектных расширений и элементов SQL. VBA является стандартным подмножеством Visual Basic, поддерживающим в основном такие же объекты, свойства, методы и другие языковые элементы. Кроме того, VBA -- расширяемый язык, который можно обогащать подключением внешних библиотек. Хотя создать полезные приложения в Access можно и без программирования, все же в большинстве случаев придется написать, по крайней мере, несколько строк кода, чтобы конкретизировать поведение объектов и компонентов приложения. Если же разработчик приступает к формированию мощного, высоко функционального продукта, знание основ программирования в соединении с пониманием объектной модели будет весьма кстати.

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

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

Так как программирование на Visual Basic базируется на объектах, структура кода близка к модели физического представления объектов на экране. По определению, объекты содержат данные и код. Форма, которую пользователь видит на экране, -- представление свойств, определяющих ее вид и поведение. Для каждой формы и отчета в приложении Access имеется модуль, который содержит ассоциированный, описывающий их программный код.

Программные модули -- важнейший компонент приложений Access. Существует два типа модулей: модули класса и стандартные модули. Модуль класса используется для создания объектов, которые могут вызываться из процедур приложения. В отличие от стандартного модуля, который содержит только код, модуль класса содержит и код, и данные. Новый объект, созданный в модуле класса, может включать пользовательские свойства и методы. Модуль класса можно рассматривать как элемент управления без физического представления.

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

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

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

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

При создании формы или отчета в Microsoft Access автоматического назначения связанного с ними модуля не происходит. Модуль создается после нажатия кнопки Программа на панели инструментов, которая служит для открытия окна редактора кода модуля формы или отчета. Создание модуля возможно также путем установления значения Да для свойства формы Наличие модуля.

Значение этого свойства указывает на наличие или отсутствия модуля, связанного с формой или отчетом. Так как модуль формы или отчета не создается, пока не возникает необходимость добавления в них программного кода, в проекте содержится меньшее количество модулей. Это приводит к повышению производительности. Формы и отчеты без модулей загружаются значительно быстрее форм и отчетов с модулями.

Проекты Visual Basic для приложений. Каждая база данных Access, библиотечная база данных или надстройка, содержащаяся в файле .mde, включает проект Visual Basic, который представляет собой набор всех модулей в проекте, включая стандартные модули и модули классов.

Имя базы данных и имя проекта могут не совпадать. Имя базы данных определяется именем файла .mdb (.mda или .mde), а имя проекта -- параметром Имя проекта во вкладке Другие диалогового окна Параметры, которое выводится при выборе команды Параметры из меню Сервис. При создании базы данных ее имя и имя проекта по умолчанию совпадают. Однако при переименовании базы данных имя проекта не изменяется автоматически. Аналогично, изменение имени проекта не влияет на имя базы данных.

В одной базе данных Microsoft Access из проекта Visual Basic может устанавливаться ссылка на проект в другой базе данных, библиотечной базе данных или надстройке, содержащейся в файле .mde. После установки ссылки становится возможным запуск процедур Visual Basic из адресуемого проекта. Можно создать ссылку на проект базы данных из проекта текущей базы данных, после чего вызывать его функции так же, как если бы они были описаны в текущей базе данных.

Для создания ссылки на проект из другого проекта необходимо:

1. Открыть окно модуля.

2. Выбрать в меню Сервис команду Ссылки и выбрать нужную базу данных, библиотеку в списке или нажать кнопку Обзор в диалоговом окне Ссылки.

3. Выбрать элемент с расширением имени, соответствующим базе данных (*.mdb, *.mda, *.mde) в поле со списком Тип файла.

4. Найти требуемый файл и нажать кнопку ОК. Файл будет добавлен в список ссылок, выводящихся в диалоговом окне Ссылки.

5. Установить флажок возле элемента списка.

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

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

При установке ссылки на проект или библиотеку типов из Microsoft Access и последующем переносе файла, который содержит этот проект или библиотеку, в другую папку Access попытается найти файл и переопределить ссылку. Если в системном реестре Windows имеется запись RefLibPaths, то поиск начнется с этого пути. Если такой записи в реестре нет, то поиск будет проводиться сначала в текущей папке, а затем во всех папках на диске. Запись RefLibPaths создается с помощью редактора реестра Windows в разделе \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access.

Создание модулей. Новый модуль можно создать, находясь в любом окне базы данных Access. Для этого необходимо:

1. Выбрать команду Модуль или Модуль класса в меню Вставка либо в списке кнопки Новый объект. Откроется окно пустого модуля.

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

3. Для сохранения модуля нажать кнопку Сохранить на панели инструментов и задать имя модуля в диалоговом окне Сохранение.

После сохранения модуля его имя появляется во вкладке Модули окна базы данных. Чтобы открыть модуль, нужно нажать кнопку Конструктор окна базы данных либо кнопку Программа на панели инструментов.

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

Прежде чем начать писать программный код. Возможно, наиболее важной (и часто недооцениваемой) частью процесса программирования на Visual Basic для приложений является фаза проектирования. В то время как очевидно, что необходимо проектировать пользовательский интерфейс приложения, не всегда учитывается, что в тщательном проектировании нуждается также программная структура. Структура приложения может оказывать существенное влияние, как на производительность работы, так и на удобство сопровождения кода.

Программный код в приложении Access организован иерархическим способом. Типичное приложение содержит один или больше модулей: модуль для каждой формы и отчета приложения, необязательные стандартные модули для глобального кода и необязательные модули классов. Каждый модуль содержит одну или больше процедур, которые содержат код: процедуры обработки событий, процедуры Sub или Function и процедуры Property.

Использование редактора кода. Редактор кода Visual Basic (окно модуля) -- окно, в котором составляется текст программного кода. Это высоко специализированный текстовый процессор с рядом возможностей, упрощающих написание кода Visual Basic.

Ограничения, связанные с программным кодом.

1. Модуль любого типа может содержать не более 55534 строк кода.

2. Строка кода может содержать до 1023 символов.

3. Фактическому тексту в строке может предшествовать не более 255 пробелов.

Рекомендации по написанию программного текста Разбиение длинного оператора на несколько строк. Длинную инструкцию в окне редактирования кода можно разбить на несколько строк, используя символ продолжения строки (пробел, сопровождаемый символом подчеркивания). Использование этого символа может повысить читабельность кода, как с экрана, так и в печатном виде.

За символом продолжения строки в той же строке не может следовать комментарий, и одна логическая строка кода не может содержать более 25 символов продолжения строки.

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

Добавление комментариев к коду. При чтении программного текста часто можно встретить символы или ключевые слова комментария (в Visual Basic это апостроф (') и ключевое слово Rem). Эти символы указывают компилятору Visual Basic игнорировать последующие слова данной строки. Эти слова -- замечания, помещаемые в код для удобства разработчика, а также других программистов, которым понадобится работать с текстом программы впоследствии.

Комментарии могут следовать за инструкцией в той же строке или могут занимать всю строку. Следует помнить, что комментарий не может следовать за символом продолжения строки на той же самой строке.

Соглашения именования в Visual Basic. При написании кода Visual Basic объявляется много языковых элементов (процедуры Sub и Function, переменные, константы и т. д.). Имена объявляемых элементов должны отвечать следующим требованиям:

* они должны начинаться с буквы;

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

* они могут содержать не более 255 символов. Имена элементов управления, форм, классов и модулей не должны превышать 54 символов. Эти имена могут включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (') и прямых скобок ([ ]);

* имя должно быть уникальным внутри своего контекста (области определения). Например, для локальной переменной это процедура, в которой она объявлена;

* как правило, не следует использовать имена, совпадающие с названиями функций, инструкций и методов языка Visual Basic.

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

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

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

Языковые компоненты. В процедурах Visual Basic при выполнении вычислений часто требуется сохранить некоторые временные значения -- вычислить несколько значений, сравнить их и, в зависимости от результата сравнения, выполнить с ними различные операции. Например, может понадобиться запомнить значения продаж и совокупных расходов, чтобы использовать их при вычислении совокупного дохода. Хранить значения можно в свойствах объектов, однако это сужает возможности программиста и не всегда возможно. В языке Visual Basic, как и в большинстве языков программирования, временные значения чаще всего хранятся в переменных.

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

Константы также хранят значения, но, как видно из названия, эти значения остаются постоянными в течение всей работы приложения. Использование констант может делать код более читабельным, так как с их помощью, вместо чисел, можно манипулировать мнемоническими именами. В Visual Basic имеется ряд встроенных констант, однако разработчик может создавать также пользовательские константы.

Типы данных определяют внутреннюю структуру данных Visual Basic. По умолчанию, Visual Basic использует тип данных Variant. Имеется также ряд других типов данных, которые позволяют гибко оптимизировать код по скорости выполнения и размеру.

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

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

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

3.3.2 Объявление переменных

Объявить переменную -- значит заранее сообщить программе о создании переменной, указав ее имя. Переменные объявляются путем включения в текст программы инструкции Dim (сокращение слова Dimension -- размер):

Dim имя_переменной [As тип]

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

Dim Fakt_cena As Currency, Fakt_kol As Integer

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

Имя переменной должно удовлетворять требованиям, изложенным во введении.

Необязательное предложение As тип в инструкции Dim позволяет определять тип данных или объектный тип объявляемой переменной. Тип данных определяет тип информации, содержащейся в переменной.

Имеются и другие способы объявления переменных:

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

* объявление переменной с использованием ключевого слова Public делает ее доступной в любом месте приложения;

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

Неявное объявление переменных. Объявлять переменную перед использованием ее необязательно. Например, в следующей функции переменная TempVal явно не объявляется:

Function TestFunc(num)

TempVal = Abs(num)

TestFunc = Sqr(TempVal)

End Function

Встретив имя, Visual Basic автоматически создает с таким именем переменную, которую можно использовать, как если бы она была объявлена явно. Хотя, с одной стороны, это удобно, однако в случае мелких опечаток в имени переменной это может приводить к трудноуловимым ошибкам в коде. Например, предположим, что предыдущая функция переписана еще раз:

Function TestFunc(num)

TempVal = Abs(num)

TestFunc = Sqr(TemVal)

End Function

На первый взгляд, все выглядит одинаково. Но так как в последней строке имя переменной TempVal указано с ошибкой, эта функция будет всегда возвращать ноль. Когда Visual Basic сталкивается с новым именем, он не в состоянии определить, что подразумевается -- фактическое неявное объявление новой переменной или это имя существующей переменной с ошибкой. В этом случае он создает новую переменную с таким именем, инициализируя ее нулем.

Явное объявление переменных. Чтобы избежать проблемы ошибок в именах переменных, можно предусмотреть, чтобы Visual Basic выдавал предупреждение всякий раз, когда он сталкивается с именем, не объявленным явно как переменная.

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

Option Explicit

или

В меню Сервис выбрать Параметры, открыть вкладку Модуль и установить флажок Явное описание переменных. После этого Visual Basic будет автоматически вставлять инструкцию Option Explicit в начале любых новых модулей, но не в модулях, уже созданных. Следовательно, к существующим модулям проекта Option Explicit нужно добавить вручную.

Если бы эта инструкция была в модуле, содержащем функцию TestFunc, Visual Basic интерпретировал бы TempVal и TemVal как необъявленные переменные и сгенерировал ошибки для них обеих. После этого можно было бы объявить TempVal явно:

Function TestFunc(num)

Dim TempVal

TempVal = Abs(num)

TestFunc = Sqr(TemVal)

End Function

Теперь проблема будет ясна сразу, так как Visual Basic выведет на экран сообщение об ошибке для неправильно напечатанной переменной TemVal. Так как инструкция Option Explicit безотказно отслеживает эти виды ошибок, использовать его никогда не будет лишним.

Оператор Option Explicit работает только на уровне модуля; его следует поместить в раздел Описания каждого модуля любого типа -- стандартного или класса.

3.3.3 Константы

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

В этих случаях значительно повысить удобочитаемость текста кода и облегчить его сопровождение можно вводом констант. Константа -- некое описательное мнемоническое имя, которое используется вместо числа или строки, неизменных в течение работы программы. Хотя константа в применении несколько похожа на переменную, изменять константу или назначать ей новое значение нельзя. Имеется два вида констант:

* встроенные и системные константы обеспечиваются инструментальными приложениями и элементами управления. Константы содержатся в объектных библиотеках Access, Visual Basic для приложений (VBA) и DAO. Просмотреть и выбрать их можно в окне Просмотр объектов. Другие приложения, которые содержат объектные библиотеки, такие как Microsoft Excel и Microsoft Project, также предоставляют наборы констант, которые можно адресовать через окно диалога Ссылки и использовать с объектами, методами и свойствами этих приложений. Константы также определены в библиотеке объектных модулей для каждого элемента управления ActiveX;

* символические, или пользовательские, константы, объявляемые в инструкции Const.

В Visual Basic имена констант приводятся в формате смешанного регистра, с префиксом, указывающим библиотеку объектных модулей, в которой данная константа определена. Имена констант объектных библиотек Visual Basic и Visual Basic для приложений предваряются префиксом "Vb" -- например, vbTileHorizontal. Константы из объектной библиотеки доступа к данным DAO содержат префикс "db" -- например, dbRelationUnique, а константы Access -- префикс "Ас", например, AcDataTransferType.

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

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

[имя_библиотеки.][имя_модуля.]имя_константы

имя_библиотеки-- обычно имя класса элемента управления или библиотеки.

имя_модуля-- имя модуля библиотеки, в котором определена константа.

имя_константы -- имя константы. Каждый из этих элементов определен в библиотеке объектных модулей и может быть доступен в окне Просмотр объектов.

3.3.4 Тип данных Variant

Переменная Variant способна хранить все определенные системой типы данных. Выполнять преобразования между этими типами данных нет необходимости -- при взаимных присвоениях переменных Variant Visual Basic автоматически выполняет любое необходимое преобразование. Например:

Dim VarVariant ' Variant по умолчанию

VarVariant = "20" ' VarVariant содержит "20" (двухсимвольная строка).

VarVariant = VarVariant + 77 ' VarVariant теперь содержит числовое значение 97

VarVariant = "Access " & VarVariant ' VarVariant теперь содержит ' "Access 97" (строка)

Хотя с переменными Variant можно выполнять операции, не задумываясь о виде данных, который они содержат, с этим типом данных связаны некоторые нюансы, которые следует всегда иметь в виду:

* при выполнении с данными Variant арифметических операций или функций, переменные Variant должны содержать нечто, что может интерпретироваться как число;

* при сцеплении строк нужно использовать операцию & вместо операции +.

В дополнение к способности работать подобно другим стандартным типам данных переменные Variant могут также содержать четыре специальных значения: Empty, Null, Nothing и Error.

Значение Empty. Иногда требуется узнать, было ли переменной когда-либо присвоено значение. До присвоения значений переменная Variant имеет значение Empty -- специальное значение, отличное от 0, строки нулевой длины ("") или значения Null. Протестировать переменную на значение Empty можно функцией IsEmpty:

If IsEmpty(Z) Then Z = 0

Когда Variant содержит значение Empty, его можно использовать в выражениях; в зависимости от выражения это значение обрабатывается либо как 0, либо как строка нулевой длины.

Значение Empty исчезает, как только переменной Variant присвоено любое значение (включая 0, нулевую строку или Null). Установить переменную Variant обратно в Empty можно присвоением переменной ключевого слова Empty.

Значение Null. Тип данных Variant может содержать другое специальное значение: Null. Null обычно используется в приложениях базы данных для обозначения неизвестных или отсутствующих данных. Из-за способа его использования в базах данных значение Null имеет некоторые специфические особенности:

* выражения, включающие Null, всегда возвращают Null. Таким образом, Null, как говорят, "размножается" по выражению; если часть выражения оценивается как Null, все выражение оценивается как Null;

* при передаче Null, Variant, содержащего Null, или выражения, которое оценивается как Null, в качестве параметра функций большинство функций возвращает Null;

* значения Null размножаются через встроенные функции, которые возвращают тип данного Variant.

Присвоить Null можно ключевым словом Null:

Z = Null

Для выяснения, содержит ли Null переменная Variant, используется функция IsNull:

If IsNull(X) And IsNull(Y) Then

Z = Null

Else

Z = 0

End If

При попытке присвоить Null переменной любого типа, отличного от Variant, происходит ошибка периода выполнения.

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

Значение Error. Error в переменных Variant-- специальное значение, используемое для индикации того, что в процедуре имеет место условие ошибки. Однако, в отличие от других видов ошибок, нормальная обработка ошибок уровня приложения в данном случае не происходит. Это дает разработчику в работе с ошибками дополнительные возможности. Значения Error создаются с помощью функции CVErr преобразованием вещественных чисел к значениям ошибок.

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

Специальное значение Nothing используется при работе с объектами, о чем речь ниже.

3.3.5 Пользовательские типы данных

Объединяя переменные нескольких различных типов, можно создавать пользовательские типы данных.

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

Пользовательский тип создается инструкцией Type, которая должна быть помещена в раздел Описания модуля. Пользовательские типы данных с соответствующим ключевым словом могут быть объявлены как Private или Public. Например:

Private Type DataTypel

или

Public Type DataType2

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

Объявление переменных пользовательского типа. Переменные одного пользовательского типа можно объявлять как локальные, уровня модуля private или уровня модуля public:

Dim MySystem As SystemInfo, YourSystem As SystemInfo

Процедура / модуль

Можно создать

пользовательский

тип как.

Переменные

пользовательского

типа могут быть

объявлены

Процедуры

Нельзя

Только локально

Стандартные модули

Private или Public

Private или Public

Модули форм и отчетов

Только Private

Только Private

Модули классов

Только Private

Только Private

Присвоение и получение значений. Присвоение и отбор значений из элементов таких переменных выполняется аналогично установке и получению значений свойств объектов:

MySystem.CPU = "485"

If MySystem.MadeDate < #1/1/95# Then

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

YourSystem = MySystem

Пользовательские типы, содержащие массивы. Пользовательский тип может содержать обычный массив (фиксированного размера). Например:

Type SystemInfo

CPU As Variant

Memory As Long

DiskDrives (5) As String ' Массив фиксированного размера

VideoColor As Integer

Cena As Currency

MadeDate As Variant

End Type

Он может также содержать динамический массив:

Type SystemInfo

CPU As Variant

Memory As Long

DiskDrivesO As String ' Динамический массив

VideoColor As Integer

Cena As Currency

MadeDate As Variant

End Type

Обращение к значениям массива внутри пользовательского типа выполняется аналогично обращению к свойству объекта:

Dim MySystem As SystemInfo

ReDim MySystem.DiskDrives (3)

MySystem.DiskDrives(0) = 1.44 MB"

Можно также объявить массив пользовательских типов:

Dim AllSystems(100) As SystemInfo

Следуя тем же правилам, можно обратиться к компонентам такой структуры данных:

AllSystems(5).CPU = "485DX"

AllSystems(5).DiskDrives(2) = "530M SCSI"

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

Sub FillSystem (System1 As SystemInfo)

Sysiem1.CPU = ПолеПроцессор.Text

System1.Memory = ПолеПамять.Text

Sysiem1.Cena = ПолеЦена.Text

System1 .MadeDate = Now

End Sub

Если требуется передать пользовательский тип в модуле класса или формы, процедура должна быть private.

Пользовательские типы, содержащие объекты. Пользовательские типы могут также содержать объекты:

Private Type SchetVvod

frmInput as Form

dbSchet as Database

End Type

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

3.3.6 Операторы, команды и выражения в VBA

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

Арифметические операторы. В инструкциях Visual Basic доступны следующие арифметические операции: ^ (степень числа), * (умножение), / (деление), \, (целочисленное деление), Mod (деление по модулю), + (сумма), - (вычитание и унарный минус).

Логические операторы. Логические операции используются для комбинирования или модификации выражений типа True/False. Логические операции языка Visual Basic следующие: And (логическая конъюнкция), Eqv (логическая эквивалентность), Imp (логическая импликация), Not (логическое отрицание), Or (логическая дизъюнкция), Xor (логическое исключение).

Операторы конкатенации. Используются для строковой конкатенации двух выражений и имеют две разновидности & и +.

Операторы сравнения. В VBA используются следующие операторы сравнения: = (равно), <(меньше), <= (меньше или равно), >(больше), >= (больше или равно),<> (не равно), оператор Is (используется для сравнения двух переменных, содержащих объектные ссылки, оператор Like (используется для сравнения двух строк).

  • Литература

1. Джексон Г. Проектирование реляционных баз данных для использования с микроЭВМ.М.,Мир,1991.

2. Четвериков В.Н. и др.Базы и банки данных. М., Высшая школа,1987.

3. Полищук Ю.М. Автоматизированные банки информации. М.,Мир, 1989.

4. Кочетыгов А.А., Моторных В.В. Базы и банки данных. Учебное пособие.Тула,ТГТУ,1995.

5. Глушаков С.В., Ломотько Д.В. Базы данных. Учебный курс. Харьков, Фолио, 2000.

5. Корнелюк В.К., Веккер ЗЕ., Зиновьев Н.Б. Access 97. М., СОЛОН, 1998.

7. Карпова Т. Базы данных: модели, разработка, реализация. Учебник. СПб, ПИТЕР, 2001.

8. Шкарина Л. Язык SQL. Учебный курс. СПб, ПИТЕР,2001.

9. Куртер Дж.,Маркви А. Wicrosoft Office 2000. Учебный курс. СПб, ПИТЕР, 2000.

10.Нагао М., Катаяма Т., Уэмура С. Структура и базы данных. М., Мир, 1986.

11. Кузьменко В.Г. VBA 2000 М., Бином, 2000.

12. Ахмадеев И.А. Проектирование баз данных. Учебное пособие. Набережные Челны, КамПИ, 1998.

13. Ахмадеев И.А. Программирование в Access. Курс лекций. Набережные Челны, КамПИ, 2003.

14. СУБД Access. Лабораторный практикум. Составитель Ахмадеев И.А. Набережные Челны, КамПИ, 2000.

Размещено на Allbest.ru


Подобные документы

  • Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.

    реферат [57,1 K], добавлен 20.12.2010

  • Базы данных (БД) и системы управления базами данных (СУБД) как основы современной информационной технологии, их роль в хранении и обработке информации. Этапы реализации БД, средств ее защиты и поддержки целостности. Протоколы фиксации и отката изменений.

    презентация [364,2 K], добавлен 22.10.2013

  • Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.

    курсовая работа [7,8 M], добавлен 13.02.2023

  • Основные этапы проектирования базы данных. Access как система управления базами данных (СУБД), ее предназначение, отличительные возможности. Работа с таблицами, их создание и редактирование. Порядок создания запросов. Способы защиты баз данных.

    лабораторная работа [3,1 M], добавлен 18.08.2009

  • Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.

    курсовая работа [1,8 M], добавлен 04.02.2013

  • Базы данных и системы управления базами данных. Структура простейшей базы данных, свойства полей. Понятие языка SQL. Проектирование баз данных, режимы работы, объекты. СУБД Microsoft Access. Создание базы данных "Электротовары" средствами Visual FoxPro.

    курсовая работа [5,7 M], добавлен 29.04.2014

  • Изучение основных понятий баз данных: структура простейшей базы данных, компоненты базы данных Microsoft Access. Проектирование базы данных "Туристическое агентство" в СУБД Access 2010, в которой хранятся данные о клиентах, которые хотят поехать отдыхать.

    курсовая работа [3,3 M], добавлен 20.09.2013

  • Основные принципы проектирования реляционных баз данных и их практическая реализация в MS Access. Концептуальная и логическая модели реляционной базы данных, ее физическое проектирование. Автоматизация процесса взаимодействия с клиентами и поставщиками.

    курсовая работа [2,8 M], добавлен 10.03.2015

  • Операции в системе управления базами данных (СУБД). MS Access как функционально полная реляционная СУБД. Разработка реляционных моделей баз данных экономического направления. Применение прикладных программ для решения экономико-управленческих задач.

    курсовая работа [2,1 M], добавлен 14.01.2015

  • Понятие и сущность базы данных, их классификация и характеристика. Системы управления базами данных. СУБД структуры "сервер-клиент", его суть. Microsoft Access - функционально полная реляционная СУБД. Предназначение СУБД Access, и описание ее работы.

    реферат [44,3 K], добавлен 27.02.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.