ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Автоматизация выполнения задач обработки данных с помощью макрокомандИзучая текстовый процессор Word и табличный процессор Excel, мы уже знакомились с автоматизацией операций в Microsoft Office. СУБД Microsoft Access для целей автоматизации операций с объектами баз данных использует два типа средств: макросы и модули. Макросом называют набор из одной или более макрокоманд, выполняющих определенные операции, такие как открытие форм или печать отчетов. Например, при нажатии пользователем определенной кнопки можно запустить макрос, который распечатает отчет. Макрос может быть как собственно макросом, состоящим из последовательности макрокоманд, так и группой макросов. В некоторых случаях для решения, должна ли в запущенном макросе выполняться определенная макрокоманда, может применяться условное выражение. Модулем называют набор описаний и процедур на языке Visual Basic для приложений, собранных в одну программную единицу. В Microsoft Access многие действия выполняются с помощью макросов или через интерфейс пользователя. Во многих других СУБД для решения тех же самых задач требуется программирование. Выбор между созданием макроса или разработкой программы Visual Basic для приложений обычно определяется требуемыми действиями. В каких случаях целесообразнее использовать макрос? Макрос является удобным средством выполнения простых задач, таких как: • открытие и закрытие форм; • вывод на экран и скрытие панелей инструментов или запуск отчетов; • связывание различных объектов базы данных; • определение общих назначенных клавиш; • выполнение макрокоманды или набора макрокоманд при открытии базы данных. Программы на Visual Basic используют вместо макросов в следующих случаях. • Упрощение управления базой данных. Поскольку макросы являются объектами, существующими отдельно от использующих их форм и отчетов, поддержание базы данных, в которой реакция на события в формах и отчетах определяется многими макросами, становится достаточно затруднительным. В отличие от этого процедуры обработки события Visual Basic являются встроенными в описания соответствующих форм и отчетов. При переносе формы или отчета из одной базы данных в другую встроенные процедуры обработки события автоматически переносятся вместе с формой или отчетом. • Создание пользовательских функций. В Access определен ряд встроенных функций, например функция IPmt, которая рассчитывает проценты по платежам. Встроенные функции можно использовать для выполнения вычислений без необходимости разрабатывать сложные выражения. Язык Visual Basic позволяет пользователям создавать также собственные функции как для решения задач, выходящих за рамки возможных для встроенных функций, так и для замены сложных выражений, содержащих встроенные функции. Кроме того, создаваемые пользователем функции используются в выражениях для выполнения общих операций над несколькими объектами. • Скрытие сообщений об ошибках. Стандартные сообщения об ошибках Microsoft Access, выводимые на экран при возникновении нештатных ситуаций во время работы с базой данных, могут оказаться малопонятными для пользователя, особенно если этот пользователь плохо знаком с Access. С помощью Visual Basic можно перехватывать ошибку при ее возникновении и либо выводить собственное сообщение об ошибке, либо предпринимать определенные действия. • Создание или обработка объектов. В большинстве случаев удобнее создавать или изменять объекты в режиме конструктора. Однако в некоторых ситуациях приходится работать с описанием объекта в программе. Средства Visual Basic позволяют выполнять обработку всех объектов в базе данных, а также самой базы данных. • Выполнение действий на уровне системы. Выполнение в макросе макрокоманды «ЗапускПриложения» (RunApp) позволяет запускать из собственного приложения другое приложение, работающее в среде Microsoft Windows или MS-DOS, однако этим возможности использования макроса вне Microsoft Access практически исчерпываются. Средства Visual Basic позволяют проверять существование файлов, использовать программирование объектов или динамический обмен данными (DDE) для связи с другими приложениями для Windows, например Microsoft Excel, а также вызывать функции из библиотек динамической компоновки (DLL) Windows. • Обработка записей по одной. Инструкции Visual Basic позволяют перебирать наборы записей по одной и выполнять определенные действия над отдельной записью. В отличие от этого макросы позволяют работать только с целым набором записей. • Передача аргументов в процедуры Visual Basic. Аргументы для макрокоманд можно задавать в нижней части окна макроса при его создании, но при выполнении макроса изменять их невозможно. Однако при помощи Visual Basic можно передавать аргументы в выполняемую программу или использовать в качестве значений аргументов переменные; макросы не позволяют делать это. Передача аргументов повышает гибкость выполнения процедур Visual Basic. Использование модулей требует достаточно серьезной программистской подготовки, сначала мы рассмотрим использование макросов как средств автоматизации в MS Access, используемых пользователями, не владеющими основами программирования на Visual Basic. Макросы в Microsoft Access 2000 являются достаточно эффективным средством автоматизации, так как в этой версии СУБД представлены новые макрокоманды, с помощью которых можно открывать страницы доступа к данным и новые объекты базы данных, диаграммы, сохраненные процедуры и представления в проекте Microsoft Access (.adp). Связь между таблицами и целостность данных До сих пор мы рассматривали операции с объектами на примере базы данных, состоящей из одной таблицы, но на практике, как правило, в составе базы данных имеется несколько таблиц. Для координации таблиц между ними устанавливается связь. Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях, обычно между полями, имеющими одинаковые имена в обеих таблицах. В большинстве случаев с ключевым полем одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы. При установлении связи между таблицами возможны три типа связей. Отношение «один-ко-многим». Это наиболее часто используемый тип связи между таблицами. В отношении «один-ко-многим» каждой записи в таблице А могут соответствовать несколько записей в таблице В, но запись в таблице В не может иметь более одной соответствующей ей записи в таблице А. Отношение «многие-ко-многим». При этом типе связи одной записи в таблице А могут соответствовать несколько записей в таблице В, а одной записи в таблице В — несколько записей в таблице А. Этот тип связи возможен только с помощью третьей (связующей) таблицы, первичный ключ которой состоит из двух полей, являющихся внешними ключами таблиц А и В. Отношение «многие-ко-многим» по сути дела представляет собой два отношения «один-ко-многим» с третьей таблицей. Например, отношение «многие-ко-многим» между таблицами «Заказы» и «Товары» определяется путем создания двух отношений «один-ко-многим» с таблицей «Заказано». Отношение «один-к-одному». При отношении «один-к-одному» запись в таблице А может иметь не более одной связанной записи в таблице В и наоборот. Отношения этого типа используются не очень часто, поскольку большая часть сведений, связанных таким образом, может быть помещена в одну таблицу. Отношение «один-к-одному» может использоваться для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице. Например, можно создать таблицу для отслеживания участия сотрудников в благотворительных спортивных мероприятиях. Тип отношения в создаваемой Microsoft Access связи между таблицами зависит от способа определения связываемых полей. Отношение «один-ко-многим» создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс. Отношение «один-к-одному» создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы. Отношение «многие-ко-многим» фактически является двумя отношениями «один-ко-многим» с третьей таблицей, первичный ключ которой состоит из полей — внешних ключей двух других таблиц. Целостность данных Для поддержания связей между записями в связанных таблицах, а также обеспечения защиты от случайного удаления или изменения связанных данных в Microsoft Access используется механизм поддержки целостности данных. Целостность данных означает: • в связанное поле подчиненной таблицы можно вводить только те значения, которые имеются в связанном поле главной таблицы; • из главной таблицы нельзя удалить запись, у которой значение связанного поля совпадает хотя бы с одним значением того же поля в подчиненной таблице. Установить целостность данных можно, если выполнены следующие условия: 1. Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс. В большинстве случаев связывают первичный ключ (представленный в списке полей полужирным шрифтом) одной таблицы с соответствующим ему полем (часто имеющим то же имя) второй таблицы, которое называют полем внешнего ключа. 2. Связанные поля не обязательно должны иметь одинаковые имена, но они должны иметь одинаковые типы данных (из этого правила существуют два исключения) и иметь содержимое одного типа. Кроме того, связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля (FieldSize). Исключения. Поле счетчика можно связывать с числовым полем, свойство Размер поля (FieldSize)которого имеет значение Длинное целое;также поле счетчика можно связать с числовым, если для обоих полей в свойстве Размер поля (FieldSize)задано значение Код репликации. 3. Обе таблицы принадлежат одной базе данных Microsoft Access. Если таблицы являются связанными, то они должны быть таблицами Microsoft Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть- открыта. Для связанных таблиц из баз данных других форматов установить целостность данных невозможно. Примечание. Допускается определение связей не только для таблиц, но и для запросов. Причем для запросов соблюдение целостности данных не обязательно. Установив целостность данных, необходимо следовать следующим правилам: 1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод значений Null, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести значение Null в поле «КодКлиента». 2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику. 3. Невозможно изменить значение первичного ключа в главной таблице, если существуют записи, связанные с данной записью. Например, невозможно изменить код сотрудника в таблице «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к этому сотруднику. Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет. Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Режимы каскадного обновления и каскадного удаления. Для отношений, в которых проверяется целостность данных, пользователь имеет возможность указать, следует ли автоматически выполнять для связанных записей операции каскадного обновления и каскадного удаления. Если включить данные параметры, станут возможными операции удаления и обновления, которые в противном случае запрещены условиями целостности данных. Чтобы обеспечить целостность данных при удалении записей или изменении значения первичного ключа в главной таблице, автоматически вносятся необходимые изменения в связанные таблицы. Если при определении отношения установить флажок Каскадное обновление связанных полей, любое изменение значения первичного ключа главной таблицы приведет к автоматическому обновлению соответствующих значений во всех связанных записях. Например, при изменении кода клиента в таблице «Клиенты» будет автоматически обновлено поле «КодКлиента» во всех записях таблицы «Заказы» для заказов каждого клиента, поэтому целостность данных не будет нарушена. Microsoft Access выполнит каскадное обновление без ввода предупреждающих сообщений. Примечание. Если в главной таблице ключевым полем является поле счетчика, то установка флажка Каскадное обновление связанных полей не приведет к каким-либо результатам, так как изменить значение поля счетчика невозможно. Если при определении отношения установить флажок Каскадное удаление связанных записей, любое удаление записи в главной таблице приведет к автоматическому удалению связанных записей в подчиненной таблице. Например, при удалении из таблицы «Клиенты» записи конкретного клиента будут автоматически удалены все связанные записи в таблице «Заказы» (а также записи в таблице «Заказано», связанные с записями в таблице «Заказы»). Если записи удаляются из формы или таблицы при установленном флажке Каскадное удаление связанных записей, Microsoft Access выводит предупреждение о возможности удаления связанных записей. Если же записи удаляются с помощью запроса на удаление, то Microsoft Access удаляет записи автоматически без вывода предупреждения. Определение связей между таблицами Связь между таблицами определяется путем добавления связываемых таблиц в окно «Схема данных» с последующим перетаскиванием ключевого поля из одной таблицы в другую. Также можно определять связи с помощью клавиатуры. Создавать или изменять связи между открытыми таблицами нельзя. Для определения связей между таблицами закройте все открытые таблицы. Создание связей между таблицами. Установление связей между таблицами рассмотрим на конкретном примере — базе данных Library (библиотека), состоящей из двух таблиц: Книги и (табл. 12.5). Не нашли, что искали? Воспользуйтесь поиском:
|