10.01.2015 Views

Введение в Access - eDrive

Введение в Access - eDrive

Введение в Access - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

В. М. Водо<strong>в</strong>озо<strong>в</strong><br />

<strong>В<strong>в</strong>едение</strong> <strong>в</strong> <strong>Access</strong><br />

Санкт-Петербург<br />

2003


К 681.3.016<br />

В.М.Водо<strong>в</strong>озо<strong>в</strong>. <strong>В<strong>в</strong>едение</strong> <strong>в</strong> <strong>Access</strong>. СПб, 2003. 35 с.<br />

Рассмотрены осно<strong>в</strong>ы создания баз данных <strong>Access</strong> для начинающих.<br />

© В.М.Водо<strong>в</strong>озо<strong>в</strong>, 2003.


Огла<strong>в</strong>ление<br />

<strong>В<strong>в</strong>едение</strong>..............................................................................................................................................4<br />

Модели предста<strong>в</strong>ления данных ........................................................................................................4<br />

Обзор и классификация со<strong>в</strong>ременных СУБД..................................................................................5<br />

Этапы проектиро<strong>в</strong>ания информационных систем..........................................................................7<br />

1 этап проектиро<strong>в</strong>ания: функциональное моделиро<strong>в</strong>ание.............................................................8<br />

2 этап проектиро<strong>в</strong>ания: инфологическое моделиро<strong>в</strong>ание..............................................................8<br />

3 этап проектиро<strong>в</strong>ания: даталогическое моделиро<strong>в</strong>ание...............................................................9<br />

4 этап проектиро<strong>в</strong>ания: физическое моделиро<strong>в</strong>ание <strong>в</strong> MS <strong>Access</strong>...............................................12<br />

Организация <strong>Access</strong> .....................................................................................................................12<br />

Среда разработки баз данных .....................................................................................................13<br />

Таблицы.............................................................................................................................................14<br />

Чтение и пра<strong>в</strong>ка таблиц...............................................................................................................14<br />

Создание таблиц...........................................................................................................................17<br />

С<strong>в</strong>язы<strong>в</strong>ание таблиц.......................................................................................................................19<br />

Запросы .............................................................................................................................................20<br />

Язык запросо<strong>в</strong> QBE......................................................................................................................20<br />

Язык запросо<strong>в</strong> SQL ......................................................................................................................23<br />

Формы и отчеты ...............................................................................................................................28<br />

Чтение и пра<strong>в</strong>ка данных через форму........................................................................................28<br />

Создание формы...........................................................................................................................29<br />

Отчеты ...........................................................................................................................................31<br />

Макросы............................................................................................................................................32


<strong>В<strong>в</strong>едение</strong><br />

В ходе раз<strong>в</strong>ития информационных систем были сформулиро<strong>в</strong>аны принципы организации<br />

больших масси<strong>в</strong>о<strong>в</strong> данных:<br />

• принцип интеграции данных, <strong>в</strong> соот<strong>в</strong>етст<strong>в</strong>ии с которым для хранения информации<br />

целесообразно образо<strong>в</strong>ы<strong>в</strong>ать централизо<strong>в</strong>анную динамически обно<strong>в</strong>ляемую модель<br />

предметной области,<br />

• принцип неза<strong>в</strong>исимости прикладных программ от данных, т.е. отделения логической<br />

модели данных от средст<strong>в</strong> упра<strong>в</strong>ления ими.<br />

Удо<strong>в</strong>лет<strong>в</strong>орение этим принципам с<strong>в</strong>язано с <strong>в</strong>ыделением единого для <strong>в</strong>сех задач блока<br />

данных, назы<strong>в</strong>аемого базой данных и разработкой единой упра<strong>в</strong>ляющей программы для<br />

манипулиро<strong>в</strong>ания данными, назы<strong>в</strong>аемой системой упра<strong>в</strong>ления базами данных — СУБД.<br />

База данных организуется и обрабаты<strong>в</strong>ается <strong>в</strong> накопителях <strong>в</strong> соот<strong>в</strong>етст<strong>в</strong>ии с<br />

определенными пра<strong>в</strong>илами хранения и доступа. Логическая а<strong>в</strong>тономность данных я<strong>в</strong>ляется<br />

пер<strong>в</strong>ым сущест<strong>в</strong>енным отличием баз данных от прочего программного обеспечения. Строго<br />

ого<strong>в</strong>оренная принадлежность данных к определенным классам и их безусло<strong>в</strong>ная типизация<br />

отличает базу данных от тексто<strong>в</strong>ых и табличных процессоро<strong>в</strong>, а широкая гамма допустимых<br />

операций над множест<strong>в</strong>ами я<strong>в</strong>ляется <strong>в</strong>ажным преимущест<strong>в</strong>ом ее перед пакетами прикладных<br />

программ и системами программиро<strong>в</strong>ания. Выделение базы данных как особой части<br />

программного обеспечения способст<strong>в</strong>ует:<br />

• эффекти<strong>в</strong>ной структуризации информации;<br />

• с<strong>в</strong>едению к минимуму по<strong>в</strong>торяющихся данных;<br />

• ускорению обработки информации прямо на носителе;<br />

• удобст<strong>в</strong>у обно<strong>в</strong>ления документо<strong>в</strong>;<br />

• обеспечению целостности данных;<br />

• регулиро<strong>в</strong>анию пра<strong>в</strong> доступа к информации;<br />

• облегчению а<strong>в</strong>томатизации обработки данных и <strong>в</strong>едения отчетности.<br />

Модели предста<strong>в</strong>ления данных<br />

Различают иерархическую, сете<strong>в</strong>ую, реляционную и ряд других моделей данных.<br />

Иерархическая модель отражает структуру с<strong>в</strong>язей между сущностями <strong>в</strong> <strong>в</strong>иде дере<strong>в</strong>а с<br />

узлами, <strong>в</strong> которых хранятся данные, и <strong>в</strong>ет<strong>в</strong>ями, с<strong>в</strong>язы<strong>в</strong>ающими их между собой. Узел, <strong>в</strong><br />

который не <strong>в</strong>ходит ни одна <strong>в</strong>ет<strong>в</strong>ь, назы<strong>в</strong>ается корнем. В с<strong>в</strong>ою очередь, любой узел дере<strong>в</strong>а —<br />

это <strong>в</strong> то же <strong>в</strong>ремя и корень поддере<strong>в</strong>а. Число таких поддере<strong>в</strong>ье<strong>в</strong> именуется степенью узла.<br />

Конце<strong>в</strong>ой узел, имеющий нуле<strong>в</strong>ую степень, назы<strong>в</strong>ается листом. Таким образом, объекты,<br />

описы<strong>в</strong>аемые иерархической моделью, должны удо<strong>в</strong>лет<strong>в</strong>орять определенным ограничениям:<br />

узлы могут обмени<strong>в</strong>аться информацией только через <strong>в</strong>ышестоящие узлы.<br />

Снятие части этих ограничений послужило толчком к созданию сете<strong>в</strong>ой модели,<br />

объектами которой я<strong>в</strong>ляются и записи, и с<strong>в</strong>язи между ними. Сете<strong>в</strong>ая модель предста<strong>в</strong>лена<br />

обширным множест<strong>в</strong>ом систем, среди которых наиболее раз<strong>в</strong>итой считается стандарт на<br />

архитектуру и языко<strong>в</strong>ый интерфейс CODASYL (Conference On Data System Languages).<br />

Согласно этому стандарту, между объектами базы данных устана<strong>в</strong>ли<strong>в</strong>аются отношения<br />

наследо<strong>в</strong>ания типа «родитель-потомок», причем любой компонент может оказаться<br />

потомком нескольких «родителей» и наоборот. С<strong>в</strong>язи <strong>в</strong> базе данных сете<strong>в</strong>ого типа<br />

реализуются с использо<strong>в</strong>анием системы указателей. Поскольку каждый компонент данных<br />

должен содержать ссылки на другие компоненты, такая модель требует значительных<br />

ресурсо<strong>в</strong> памяти и <strong>в</strong>ысокого быстродейст<strong>в</strong>ия компьютера. В настоящее <strong>в</strong>ремя <strong>в</strong>едутся<br />

исследо<strong>в</strong>ания <strong>в</strong> области создания объектно-ориентиро<strong>в</strong>анных сете<strong>в</strong>ых баз данных,


5<br />

финансируемые такими компаниями, как IBM <strong>в</strong> США, Франгоферо<strong>в</strong>ский институт<br />

программного обеспечения и системотехники <strong>в</strong> ФРГ и др. Примером коммерческой сете<strong>в</strong>ой<br />

базы данных для персональных компьютеро<strong>в</strong> я<strong>в</strong>ляется DB-Vista (Century Software), а для<br />

больших ЭВМ — IDMS.<br />

Идея реляционной, или табличной, организации данных принадлежит польскому<br />

математику З.Я. Слонимскому, <strong>в</strong> 1845 г. удостоенному Демидо<strong>в</strong>ской премии Петербургской<br />

академии наук за изобретение математической машины, использующей таблицы с<br />

определенными пра<strong>в</strong>илами считы<strong>в</strong>ания. До него многочисленные таблицы —<br />

арифметические, тригонометрические, логарифмические — были широко распространены <strong>в</strong><br />

Е<strong>в</strong>ропе еще <strong>в</strong> 17-18 <strong>в</strong>еках и применялись <strong>в</strong> на<strong>в</strong>игации, астрономии, банко<strong>в</strong>ском деле,<br />

архитектуре. Эти таблицы постоянно дополнялись, перепро<strong>в</strong>ерялись, и каждое переиздание<br />

их требо<strong>в</strong>ало труда множест<strong>в</strong>а специалисто<strong>в</strong> и содержало ошибки, неизбежные при ручных<br />

расчетах и переписы<strong>в</strong>ании. Концепция реляционной модели была разработана Э.Ф. Коддом <strong>в</strong><br />

70-х годах нашего <strong>в</strong>ека. Согласно этой концепции, реляционная база данных — это<br />

множест<strong>в</strong>о таблиц (отношений), содержащих <strong>в</strong>сю информацию, характеризующую<br />

предметную область.<br />

Таблица описы<strong>в</strong>ает множест<strong>в</strong>о объекто<strong>в</strong> одного класса. С<strong>в</strong>едения о каждом объекте<br />

предста<strong>в</strong>ляется <strong>в</strong> таблице <strong>в</strong> <strong>в</strong>иде отдельной записи, каждый элемент которой размещен <strong>в</strong><br />

с<strong>в</strong>оем поле. Запись, состоящую из элементо<strong>в</strong> одного типа, назы<strong>в</strong>ают масси<strong>в</strong>ом данных, или<br />

<strong>в</strong>ектором, кортежем. Сим<strong>в</strong>ольный масси<strong>в</strong> принято имено<strong>в</strong>ать строкой. В с<strong>в</strong>ою очередь,<br />

таблица однотипных записей предста<strong>в</strong>ляет собой д<strong>в</strong>ухмерный масси<strong>в</strong>, а число<strong>в</strong>ая таблица —<br />

матрицу. Число полей <strong>в</strong> таблице характеризует ее степень, число записей — мощность, а их<br />

произ<strong>в</strong>едение — размер таблицы, то есть общее число ее элементо<strong>в</strong>. В при<strong>в</strong>еденном здесь<br />

примере степень таблицы ра<strong>в</strong>на трем, мощность<br />

д<strong>в</strong>ум, а размер шести.<br />

Обычно мощность таблицы я<strong>в</strong>ляется<br />

переменной <strong>в</strong>еличиной, тогда как степень<br />

фиксируется при проектиро<strong>в</strong>ании базы данных.<br />

Сра<strong>в</strong>нительная простота инструментальных средст<strong>в</strong> поддержки реляционной модели<br />

я<strong>в</strong>ляется ее достоинст<strong>в</strong>ом. Но по<strong>в</strong>едение объекто<strong>в</strong> реляционная таблица не описы<strong>в</strong>ает,<br />

поэтому методы обработки данных относятся к компетенции СУБД, а не базы данных.<br />

Отсутст<strong>в</strong>ующие функций обработки данных, их анализа и синтеза переклады<strong>в</strong>аются на такие<br />

инструменты, как табличные процессоры, графические программы и специализиро<strong>в</strong>анные<br />

пакеты прикладных программ. Однако тем же Э.Ф. Коддом был предложен метод<br />

динамической аналитической обработки OLAP (On-Line Analitical Processing), который<br />

ускоряет решение указанных задач. Он предполагает многомерное концептуальное<br />

предста<strong>в</strong>ление данных и их прозрачность для пользо<strong>в</strong>ателя, доступность и <strong>в</strong>ысокую<br />

произ<strong>в</strong>одительность <strong>в</strong> работе. Перспекти<strong>в</strong>на и гибридная объектно-реляционная модель,<br />

сочетающая способность реляционных баз данных эффекти<strong>в</strong>но <strong>в</strong>ыполнять обработку<br />

небольших объемо<strong>в</strong> информации с <strong>в</strong>озможностями объектно-ориентиро<strong>в</strong>анных баз данных<br />

поддержи<strong>в</strong>ать динамические методы обработки.<br />

Обзор и классификация со<strong>в</strong>ременных СУБД<br />

Фирма Год Президент<br />

Microsoft 1975 Балмер<br />

Apple 1975 Джобс<br />

Различают персональные («легкие») и корпорати<strong>в</strong>ные («тяжелые») СУБД.<br />

Персональная реляционная СУБД <strong>Access</strong> фирмы Microsoft характеризуется тесной<br />

интеграцией с другими приложениями этой фирмы. Сущест<strong>в</strong>енный элемент ее – комплекс<br />

специальных драй<strong>в</strong>еро<strong>в</strong> открытого интерфейса ODBC (Open DataBase Connectivity) —<br />

обеспечи<strong>в</strong>ает с<strong>в</strong>язь с реляционными СУБД других произ<strong>в</strong>одителей, <strong>в</strong>заимодейст<strong>в</strong>ие между<br />

различными форматами баз данных. <strong>Access</strong> располагает с<strong>в</strong>оим процедурным языком,<br />

реализует запросы на примере (QBE) и запросы SQL <strong>в</strong> сочетании со <strong>в</strong>семи преимущест<strong>в</strong>ами<br />

Windows <strong>в</strong> графике, эффекти<strong>в</strong>но работает <strong>в</strong> сети, акти<strong>в</strong>но использует графические объекты.


6<br />

Система <strong>в</strong>ключает функции обмена данными и обработки файло<strong>в</strong>, формиро<strong>в</strong>ания интерфейса<br />

пользо<strong>в</strong>ателя и упра<strong>в</strong>ления периферийными устройст<strong>в</strong>ами.<br />

Персональная СУБД DBase фирмы Borland поддержи<strong>в</strong>ает языки запросо<strong>в</strong> QBE и SQL, а<br />

также <strong>в</strong>ключающие языки Си, Паскаль, ассемблеры. В соста<strong>в</strong> языка DBase <strong>в</strong>ходит более 300<br />

функций и операторо<strong>в</strong>. Запросы SQL а<strong>в</strong>томатически преобразуются <strong>в</strong> последо<strong>в</strong>ательность<br />

команд DBase. К дополнительным средст<strong>в</strong>ам языка относятся шаблоны для с<strong>в</strong>язи с<br />

а<strong>в</strong>томатическим генератором кода, утилиты создания приложений, средст<strong>в</strong>а тестиро<strong>в</strong>ания<br />

многопользо<strong>в</strong>ательских баз данных <strong>в</strong> сети и модуль запуска приложений. Язык<br />

поддержи<strong>в</strong>ает а<strong>в</strong>томатическое сохранение информации, многоуро<strong>в</strong>не<strong>в</strong>ую парольную защиту<br />

и кодиро<strong>в</strong>ание данных.<br />

Во многом подобна <strong>Access</strong> СУБД Paradox на осно<strong>в</strong>е язык PAL (Paradox Application<br />

Language) фирмы Borland, длительное <strong>в</strong>ремя удержи<strong>в</strong>а<strong>в</strong>шая лидерст<strong>в</strong>о на рынке СУБД для<br />

персональных компьютеро<strong>в</strong><br />

В <strong>Access</strong> программа может распространяеться только с интегриро<strong>в</strong>анной средой. В<br />

отличие от нее, <strong>в</strong> FoxPro (Microsoft) и Clipper (Computer Associates) гото<strong>в</strong>ые программы<br />

распространяются <strong>в</strong> <strong>в</strong>иде исполнительных модулей или динамически загружаемых<br />

библиотек. FoxPro имеет быстродейст<strong>в</strong>ие, на порядок пре<strong>в</strong>ышающее Paradox и <strong>в</strong> несколько<br />

десятко<strong>в</strong> раз — DBase, а приложения, созданные на FoxPro под MS-DOS, можно<br />

адаптиро<strong>в</strong>ать под Windows. Набор команд и функций, предлагаемых разработчикам<br />

программных продукто<strong>в</strong> <strong>в</strong> среде FoxPro, по мощи и гибкости от<strong>в</strong>ечает самым со<strong>в</strong>ременным<br />

требо<strong>в</strong>аниям к предста<strong>в</strong>лению и обработке данных. Он поз<strong>в</strong>оляет организо<strong>в</strong>ать максимально<br />

удобный пользо<strong>в</strong>ательский Windows-интерфейс. Система обеспечи<strong>в</strong>ает многоуро<strong>в</strong>не<strong>в</strong>ый<br />

доступ к файлам, упра<strong>в</strong>ление ц<strong>в</strong>етом, настройку принтеро<strong>в</strong>, генерацию экранных форм и<br />

отчето<strong>в</strong>, поддержку языка SQL и функциониро<strong>в</strong>ание <strong>в</strong> сети.<br />

К наиболее распространенным корпорати<strong>в</strong>ным СУБД относятся Infomix, Ingres, Sybase,<br />

Oracle, SQL Server.<br />

Реляционная система Ingres для средних и крупных компаний <strong>в</strong>ключает средст<strong>в</strong>а<br />

а<strong>в</strong>томатизации разработки приложений, систему упра<strong>в</strong>ления знаниями, библиотеку<br />

приложений на национальных языках. В СУБД реализо<strong>в</strong>ана прямая адресация запросо<strong>в</strong><br />

конкретным клиентам с назначением приоритето<strong>в</strong>, работает контекстное переключение<br />

между различными базами данных. Многотомные таблицы поз<strong>в</strong>оляют распределять базы<br />

данных по различным дискам, хранить <strong>в</strong> базах не только данные, но и коммутируемые<br />

процедуры <strong>в</strong> <strong>в</strong>иде распределенных объекто<strong>в</strong> с доступом из разных приложений.<br />

Оптимизатор запросо<strong>в</strong> Ingress учиты<strong>в</strong>ает множест<strong>в</strong>о факторо<strong>в</strong>, таких как размер таблиц, тип<br />

данных, статистическое распределение данных <strong>в</strong> таблицах и индексах. При оптимизации <strong>в</strong>се<br />

запросы при<strong>в</strong>одятся к нормализо<strong>в</strong>анной форме, не за<strong>в</strong>исящей от исходной записи.<br />

Специальный механизм пра<strong>в</strong>ил поз<strong>в</strong>оляет программиро<strong>в</strong>ать обработку ситуаций при<br />

<strong>в</strong>ключении, обно<strong>в</strong>лении, исключении строк и изменении записей.<br />

Более 10 лет предста<strong>в</strong>лен на миро<strong>в</strong>ом рынке пакет Oracle. Долгое <strong>в</strong>ремя каждая третья<br />

прода<strong>в</strong>аемая <strong>в</strong> мире СУБД работала под Oracle. Она наиболее часто используется <strong>в</strong><br />

операционной среде Unix, хотя может работать на множест<strong>в</strong>е других системных платформ.<br />

На Oracle разработано значительное число прикладных систем для банко<strong>в</strong>, промышленных<br />

предприятий, энергетических объекто<strong>в</strong>, учреждений здра<strong>в</strong>оохранения. Она обеспечи<strong>в</strong>ает<br />

целостность баз данных при <strong>в</strong>ыполнении распределенных запросо<strong>в</strong>, а<strong>в</strong>тономию узло<strong>в</strong> базы и<br />

<strong>в</strong>ысокую произ<strong>в</strong>одительность. Система поддержи<strong>в</strong>ает открытую архитектуру: <strong>в</strong> едином<br />

приложении ее могут согласо<strong>в</strong>анно работать компоненты СУБД различных фирм, файлы<br />

операционной системы, аппаратура (промышленные контроллеры, кассо<strong>в</strong>ые аппараты).<br />

Инструментарий Oracle поз<strong>в</strong>оляет созда<strong>в</strong>ать графический интерфейс пользо<strong>в</strong>ателя со<br />

сложной логикой обработки данных. Постепенно реляционная СУБД Oracle преобразуется <strong>в</strong><br />

объектно-ориентиро<strong>в</strong>анную систему на осно<strong>в</strong>е языка SQL++, хранящую данные <strong>в</strong> <strong>в</strong>иде<br />

объекто<strong>в</strong> <strong>в</strong>место таблиц.


7<br />

Под упра<strong>в</strong>лением СУБД Pick сотни пользо<strong>в</strong>ателей могут со<strong>в</strong>местно использо<strong>в</strong>ать один<br />

компьютер. Приложения Pick со<strong>в</strong>местимы с MS-DOS и Unix, благодаря чему около<br />

полумиллиона предприятий <strong>в</strong> мире используют Pick <strong>в</strong> качест<strong>в</strong>е программного обеспечения<br />

администрати<strong>в</strong>ных и экономических систем.<br />

Профессиональная СУБД SQL Server (Microsoft) – это еще одна раз<strong>в</strong>итая реляционная<br />

система, решающая задачи как <strong>в</strong> режиме непосредст<strong>в</strong>енной обработки сложных очередей,<br />

так и <strong>в</strong> качест<strong>в</strong>е поддержки информационных систем принятия решения. Она имеет<br />

надежную защиту от несанкциониро<strong>в</strong>анного доступа и сбое<strong>в</strong> и обладает широкими<br />

<strong>в</strong>озможностями администриро<strong>в</strong>ания <strong>в</strong> режиме удаленного доступа.<br />

К числу непроцедурных многопользо<strong>в</strong>ательских СУБД относятся продукты фирмы Gupta<br />

— одного из миро<strong>в</strong>ых лидеро<strong>в</strong> <strong>в</strong> области профессиональных распределенных СУБД. Эти<br />

программные средст<strong>в</strong>а устано<strong>в</strong>лены более чем <strong>в</strong> 500 компаниях. Одних только копий SQL<br />

Base насчиты<strong>в</strong>ается с<strong>в</strong>ыше 20 тысяч <strong>в</strong> разных странах. Неограниченное число ее<br />

пользо<strong>в</strong>ателей работает на платформах MS-DOS, OS/2, NetWare, SUN, Unix. SQL. Gupta<br />

поддержи<strong>в</strong>ает многозадачность, обеспечи<strong>в</strong>ает целостность данных, обрабаты<strong>в</strong>ает типы<br />

данных любого размера <strong>в</strong> национальных алфа<strong>в</strong>итах, обладает <strong>в</strong>озможностями операти<strong>в</strong>ной<br />

архи<strong>в</strong>ации и а<strong>в</strong>томатического <strong>в</strong>осстано<strong>в</strong>ления данных после сбоя. Gupta предоста<strong>в</strong>ляет<br />

разработчикам полностью объектно-ориентиро<strong>в</strong>анную среду. Она поддержи<strong>в</strong>ает DDE и OLE,<br />

MDI и множест<strong>в</strong>о библиотек. А сете<strong>в</strong>ой набор программных продукто<strong>в</strong> обеспечи<strong>в</strong>ает доступ<br />

к данным различных баз данных <strong>в</strong> сети.<br />

Интегриро<strong>в</strong>анные системы программиро<strong>в</strong>ания, <strong>в</strong>ключающие генераторы кодо<strong>в</strong> и<br />

процедурные языки, назы<strong>в</strong>ают CASE-инструментами (Computer Aided Software Engineering).<br />

В таких комплексах среда проектиро<strong>в</strong>ания не отделена от прикладной системы. Примерами<br />

CASE-инструменто<strong>в</strong> я<strong>в</strong>ляются системы BPWin и ERWin компании LogicWorks,<br />

Designer/2000 компании Oracle, SilverRun компании SilverRun Technologies, Rational Rose и<br />

др. В частности, <strong>в</strong> Oracle CASE. Для создания конкретной прикладной системы, например<br />

банко<strong>в</strong>ской, проектиро<strong>в</strong>щик предста<strong>в</strong>ляет с<strong>в</strong>ои знания о работе конкретного банка <strong>в</strong><br />

системный сло<strong>в</strong>арь. Настройка проектируемой системы на технологию работы банка<br />

заклады<strong>в</strong>ается уже на пер<strong>в</strong>оначальных стадиях проектиро<strong>в</strong>ания средст<strong>в</strong>ами конструктора.<br />

При любых изменениях технологии меняется лишь предста<strong>в</strong>ление знаний <strong>в</strong> системном<br />

сло<strong>в</strong>аре. Затем <strong>в</strong>ыполняется генерация сразу же гото<strong>в</strong>ой системы. Для по<strong>в</strong>ышения<br />

произ<strong>в</strong>одительности Oracle CASE оснащена моделью-прототипом системы а<strong>в</strong>томатизации<br />

деятельности коммерческого банка. Проектиро<strong>в</strong>ание по прототипу снижает трудоемкость<br />

реализации и модификации системы, гарантирует целостность и непроти<strong>в</strong>оречи<strong>в</strong>ость<br />

данных, полную документируемость, переносимость, «прозрачность» работы <strong>в</strong> различных<br />

сете<strong>в</strong>ых средах.<br />

Этапы проектиро<strong>в</strong>ания информационных систем<br />

Базы данных и СУБД создаются методом нисходящего проектиро<strong>в</strong>ания<br />

последо<strong>в</strong>ательности моделей, описы<strong>в</strong>ающих предметную область различными средст<strong>в</strong>ами.<br />

Вначале произ<strong>в</strong>одится предпроектное обследо<strong>в</strong>ание предметной области и<br />

разрабаты<strong>в</strong>ается ее функциональная модель, описы<strong>в</strong>ающая потоки данных, их источники и<br />

приемники. Такое описание служит обосно<strong>в</strong>анием технического задания на проектиро<strong>в</strong>ание<br />

информационной системы.<br />

Функциональная модель заклады<strong>в</strong>ается <strong>в</strong> осно<strong>в</strong>у инфологической модели,<br />

предста<strong>в</strong>ляющей обобщенное концептуальное описание информационной системы на<br />

естест<strong>в</strong>енном языке с при<strong>в</strong>лечением, при необходимости, математических формул, таблиц,<br />

диаграмм.<br />

Характер такого описания определяет предста<strong>в</strong>ление следующего уро<strong>в</strong>ня —<br />

даталогическую модель данных, описы<strong>в</strong>ающую данные на языке программиро<strong>в</strong>ания<br />

конкретной СУБД.


8<br />

На нижнем уро<strong>в</strong>не находится физическая модель данных, характеризующая среду их<br />

хранения посредст<strong>в</strong>ом электрических, магнитных, оптических сигнало<strong>в</strong>.<br />

Благодаря такой четырехуро<strong>в</strong>не<strong>в</strong>ой системе проектиро<strong>в</strong>ания обеспечи<strong>в</strong>ается <strong>в</strong>ысокая<br />

досто<strong>в</strong>ерность, надежность сохранения и неза<strong>в</strong>исимость данных от использующих их<br />

программ.<br />

1 этап проектиро<strong>в</strong>ания: функциональное моделиро<strong>в</strong>ание<br />

Функциональные модели строятся различными методами: DFD — Data Flow Diagrams,<br />

структурными схемами с использо<strong>в</strong>анием языко<strong>в</strong> И.Де Марко, OMT, SSADM, Гейна-<br />

Сарсона. В терминологии функционального моделиро<strong>в</strong>ания источники и приемники данных<br />

назы<strong>в</strong>аются <strong>в</strong>нешними сущностями. Обработанная информация помещается <strong>в</strong> хранилища,<br />

или <strong>в</strong>нутренние сущности, изображаемые <strong>в</strong> DFD прямоугольниками Точка преобразо<strong>в</strong>ания<br />

<strong>в</strong>ходных данных <strong>в</strong> <strong>в</strong>ыходные именуется процессом и <strong>в</strong> нотации Йордана–Де Марко<br />

обозначается окружностью. Данные, участ<strong>в</strong>ующие <strong>в</strong> процессах, назы<strong>в</strong>аются потоками и<br />

предста<strong>в</strong>ляются напра<strong>в</strong>ленными дугами, которые могут раз<strong>в</strong>ет<strong>в</strong>ляться и сли<strong>в</strong>аться. Для<br />

каждого информационного потока и хранилища определяются с<strong>в</strong>язанные с ними<br />

имено<strong>в</strong>анные элементы данных.<br />

Техническое задание содержит обычно формулиро<strong>в</strong>ку наимено<strong>в</strong>ания, цели и области<br />

применения разработки, перечень источнико<strong>в</strong> информации, требо<strong>в</strong>ания к информационной<br />

системе, заданные экономические и эргономические показатели, описание стадий разработки<br />

и перечень <strong>в</strong>ыходных документо<strong>в</strong>.<br />

2 этап проектиро<strong>в</strong>ания: инфологическое моделиро<strong>в</strong>ание<br />

Осно<strong>в</strong>ными компонентами инфологических моделей я<strong>в</strong>ляются объекты предметной<br />

область, назы<strong>в</strong>аемые здесь сущностями с их элементарными с<strong>в</strong>ойст<strong>в</strong>ами, именуемыми <strong>в</strong><br />

данном подходе атрибутами.<br />

Каждая сущность рассматри<strong>в</strong>ается как отдельный экземпляр модели, а схожие<br />

экземпляры группируются <strong>в</strong> коллекции — типы сущностей. Для нахождения конкретных<br />

экземпляро<strong>в</strong> сущности <strong>в</strong> некотором типе используются специальные атрибуты –<br />

идентификаторы.<br />

Минимальная группа идентификаторо<strong>в</strong>, однозначно определяющая требуемый экземпляр<br />

сущности, назы<strong>в</strong>ается ключом. В каждом типе сущностей может быть задано несколько<br />

ключей, и <strong>в</strong> этом случае один из них назначается пер<strong>в</strong>ичным ключом, а <strong>в</strong>се остальные —<br />

<strong>в</strong>озможными ключами. При <strong>в</strong>ыборе пер<strong>в</strong>ичного ключа следует отда<strong>в</strong>ать предпочтение<br />

идентификаторам, соста<strong>в</strong>ленным из минимального числа атрибуто<strong>в</strong> (соста<strong>в</strong>ным ключам), <strong>в</strong><br />

частности — из одного атрибута (несоста<strong>в</strong>ному ключу). Атрибуты, идентифицирующие<br />

сущности, схожие по нескольким атрибутам <strong>в</strong> типе, назы<strong>в</strong>аются <strong>в</strong>торичными ключами, или<br />

ключами поиска. При с<strong>в</strong>язы<strong>в</strong>ании типо<strong>в</strong> сущностей используются <strong>в</strong>нешние ключи,<br />

соот<strong>в</strong>етст<strong>в</strong>ующие пер<strong>в</strong>ичным ключам с<strong>в</strong>язы<strong>в</strong>аемых типо<strong>в</strong>.<br />

Отношения между сущностями характеризуются с<strong>в</strong>язями, которые бы<strong>в</strong>ают бинарными<br />

(парными) или n-арными (множест<strong>в</strong>енными). Пусть <strong>в</strong> д<strong>в</strong>ух типах сущностей с атрибутами i,<br />

j, k,... имеются экземпляры A1{a 1i , a 1j , a 1k }, A2{ a 2i , a 2j , a 2k } такие, что i-е атрибуты их с<strong>в</strong>язаны<br />

между собой однозначной за<strong>в</strong>исимостью a 1i → f(a 2i ). В этом случае го<strong>в</strong>орят, что между<br />

соот<strong>в</strong>етст<strong>в</strong>ующими типами сущностей определена степень с<strong>в</strong>язи «один к одному» (1:1). При<br />

этом каждый экземпляр одного типа соотносится ро<strong>в</strong>но с одним экземпляром <strong>в</strong> с<strong>в</strong>язанном<br />

типе и наоборот, каждый экземпляр с<strong>в</strong>язанного типа соот<strong>в</strong>етст<strong>в</strong>ует не более чем одному<br />

экземпляру другого типа. Как пра<strong>в</strong>ило, <strong>в</strong> этом случае с<strong>в</strong>язы<strong>в</strong>ают друг с другом ключи типо<strong>в</strong>.<br />

Наряду с этим, между атрибутами сущностей может сущест<strong>в</strong>о<strong>в</strong>ать степень с<strong>в</strong>язи «один<br />

ко многим» (1:N) a 1i → f(a 2i ), a 1i → f(a 2j ),... Такая с<strong>в</strong>язь устана<strong>в</strong>ли<strong>в</strong>ается, когда одному<br />

экземпляру <strong>в</strong> с<strong>в</strong>язанном типе сущностей соот<strong>в</strong>етст<strong>в</strong>ует один экземпляр <strong>в</strong> осно<strong>в</strong>ном типе, но


9<br />

одному экземпляру осно<strong>в</strong>ного типа может соот<strong>в</strong>етст<strong>в</strong>о<strong>в</strong>ать несколько экземпляро<strong>в</strong><br />

с<strong>в</strong>язанного типа.<br />

Сущест<strong>в</strong>уют, также, отношения «много ко многим» (M:N) a 1i → f(a 2i ), a 1i → f(a 2j ), a 2j →<br />

f(a 1i ),... С<strong>в</strong>язь «много ко многим» многозначна. Ее можно заменить промежуточной с<strong>в</strong>язью<br />

через сущности, объединенные отношением «один ко многим».<br />

В некоторых случаях целесообразно рассматри<strong>в</strong>ать однонапра<strong>в</strong>ленную с<strong>в</strong>язь от типа<br />

сущности к другому типу. В за<strong>в</strong>исимости от количест<strong>в</strong>енных характеристик отображения<br />

различают простую и многозначную с<strong>в</strong>язь. При простой однонапра<strong>в</strong>ленной с<strong>в</strong>язи одному и<br />

тому же экземпляру одного типа соот<strong>в</strong>етст<strong>в</strong>ует один и тот же экземпляр сущности другого<br />

типа, а обратная с<strong>в</strong>язь не определена. При многозначной однонапра<strong>в</strong>ленной с<strong>в</strong>язи одному<br />

экземпляру одного типа соот<strong>в</strong>етст<strong>в</strong>ует несколько экземпляро<strong>в</strong> другого типа, а обратная с<strong>в</strong>язь<br />

не определена. Сущест<strong>в</strong>уют и более сложные с<strong>в</strong>язи.<br />

Разработаны многочисленные инструменты построения инфологических моделей:<br />

ERD (Entity-Relationship Diagrams), IDEF1X, SADT (Structured Analysis and Design<br />

Technique), языки Мартина, Баркера и др. В частности, <strong>в</strong> языке ER-диаграмм (нотация Чена)<br />

сущности изображаются прямоугольниками, атрибуты — окружностями, <strong>в</strong> которые<br />

<strong>в</strong>писы<strong>в</strong>аются имена атрибуто<strong>в</strong>. Идентифицирующие атрибуты подчерки<strong>в</strong>аются,<br />

характеристики изображаются трапециями, обозначения — параллелограммами, с<strong>в</strong>язи<br />

(отношения) – ромбами или шестиугольниками, соединенными с соот<strong>в</strong>етст<strong>в</strong>ующими типами<br />

сущностей ребрами. Возле сущностей на ребрах цифрами указы<strong>в</strong>ается степень отношения. В<br />

нотациях Мартина, IDEF1X и Баркера список атрибуто<strong>в</strong> при<strong>в</strong>одится <strong>в</strong>нутри прямоугольника,<br />

обозначающего сущность. В пер<strong>в</strong>ой из них ключи подчерки<strong>в</strong>аются, <strong>в</strong>о <strong>в</strong>торой располагаются<br />

перед другими атрибутами, а <strong>в</strong> третьей отмечаются знаком #, а с<strong>в</strong>язи <strong>в</strong>о <strong>в</strong>сех изображаются<br />

имено<strong>в</strong>анными дугами.<br />

3 этап проектиро<strong>в</strong>ания: даталогическое моделиро<strong>в</strong>ание<br />

Даталогическая реляционная модель должна иметь структуру как минимум одной<br />

таблицы с уникальными именами полей и записями одинако<strong>в</strong>ой длины, например, такую:<br />

Когда записи <strong>в</strong> таблице по<strong>в</strong>торяются,<br />

<strong>в</strong>озникают проблемы, с<strong>в</strong>язанные с поиском и<br />

систематизацией с<strong>в</strong>едений. Для их разрешения <strong>в</strong><br />

тех случаях, когда исходная комбинация полей не<br />

обеспечи<strong>в</strong>ает уникальности записей, <strong>в</strong> таблицу<br />

<strong>в</strong><strong>в</strong>одят дополнительное поле идентификатора<br />

записи (ID) с непо<strong>в</strong>торяющимися<br />

значениями:<br />

Поле или группа полей таблицы,<br />

содержащая данные, однозначно<br />

идентифицирующие каждую запись,<br />

предста<strong>в</strong>ляют пер<strong>в</strong>ичный ключ.<br />

Благодаря уникальности ключа, <strong>в</strong><br />

таблице исключается пересечение<br />

Стенд Экспонат Страна<br />

100 Компьютеры США<br />

200 Программы США<br />

300 Программы Россия<br />

ID Стенд Экспонат Страна<br />

1 100 Компьютеры США<br />

2 100 Компьютеры США<br />

3 200 Программы США<br />

4 300 Программы Россия<br />

записей. Именно ключ <strong>в</strong> пер<strong>в</strong>ую<br />

очередь определяет порядок предста<strong>в</strong>ления записей пользо<strong>в</strong>ателю. Он же регулирует<br />

расположение, поиск и обработку данных. Так, <strong>в</strong> пер<strong>в</strong>ой таблице роль ключа может играть<br />

поле Стенд, а <strong>в</strong>о <strong>в</strong>торой — ID.<br />

Ключ, занимающий одно поле, назы<strong>в</strong>ают простым ключом, а ключ, образо<strong>в</strong>анный<br />

группой полей, именуют соста<strong>в</strong>ным ключом. Поля соста<strong>в</strong>ного ключа назы<strong>в</strong>ают частичными<br />

(усеченными) ключами. Например, <strong>в</strong> следующей таблице <strong>в</strong> качест<strong>в</strong>е соста<strong>в</strong>ного ключа<br />

целесообразно принять группу полей Стенд - Экспонат:


10<br />

Стенд Экспонат Площадь Участник Должность Оклад Фирма Страна<br />

100 Компьютеры 50 Лунин Дилер 2000 IBM США<br />

100 Станции 100 Смирно<strong>в</strong> Дилер 2000 IBM США<br />

200 Программы 25 И<strong>в</strong>ано<strong>в</strong>а Дилер 2000 IBM США<br />

300 Дисплеи 40 Петро<strong>в</strong> Прода<strong>в</strong>ец 1500 Acer Тай<strong>в</strong>ань<br />

400 Программы 25 Степано<strong>в</strong> Прода<strong>в</strong>ец 1500 Scan Россия<br />

400 Дисплеи 40 Ск<strong>в</strong>орцо<strong>в</strong> Прода<strong>в</strong>ец 1500 Scan Россия<br />

Для ускорения обработки данных часто используют <strong>в</strong>торичные ключи, именуемые<br />

индексами. На практике индексы часто реализуются <strong>в</strong> <strong>в</strong>иде <strong>в</strong>нутренних, часто скрытых от<br />

пользо<strong>в</strong>ателя таблиц из д<strong>в</strong>ух полей: поля индексного <strong>в</strong>ыражения и поля местоположения<br />

каждой записи индексируемой таблицы. Цель создания индексо<strong>в</strong> — ускорение доступа к<br />

данным <strong>в</strong> ходе поиска за счет ограничения количест<strong>в</strong>а просматри<strong>в</strong>аемых записей <strong>в</strong><br />

индексируемом поле. Для пер<strong>в</strong>ичного ключа обычно а<strong>в</strong>томатически создается индекс, не<br />

допускающий со<strong>в</strong>падения значений <strong>в</strong> полях ключа. В то же <strong>в</strong>ремя, использо<strong>в</strong>ание индексо<strong>в</strong><br />

сопряжено с определенными трудностями. При доба<strong>в</strong>лении но<strong>в</strong>ых записей СУБД<br />

приходится тратить дополнительное <strong>в</strong>ремя на обно<strong>в</strong>ление индексо<strong>в</strong>, а при редактиро<strong>в</strong>ании<br />

индексиро<strong>в</strong>анного поля приходится обно<strong>в</strong>лять <strong>в</strong>се измени<strong>в</strong>шиеся индексы. Поэтому<br />

индексами целесообразно снабжать таблицы большой мощности, используемые <strong>в</strong><br />

приложениях для анализа и принятия решений, стараясь избегать их <strong>в</strong><br />

многопользо<strong>в</strong>ательских сете<strong>в</strong>ых приложениях с блокиро<strong>в</strong>ками, а также <strong>в</strong> объемных базах<br />

данных, требующих регулярного доба<strong>в</strong>ления и удаления информации.<br />

Преобразо<strong>в</strong>ание инфологического предста<strong>в</strong>ления объекто<strong>в</strong> предметной области <strong>в</strong><br />

даталогическую реляционную модель назы<strong>в</strong>ается нормализацией данных. Именно <strong>в</strong> ходе<br />

нормализации данные группируются <strong>в</strong> таблицы, а таблицы — <strong>в</strong> базу данных. Целью<br />

нормализации я<strong>в</strong>ляется описание заданной системы сущностей конечным множест<strong>в</strong>ом<br />

с<strong>в</strong>язанных между собой таблиц, обладающим оптимальными характеристиками процессо<strong>в</strong><br />

хранения, поиска и обработки данных. Обычно нормализация предста<strong>в</strong>ляет собой обратимый<br />

пошаго<strong>в</strong>ый процесс декомпозиции, или разложения, исходной таблицы на более мелкие и<br />

простые таблицы. Аппарат нормализации базируется на понятии нормальных форм, каждая<br />

из которых по-с<strong>в</strong>оему ограничи<strong>в</strong>ает типы допустимых функциональных за<strong>в</strong>исимостей.<br />

Рассмотрим нормализацию на примере при<strong>в</strong>еденной <strong>в</strong>ыше таблицы Стенд-Экспонат-<br />

Площадь-Участник-Должность-Оклад-Фирма-Страна. Эта таблица описы<strong>в</strong>ает некоторое<br />

множест<strong>в</strong>о экспонато<strong>в</strong>, размещаемых на <strong>в</strong>ыста<strong>в</strong>очных стендах различными фирмами. В<br />

качест<strong>в</strong>е исходных данных для нее может <strong>в</strong>ыступать план <strong>в</strong>ыста<strong>в</strong>ки, на котором показано<br />

размещение стендо<strong>в</strong>, или ее каталог, предста<strong>в</strong>ляющий участнико<strong>в</strong>; это может быть<br />

рекламный проспект, рассказы<strong>в</strong>ающий об экспонатах, либо картотека стран-участниц.<br />

Пер<strong>в</strong>ой нормальной формой (1НФ) назы<strong>в</strong>ается «плоская» модель данных, значения<br />

элементо<strong>в</strong> которой атомарны, <strong>в</strong>се записи от<strong>в</strong>ечают одному и тому же макету и уникальны.<br />

Рассматри<strong>в</strong>аемая таблица относится к 1НФ.<br />

Всякое неключе<strong>в</strong>ое поле таблицы находится <strong>в</strong> определенной функциональной<br />

за<strong>в</strong>исимости от ключе<strong>в</strong>ых полей. Отношение полей назы<strong>в</strong>ается полной функциональной<br />

за<strong>в</strong>исимостью, если содержимое неключе<strong>в</strong>ого поля за<strong>в</strong>исит от <strong>в</strong>сего соста<strong>в</strong>ного ключа. В<br />

проти<strong>в</strong>ном случае речь идет о частичной функциональной за<strong>в</strong>исимости. В частности, поле<br />

Участник находится <strong>в</strong> полной функциональной за<strong>в</strong>исимости от соста<strong>в</strong>ного ключа Стенд –<br />

Экспонат. Поле Фирма находится <strong>в</strong> частичной функциональной за<strong>в</strong>исимости от поля Стенд<br />

соста<strong>в</strong>ного ключа, а поле Площадь за<strong>в</strong>исит только от частичного ключа Экспонат.<br />

Частичная функциональная за<strong>в</strong>исимость <strong>в</strong>ызы<strong>в</strong>ает ряд проблем. Это дублиро<strong>в</strong>ание<br />

данных, которые могут предста<strong>в</strong>лять сразу несколько экспонато<strong>в</strong>. Это и не<strong>в</strong>озможность


<strong>в</strong>ключения <strong>в</strong> таблицу участнико<strong>в</strong>, не<br />

имеющих экспонато<strong>в</strong>. Или наоборот —<br />

необходимость исключения экспонато<strong>в</strong><br />

<strong>в</strong> случае отсутст<strong>в</strong>ия участнико<strong>в</strong>.<br />

Наличие многозначности усложняет<br />

поиск данных и их обработку. Поэтому<br />

при проектиро<strong>в</strong>ании структуры базы<br />

данных стремятся к устранению<br />

нежелательных функциональных<br />

за<strong>в</strong>исимостей между полями и<br />

лик<strong>в</strong>идируют дублиро<strong>в</strong>ания данных<br />

посредст<strong>в</strong>ом нормализации.<br />

Преобразуем исходную таблицу ко<br />

<strong>в</strong>торой нормальной форме (2НФ),<br />

разби<strong>в</strong> ее на три таблицы. Таблица<br />

принадлежит ко 2НФ, если она<br />

находится <strong>в</strong> 1НФ, но <strong>в</strong> ней отсутст<strong>в</strong>уют<br />

11<br />

Стенд Фирма Страна Экспонат Площадь<br />

100 IBM США Компьютеры 50<br />

200 IBM США Станции 100<br />

300 Acer Тай<strong>в</strong>ань Программы 25<br />

400 Scan Россия Дисплеи 40<br />

Стенд Экспонат Участник Должность Оклад<br />

100 Компьютеры Лунин Дилер 2000<br />

100 Станции Смирно<strong>в</strong> Дилер 2000<br />

200 Программы И<strong>в</strong>ано<strong>в</strong>а Дилер 2000<br />

300 Дисплеи Петро<strong>в</strong> Прода<strong>в</strong>ец 1500<br />

400 Программы Степано<strong>в</strong> Прода<strong>в</strong>ец 1500<br />

400 Дисплеи Ск<strong>в</strong>орцо<strong>в</strong> Прода<strong>в</strong>ец 1500<br />

частичные<br />

функциональные<br />

за<strong>в</strong>исимости от полей соста<strong>в</strong>ного ключа, то есть каждое ее неключе<strong>в</strong>ое поле полностью<br />

за<strong>в</strong>исит от <strong>в</strong>сего ключа. Так, после разби<strong>в</strong>ки поле Фирма за<strong>в</strong>исит от ключа Стенд, Площадь<br />

— от ключа Экспонат, а Участник — от соста<strong>в</strong>ного ключа Стенд–Экспонат.<br />

Но этого недостаточно. Если поля i, j, k с<strong>в</strong>язаны между собой по схеме a k = f(a j ), a j = f(a i ),<br />

но обратная за<strong>в</strong>исимость отсутст<strong>в</strong>ует, то го<strong>в</strong>орят, что i за<strong>в</strong>исит от k транзити<strong>в</strong>но. В д<strong>в</strong>ух<br />

таблицах присутст<strong>в</strong>уют отмеченные транзити<strong>в</strong>ные за<strong>в</strong>исимости. Так, поле Страна находится<br />

<strong>в</strong> транзити<strong>в</strong>ной за<strong>в</strong>исимости от ключа, будучи с<strong>в</strong>язанным с ним через поле Фирма. Поле<br />

Оклад транзити<strong>в</strong>но с<strong>в</strong>язано с ключом через поля Должность и Участник.<br />

Третья нормальная форма (3НФ) осно<strong>в</strong>ана на 2НФ и отсутст<strong>в</strong>ии транзити<strong>в</strong>ных<br />

за<strong>в</strong>исимостей. Дальнейшая нормализация при<strong>в</strong>одит к шести таблицам <strong>в</strong> 3НФ. Теперь<br />

изменение данных <strong>в</strong> неключе<strong>в</strong>ых полях не <strong>в</strong>лияет на содержимое других полей.<br />

Чтобы про<strong>в</strong>еденная декомпозиция была обратимой, и из полученного множест<strong>в</strong>а таблиц<br />

Экспонат Площадь<br />

Компьютеры 50<br />

Станции 100<br />

Программы 25<br />

Дисплеи 40<br />

Стенд Экспонат Участник<br />

100 Компьютеры Лунин<br />

100 Станции Смирно<strong>в</strong><br />

200 Программы И<strong>в</strong>ано<strong>в</strong>а<br />

300 Дисплеи Петро<strong>в</strong><br />

400 Программы Степано<strong>в</strong><br />

400 Дисплеи Ск<strong>в</strong>орцо<strong>в</strong><br />

Фирма Страна<br />

IBM США<br />

Acer Тай<strong>в</strong>ань<br />

Scan Россия<br />

Участник Должность<br />

Лунин Дилер<br />

Смирно<strong>в</strong> Дилер<br />

И<strong>в</strong>ано<strong>в</strong>а Дилер<br />

Петро<strong>в</strong> Прода<strong>в</strong>ец<br />

Степано<strong>в</strong> Прода<strong>в</strong>ец<br />

Ск<strong>в</strong>орцо<strong>в</strong> Прода<strong>в</strong>ец<br />

Должность Оклад<br />

Дилер 2000<br />

Прода<strong>в</strong>ец 1500<br />

Стенд Фирма<br />

100 IBM<br />

200 IBM<br />

300 Acer<br />

400 Scan<br />

можно было получить исходную информацию, их объединяют <strong>в</strong> пары, состоящие из гла<strong>в</strong>ной<br />

таблицы и с<strong>в</strong>язанной таблицы, назы<strong>в</strong>аемой также подчиненной. Ключ гла<strong>в</strong>ной таблицы<br />

именуют пер<strong>в</strong>ичным ключом, а ключ подчиненной таблицы — <strong>в</strong>нешним ключом.<br />

С<strong>в</strong>язы<strong>в</strong>аемые поля должны иметь схожие типы данных.


12<br />

Между таблицами <strong>в</strong> парах устана<strong>в</strong>ли<strong>в</strong>аются отношения, подобные отношениям<br />

инфологической модели. Если между д<strong>в</strong>умя таблицами определена за<strong>в</strong>исимость «один к<br />

одному», то каждая запись <strong>в</strong> гла<strong>в</strong>ной таблице соотносится ро<strong>в</strong>но с одной записью <strong>в</strong><br />

с<strong>в</strong>язанной таблице и наоборот, каждая запись с<strong>в</strong>язанной таблицы соот<strong>в</strong>етст<strong>в</strong>ует не более чем<br />

одной записи гла<strong>в</strong>ной таблицы. Как пра<strong>в</strong>ило, <strong>в</strong> этом случае с<strong>в</strong>язы<strong>в</strong>ают друг с другом ключи<br />

таблиц. В частности, <strong>в</strong> за<strong>в</strong>исимости 1:1 находятся таблицы Стенд-Экспонат-Участник и<br />

Участник-Должность. Ключе<strong>в</strong>ое поле Участник <strong>в</strong>торой — гла<strong>в</strong>ной — таблицы я<strong>в</strong>ляется<br />

пер<strong>в</strong>ичным ключом, а аналогичное поле пер<strong>в</strong>ой — с<strong>в</strong>язанной — таблицы предста<strong>в</strong>ляет<br />

<strong>в</strong>нешний ключ. Отношение 1:1 часто используют при разделении таблиц большой степени.<br />

При с<strong>в</strong>язи «один ко многим» каждой записи гла<strong>в</strong>ной таблицы соот<strong>в</strong>етст<strong>в</strong>ует несколько<br />

записей <strong>в</strong> с<strong>в</strong>язанной таблице, но каждой записи <strong>в</strong> с<strong>в</strong>язанной таблице соот<strong>в</strong>етст<strong>в</strong>ует не более<br />

одной записи <strong>в</strong> таблице гла<strong>в</strong>ной. Например, таблицы Стенд-Экспонат-Участник и<br />

Экспонат-Площадь с<strong>в</strong>язаны полем Экспонат <strong>в</strong> отношении 1:2. Таблица Экспонат-Площадь<br />

я<strong>в</strong>ляется здесь гла<strong>в</strong>ной, а ее ключе<strong>в</strong>ое поле Экспонат — пер<strong>в</strong>ичным ключом. Одноименное<br />

поле с<strong>в</strong>язанной таблицы играет роль <strong>в</strong>нешнего ключа.<br />

Реляционные отношения таблиц с<strong>в</strong>язаны с дальнейшей нормализацией базы данных.<br />

Считается, что таблицы находятся <strong>в</strong> чет<strong>в</strong>ертой нормальной форме (4НФ), если <strong>в</strong> них<br />

отсутст<strong>в</strong>уют неза<strong>в</strong>исимые элементы данных, с<strong>в</strong>язанные отношением «много ко многим».<br />

Иными сло<strong>в</strong>ами, <strong>в</strong> таблице, находящейся <strong>в</strong> 3НФ, не должно быть д<strong>в</strong>ух полей, с<strong>в</strong>язанных друг<br />

с другом через другую таблицу. Чтобы удо<strong>в</strong>лет<strong>в</strong>орить этому усло<strong>в</strong>ию, отношение «много ко<br />

многим» <strong>в</strong> реляционной модели обычно не устана<strong>в</strong>ли<strong>в</strong>ают между д<strong>в</strong>умя таблицами<br />

непосредст<strong>в</strong>енно — для этого <strong>в</strong><strong>в</strong>одят промежуточные таблицы с<strong>в</strong>язи, объединяя их<br />

отношением «один ко многим».<br />

Наконец, го<strong>в</strong>орят, что <strong>в</strong>се таблицы базы данных находятся <strong>в</strong> пятой нормальной форме<br />

(5НФ), если они удо<strong>в</strong>лет<strong>в</strong>оряют 4НФ и между ними устано<strong>в</strong>лено достаточное количест<strong>в</strong>о<br />

с<strong>в</strong>язей, чтобы с их помощью можно было <strong>в</strong>осстано<strong>в</strong>ить исходную общую таблицу.<br />

Таким образом, нормализация по<strong>в</strong>ышает надежность базы данных, гарантируя<br />

целостность данных уникальностью пер<strong>в</strong>ичных ключей и ссылочную целостность<br />

соот<strong>в</strong>етст<strong>в</strong>ием <strong>в</strong>нешних ключей пер<strong>в</strong>ичным ключам. Несмотря не у<strong>в</strong>еличение числа таблиц <strong>в</strong><br />

базе данных, она часто способст<strong>в</strong>ует ускорению доступа к данным и обно<strong>в</strong>ления таблиц.<br />

4 этап проектиро<strong>в</strong>ания: физическое моделиро<strong>в</strong>ание <strong>в</strong> MS <strong>Access</strong><br />

Организация <strong>Access</strong><br />

Каждая база данных <strong>Access</strong> предста<strong>в</strong>ляет собой единый файл с расширением .mdb,<br />

содержащий до шести категорий объекто<strong>в</strong> базы данных: таблицы, запросы, формы, отчеты,<br />

макросы и модули с уникальными именами. Базы данных могут объединяться <strong>в</strong> рабочие<br />

группы, регистрируемые <strong>в</strong> файле System.mdw. В за<strong>в</strong>исимости от пра<strong>в</strong>, предоста<strong>в</strong>ляемых<br />

пользо<strong>в</strong>ателям, различают три группы функций, реализуемых <strong>в</strong> <strong>Access</strong>:<br />

• доступ к данным, то есть предста<strong>в</strong>ление информации,<br />

• упра<strong>в</strong>ление транзакциями, то есть доба<strong>в</strong>ление, удаление и пра<strong>в</strong>ка записей,<br />

• программиро<strong>в</strong>ание, то есть создание и пра<strong>в</strong>ка структур баз данных и макето<strong>в</strong> таблиц,<br />

• администриро<strong>в</strong>ание, т.е. разграничение пра<strong>в</strong> пользо<strong>в</strong>ателей и упра<strong>в</strong>ление доступом к<br />

данным.<br />

Источником данных для объекто<strong>в</strong> базы данных <strong>в</strong>сех категорий я<strong>в</strong>ляются таблицы. Число<br />

таблиц задается на стадии создания базы данных и может достигать 32768 с одно<strong>в</strong>ременным<br />

открытием до 254 таблиц. Их содержание читается и при необходимости обно<strong>в</strong>ляется<br />

прикладными пользо<strong>в</strong>ателями <strong>в</strong> ходе работы с базой данных. Таблица содержит информацию<br />

о сущностях предметной области. Описание каждой сущности размещается <strong>в</strong> отдельной<br />

записи, причем каждый атрибут <strong>в</strong> этом описании занимает отдельное поле.


13<br />

Информацию о содержимом таблиц дают запросы <strong>Access</strong>. Запрос помогает пользо<strong>в</strong>ателю<br />

<strong>в</strong> про<strong>в</strong>едении поиска и <strong>в</strong>ыборки данных, поз<strong>в</strong>оляет ему комбиниро<strong>в</strong>ать с<strong>в</strong>едения из<br />

нескольких таблиц, произ<strong>в</strong>одить <strong>в</strong>ычисления, <strong>в</strong>ста<strong>в</strong>лять, изменять, удалять, группиро<strong>в</strong>ать,<br />

сра<strong>в</strong>ни<strong>в</strong>ать данные. В запрос <strong>Access</strong> можно <strong>в</strong>ключать статистические и специальные<br />

операторы, арифметические и логические <strong>в</strong>ыражения. Запросы сохраняются для<br />

последующего использо<strong>в</strong>ания и построения но<strong>в</strong>ых запросо<strong>в</strong>. <strong>Access</strong> поз<strong>в</strong>оляет делать запрос<br />

одно<strong>в</strong>ременно к 16 таблицам, <strong>в</strong>ключая <strong>в</strong> него до 255 полей.<br />

К одной и той же таблице могут обращаться самые разнообразные пользо<strong>в</strong>атели, которых<br />

<strong>в</strong> разной степени интересуют различные поля таблиц. Поэтому таблицу или запрос часто<br />

приходится предста<strong>в</strong>лять различными экранными образами, назы<strong>в</strong>аемыми формами. Форма<br />

<strong>Access</strong> — это категория объекто<strong>в</strong> базы данных, служащая осно<strong>в</strong>ным инструментом доступа к<br />

данным и <strong>в</strong>ыполнения транзакций. В форме отражают столько данных из таблиц или<br />

запросо<strong>в</strong>, сколько требуется пользо<strong>в</strong>ателю, и <strong>в</strong> таком формате, <strong>в</strong> каком он предпочитает их<br />

<strong>в</strong>идеть. Обычно форма предоста<strong>в</strong>ляет <strong>в</strong>озможность редактиро<strong>в</strong>ания записей <strong>в</strong> таблицах,<br />

дополнения таблиц но<strong>в</strong>ыми записями и ос<strong>в</strong>обождения от лишней информации. Через форму<br />

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

Форма снабжается на<strong>в</strong>игационными средст<strong>в</strong>ами перехода от записи к записи, а также со<br />

страницы на страницу (если не помещается на одной странице). Формы масштабируются,<br />

<strong>в</strong>ы<strong>в</strong>одятся <strong>в</strong> печать, дополняются элементами графического оформления и упра<strong>в</strong>ления по<br />

событиям.<br />

Отчет <strong>Access</strong> — это категория объекто<strong>в</strong> базы данных, обеспечи<strong>в</strong>ающая подгото<strong>в</strong>ку<br />

печатного документа, раскры<strong>в</strong>ающего содержание таблицы или запроса. В отчете можно<br />

сортиро<strong>в</strong>ать и группиро<strong>в</strong>ать записи, про<strong>в</strong>одить необходимые <strong>в</strong>ычисления, а также<br />

упорядочи<strong>в</strong>ать данные и предста<strong>в</strong>лять их <strong>в</strong> произ<strong>в</strong>ольном формате. На осно<strong>в</strong>е разных таблиц<br />

и запросо<strong>в</strong> создаются сложные отчеты, а также надписи для кон<strong>в</strong>ерто<strong>в</strong>, этикетки, <strong>в</strong>изитные<br />

карточки, письма.<br />

Наконец, программы <strong>в</strong> <strong>в</strong>иде таких категорий объекто<strong>в</strong> базы данных, как макросы на<br />

процедурном макроязыке <strong>Access</strong> и модули на <strong>в</strong>строенном <strong>в</strong> СУБД языке Visual Basic for<br />

Applications (VBA), а<strong>в</strong>томатизируют <strong>в</strong>ыполнение сложных и регулярно по<strong>в</strong>торяющихся<br />

операций над сущностями баз данных. Программы могут откры<strong>в</strong>ать и закры<strong>в</strong>ать таблицы,<br />

отображать формы, конструиро<strong>в</strong>ать отчеты и формиро<strong>в</strong>ать запросы. С помощью программ<br />

часто создают интерфейс пользо<strong>в</strong>ателя, системы меню, организуют контекстную помощь,<br />

<strong>в</strong>едут учет и контроль информационных потоко<strong>в</strong>.<br />

Полный соста<strong>в</strong> объекто<strong>в</strong> конкретной базы данных предста<strong>в</strong>лен на <strong>в</strong>кладке Соста<strong>в</strong>,<br />

откры<strong>в</strong>аемой <strong>в</strong> меню Файл .С<strong>в</strong>ойст<strong>в</strong>а базы данных.<br />

В <strong>Access</strong> <strong>в</strong>ходит ряд специализиро<strong>в</strong>анных программ, решающих задачи обучения работе<br />

и построения баз данных, формиро<strong>в</strong>ания запросо<strong>в</strong> и их оформления. Это мастера, шаг за<br />

шагом про<strong>в</strong>одящие разработчика по процедуре создания объекто<strong>в</strong> базы данных с<br />

предложением ему ряда типо<strong>в</strong>ых решений. <strong>Access</strong> также <strong>в</strong>ключает <strong>в</strong> себя механизмы,<br />

необходимые для работы с базами данных различных формато<strong>в</strong>. Специальные драй<strong>в</strong>еры<br />

ODBC обеспечи<strong>в</strong>ают с<strong>в</strong>язь пользо<strong>в</strong>ателей с реляционными СУБД других произ<strong>в</strong>одителей.<br />

Они поз<strong>в</strong>оляют напрямую обращаться к системам DBase, Paradox, Btrieve, а также упра<strong>в</strong>лять<br />

такими платформами, как Oracle, или с<strong>в</strong>язы<strong>в</strong>ать их с <strong>Access</strong>. <strong>Access</strong> располагает мощной<br />

спра<strong>в</strong>очной системой, поиско<strong>в</strong>ыми средст<strong>в</strong>ами, кон<strong>в</strong>ерторами тексто<strong>в</strong> и таблиц.<br />

Среда разработки баз данных<br />

Центральную часть среды разработчика <strong>Access</strong> занимает окно базы данных с <strong>в</strong>кладками<br />

категорий объекто<strong>в</strong> базы данных: таблиц, запросо<strong>в</strong>, форм, отчето<strong>в</strong> и программ <strong>в</strong> <strong>в</strong>иде<br />

макросо<strong>в</strong> и модулей. Каждый такой объект может быть создан и предста<strong>в</strong>лен <strong>в</strong> режиме<br />

конструктора или <strong>в</strong> режиме <strong>в</strong>ыполнения. Выполнение таблиц, запросо<strong>в</strong> и форм назы<strong>в</strong>ают<br />

открытием, <strong>в</strong>ыполнение отчето<strong>в</strong> — просмотром, а <strong>в</strong>ыполнение программ — запуском. Из<br />

любого режима можно <strong>в</strong>ернуться <strong>в</strong> окно базы данных через меню Окно 1: База данных,


14<br />

нажатием кла<strong>в</strong>иши или щелчком по кнопке панели инструменто<strong>в</strong>. Щелчок пра<strong>в</strong>ой<br />

кнопкой мыши <strong>в</strong>о многих областях окна или кла<strong>в</strong>иатурная комбинация <br />

откры<strong>в</strong>ает <strong>в</strong>сплы<strong>в</strong>ающее контекстное меню.<br />

Как инструмент разработчика, СУБД настраи<strong>в</strong>ается на его нужды. Чтобы программа была<br />

удобна <strong>в</strong> работе, следует использо<strong>в</strong>ать <strong>в</strong>озможности, предоста<strong>в</strong>ляемые меню Сер<strong>в</strong>ис<br />

.Параметры. С <strong>в</strong>кладки Общие этого меню задаются поля для печати и папка по умолчанию.<br />

На <strong>в</strong>кладке Вид уточняются детали интерфейса. Через <strong>в</strong>кладку Пра<strong>в</strong>ка/поиск можно<br />

изменить характер поиско<strong>в</strong>ых операций. Отдельные <strong>в</strong>кладки пос<strong>в</strong>ящены шаблонам таблиц,<br />

форм, отчето<strong>в</strong>, кла<strong>в</strong>иатуре, модулям. Из меню Сер<strong>в</strong>ис .Параметры запуска задается<br />

пер<strong>в</strong>оначальный <strong>в</strong>ид базы данных: ее заголо<strong>в</strong>ок, значок, меню, старто<strong>в</strong>ая форма и т.п.<br />

Плотность баз данных по<strong>в</strong>ышается командой меню Сер<strong>в</strong>ис .Служебные программы .Сжать<br />

базу данных, а по<strong>в</strong>режденные файлы иногда удается реста<strong>в</strong>риро<strong>в</strong>ать через меню Сер<strong>в</strong>ис<br />

.Служебные программы .Восстано<strong>в</strong>ить базу данных.<br />

В каждый момент <strong>в</strong>ремени <strong>Access</strong> предоста<strong>в</strong>ляет <strong>в</strong>озможность создать (кнопкой<br />

панели инструменто<strong>в</strong> или из меню Файл .Создать базу данных) или открыть (кнопкой<br />

панели инструменто<strong>в</strong> или из меню Файл .Открыть базу данных) одну базу данных.<br />

Предста<strong>в</strong>лением ее на экране упра<strong>в</strong>ляют меню Вид и Окно. Иногда организуется с<strong>в</strong>язы<strong>в</strong>ание<br />

с таблицами других приложений через меню Файл .Внешние данные. Через это же меню<br />

база данных может дополняться но<strong>в</strong>ыми таблицами. Если данные, предназначенные для<br />

импорта, созданы с помощью приложений Windows, для копиро<strong>в</strong>ания удобно использо<strong>в</strong>ать<br />

буфер обмена, доступный через меню Пра<strong>в</strong>ка .Вста<strong>в</strong>ить. СУБД про<strong>в</strong>еряет уникальность<br />

имен объекто<strong>в</strong> базы данных, обеспечи<strong>в</strong>ая ее целостность. В тех случаях, когда работа с<strong>в</strong>язана<br />

с переносом и копиро<strong>в</strong>анием информации между отдельными частями документа или<br />

разными документами, на экран <strong>в</strong>ы<strong>в</strong>одится сразу несколько окон. Окна изменяются <strong>в</strong><br />

размерах и перемещаются по экрану с помощью мыши и упорядочи<strong>в</strong>аются командами меню<br />

Окно. Лишние окна могут быть <strong>в</strong>ременно скрыты без <strong>в</strong>ыгрузки из памяти с помощью меню<br />

Окно .Скрыть и <strong>в</strong>последст<strong>в</strong>ии <strong>в</strong>осстано<strong>в</strong>лены на экране из меню Окно .Отобразить.<br />

Закры<strong>в</strong>аются окна посредст<strong>в</strong>ом <strong>в</strong>ыбора меню Файл .Закрыть или кнопкой Закрыть.<br />

<strong>Access</strong> эффекти<strong>в</strong>но работает <strong>в</strong> сети, осущест<strong>в</strong>ляя а<strong>в</strong>томатическую блокиро<strong>в</strong>ку<br />

изменяемых записей. Поэтому, если база данных устано<strong>в</strong>лена <strong>в</strong> сети, <strong>в</strong>се пользо<strong>в</strong>атели могут<br />

одно<strong>в</strong>ременно <strong>в</strong><strong>в</strong>одить и пра<strong>в</strong>ить ее записи. <strong>Access</strong> сохраняет <strong>в</strong>несенные изменения <strong>в</strong>сякий<br />

раз, когда происходит переход к но<strong>в</strong>ой записи или нажимаются кла<strong>в</strong>иши .<br />

Можно разрешить одно<strong>в</strong>ременное изменение одной записи несколькими пользо<strong>в</strong>ателями<br />

через группу Блокиро<strong>в</strong>ка по умолчанию на <strong>в</strong>кладке Другие меню Сер<strong>в</strong>ис .Параметры.<br />

Чтобы открыть <strong>в</strong> сети базу данных только для чтения, <strong>в</strong> окне диалога, упра<strong>в</strong>ляющем<br />

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

Флажок Монопольно <strong>в</strong> этом же окне запрещает другим пользо<strong>в</strong>ателям доступ к базе данных,<br />

например, пока изменяется ее структура.<br />

Базы данных <strong>Access</strong> можно использо<strong>в</strong>ать <strong>в</strong> качест<strong>в</strong>е источника данных при создании<br />

документо<strong>в</strong> Word, серийных писем и электронных книг Excel. Для этого предназначено<br />

меню Сер<strong>в</strong>ис .С<strong>в</strong>язи с Office и кнопка на панели инструменто<strong>в</strong> окна базы данных.<br />

Таблицы<br />

Чтение и пра<strong>в</strong>ка таблиц<br />

Таблицы я<strong>в</strong>ляются осно<strong>в</strong>ными объектами базы данных. При наличии открытой базы<br />

данных любая ее таблица откры<strong>в</strong>ается с <strong>в</strong>кладки Таблицы, доступной через меню Вид<br />

.Объекты базы данных .Таблицы. Каждая отдельная запись таблицы, соот<strong>в</strong>етст<strong>в</strong>ующая


15<br />

определенной сущности предметной области, описы<strong>в</strong>ается атрибутами данных, разнесенных<br />

по имено<strong>в</strong>анным полям. Для но<strong>в</strong>ых записей <strong>в</strong> конце таблицы оста<strong>в</strong>лено с<strong>в</strong>ободное место, <strong>в</strong><br />

которое можно перейти щелчком мыши, из меню Записи .В<strong>в</strong>од данных, Пра<strong>в</strong>ка .Перейти<br />

или <strong>в</strong>ыбором кнопки на панели инструменто<strong>в</strong>. Если таблица открыта для транзакций,<br />

пользо<strong>в</strong>атель имеет <strong>в</strong>озможность пра<strong>в</strong>ки записей, их <strong>в</strong>ста<strong>в</strong>ки и удаления. При этом он<br />

работает с каждым атрибутом данных <strong>в</strong> пред<strong>в</strong>арительно <strong>в</strong>ыделенной ему ячейке таблицы как<br />

<strong>в</strong> обычном редакторе текста. Если <strong>в</strong> ячейке не х<strong>в</strong>атает места, ее можно раскрыть<br />

кла<strong>в</strong>иатурной комбинацией . Ряд операций, с<strong>в</strong>язанных с заполнением таблицы, <strong>в</strong><br />

<strong>Access</strong> а<strong>в</strong>томатизиро<strong>в</strong>ан. Например, для копиро<strong>в</strong>ания значения предыдущей записи<br />

достаточно нажать


16<br />

фильтре после <strong>в</strong><strong>в</strong>ода критерия <strong>в</strong>ыбирается меню Фильтр .Применить фильтр или<br />

нажимается кнопка . Пункт Исключить <strong>в</strong>ыделенное контекстного меню исключает из<br />

фильтра запись с <strong>в</strong>ыделенными данными. Чтобы <strong>в</strong>но<strong>в</strong>ь отобразить <strong>в</strong>се записи, используется<br />

меню Записи .Удалить фильтр или отжимается кнопка фильтра.<br />

Перемещение и копиро<strong>в</strong>ание записей и атрибуто<strong>в</strong> данных <strong>в</strong>ыполняется после <strong>в</strong>ыделения<br />

источника перемещения (копиро<strong>в</strong>ания) с при<strong>в</strong>лечением меню Пра<strong>в</strong>ка .Вырезать или<br />

Пра<strong>в</strong>ка .Копиро<strong>в</strong>ать, а затем Пра<strong>в</strong>ка .Вста<strong>в</strong>ить или под упра<strong>в</strong>лением соот<strong>в</strong>етст<strong>в</strong>ующих<br />

кнопок<br />

на панели инструменто<strong>в</strong>. Чтобы заменить содержимое отдельных записей<br />

данными из буфера обмена, они <strong>в</strong>ыделяются перед операцией <strong>в</strong>ста<strong>в</strong>ки. Область <strong>в</strong>ыделения<br />

записей предста<strong>в</strong>лена кнопками сле<strong>в</strong>а от пер<strong>в</strong>ой записи.<br />

Нажатие при <strong>в</strong>ыделенной записи при<strong>в</strong>одит к <strong>в</strong>ыделению пер<strong>в</strong>ого поля.<br />

Группа записей <strong>в</strong>ыделяется перетаски<strong>в</strong>анием указателя-стрелки по полю <strong>в</strong>ыделения, а<br />

диапазон ячеек — перетаски<strong>в</strong>анием указателя-креста по его диагонали. Вместо мыши можно<br />

пользо<strong>в</strong>аться кла<strong>в</strong>ишами-стрелками при нажатой кла<strong>в</strong>ише . Если <strong>в</strong>ыделено меньше<br />

записей, чем хранится <strong>в</strong> буфере, то часть буфера при <strong>в</strong>ста<strong>в</strong>ке остается неиспользо<strong>в</strong>анной, а<br />

если больше, то часть <strong>в</strong>ыделенных записей не меняется. В случаях, когда <strong>в</strong>ста<strong>в</strong>ка из буфера<br />

обмена за<strong>в</strong>ершается неудачно, <strong>Access</strong> а<strong>в</strong>томатически создает таблицу Ошибки <strong>в</strong>ста<strong>в</strong>ки, <strong>в</strong><br />

которую помещает данные из буфера. Для удаления <strong>в</strong>ыделенных записей служат меню<br />

Пра<strong>в</strong>ка .Удалить, Пра<strong>в</strong>ка .Удалить запись, кла<strong>в</strong>иши и , а также кнопка<br />

. Вста<strong>в</strong>ка но<strong>в</strong>ых записей осущест<strong>в</strong>ляется из меню Вста<strong>в</strong>ка .Запись и кла<strong>в</strong>ишами . Отмена последнего из сделанных изменений <strong>в</strong> ряде случае<strong>в</strong> <strong>в</strong>озможна из меню Пра<strong>в</strong>ка<br />

.Отменить, кнопкой или кла<strong>в</strong>иатурными комбинациями , .<br />

Таблица обладает фиксиро<strong>в</strong>анным макетом, с которым можно ознакомиться из меню Вид<br />

.Конструктор или щелчком по кнопке . Макет характеризуется набором с<strong>в</strong>ойст<strong>в</strong>:<br />

описанием, усло<strong>в</strong>иями на значения, характером сообщений об ошибках, объемом (фильтром)<br />

и порядком предста<strong>в</strong>ления (сортиро<strong>в</strong>кой) информации. Кроме того, каждое поле обладает<br />

инди<strong>в</strong>идуальным набором с<strong>в</strong>ойст<strong>в</strong>. Пер<strong>в</strong>ые три из них — имя поля, тип данных и описание —<br />

указы<strong>в</strong>аются <strong>в</strong> осно<strong>в</strong>ном бланке Конструктора таблицы. С<strong>в</strong>ойст<strong>в</strong>а доступны через меню Вид<br />

.С<strong>в</strong>ойст<strong>в</strong>а или одноименную кнопку.<br />

Макет раскры<strong>в</strong>ает порядок следо<strong>в</strong>ания полей и типы их данных, предста<strong>в</strong>ляемые на<br />

<strong>в</strong>кладке Общие. С <strong>в</strong>кладки Подстано<strong>в</strong>ка можно детализиро<strong>в</strong>ать особенности предста<strong>в</strong>ления<br />

поля <strong>в</strong> таблице. По тому, как данные отображают предметную область, их относят к<br />

различным типам. Каждый тип данных <strong>Access</strong> ограничи<strong>в</strong>ает множест<strong>в</strong>о значений, которые<br />

может принимать элемент <strong>в</strong> поле.<br />

Тексто<strong>в</strong>ый тип хранит бук<strong>в</strong>ы, числа, специальные сим<strong>в</strong>олы. Конкретная длина текста <strong>в</strong><br />

поле может быть задана <strong>в</strong> пределах от 1 до 255 сим<strong>в</strong>оло<strong>в</strong>. Тексто<strong>в</strong>ые поля формируются<br />

а<strong>в</strong>томатически <strong>в</strong>сякий раз, когда проектиро<strong>в</strong>щик таблицы не задает никакого типа. Текст не<br />

подлежит математической обработке. Число<strong>в</strong>ой тип хранит числа, имеющие до 15 значащих<br />

цифр (от 1 до 16 байт), <strong>в</strong> <strong>в</strong>иде, подходящем для про<strong>в</strong>едения <strong>в</strong>ычислений. Различают число<strong>в</strong>ые<br />

поля несколько размеро<strong>в</strong>: байт, целое и длинное целое, простое и длинное с пла<strong>в</strong>ающей<br />

точкой (<strong>в</strong>ещест<strong>в</strong>енные). Денежный тип — это те же числа (4 байта), но изображаемые на<br />

экране со знаком <strong>в</strong>алюты и с <strong>в</strong>ыделением десятичных позиций, сотен, тысяч, миллионо<strong>в</strong>. Тип<br />

Счетчик <strong>в</strong>едет а<strong>в</strong>томатический учет записей от 1 до 2 млрд. Значение <strong>в</strong> поле этого типа<br />

изменяется только а<strong>в</strong>томатически. При доба<strong>в</strong>лении записи <strong>в</strong> таблицу оно у<strong>в</strong>еличи<strong>в</strong>ается на<br />

единицу при последо<strong>в</strong>ательной организации, или случайным образом при упра<strong>в</strong>лении от<br />

датчика случайных чисел, а при удалении записи не изменяется. Логический тип определяет<br />

усло<strong>в</strong>ия истины (-1, Да, True) и лжи (0, Нет, False). Тип Дата/<strong>в</strong>ремя оперирует с любой<br />

допустимой датой от 100 до 9999 г., пра<strong>в</strong>ильно обрабаты<strong>в</strong>ая <strong>в</strong>исокосные годы и столетия.


17<br />

Поле МЕМО имеет <strong>в</strong>озможность хранить до 64000 сим<strong>в</strong>оло<strong>в</strong> информации. Начальная часть<br />

содержания такого поля предста<strong>в</strong>лена <strong>в</strong> таблице, остальное может считы<strong>в</strong>аться по запросу<br />

пользо<strong>в</strong>ателя при нажатии кла<strong>в</strong>иатурной комбинации . Поле объекта OLE<br />

поддержи<strong>в</strong>ает с<strong>в</strong>язь с объектами из различных приложений и ограничи<strong>в</strong>ается <strong>в</strong> размере лишь<br />

фактическими ресурсами памяти компьютера. Объектами OLE могут быть файлы растро<strong>в</strong>ой<br />

графики (.bmp, .dib, .tif) графических процессоро<strong>в</strong> Paint, Adobe, <strong>в</strong>екторной графики (.wmf) от<br />

MS Draw, Corel Draw, Power Point, форматиро<strong>в</strong>анные тексты (.doc, .rtf) Word,<br />

неформатиро<strong>в</strong>анные упако<strong>в</strong>анные тексты (.txt), таблицы (.xls, .dib) Excel, з<strong>в</strong>укозаписи (.wav),<br />

MIDI-файлы (.mid) и <strong>в</strong>идеозаписи (.avi). Тип Гиперссылка предста<strong>в</strong>ляет строку адреса,<br />

состоящую максимум из трех частей: текста, пути к файлу (<strong>в</strong> формате пути UNC) или<br />

странице (адрес URL) и дополнительного адреса смещения <strong>в</strong>нутри файла или страницы.<br />

Чтобы <strong>в</strong>ста<strong>в</strong>ить адрес гиперссылки <strong>в</strong> поле или <strong>в</strong> элемент упра<strong>в</strong>ления, <strong>в</strong>ыбирается меню меню<br />

Вста<strong>в</strong>ка .Гиперссылка. Об отсутст<strong>в</strong>ии данных <strong>в</strong> поле с<strong>в</strong>идетельст<strong>в</strong>ует специальный тип<br />

Null. Типы Счетчик со случайными значениями, поле МЕМО, поле объекта OLE и<br />

Гиперссылка не подходят для ключе<strong>в</strong>ых полей.<br />

Структуру базы данных можно проанализиро<strong>в</strong>ать с помощью сло<strong>в</strong>аря, созда<strong>в</strong>аемого <strong>в</strong><br />

<strong>Access</strong> из меню Сер<strong>в</strong>ис .Анализ .Архи<strong>в</strong>ариус.<br />

Ознакоми<strong>в</strong>шись со структурой, удобно <strong>в</strong>ернуться <strong>в</strong> таблицу через меню Вид .Таблица<br />

или щелчком по кнопке .<br />

Создание таблиц<br />

Создание любой но<strong>в</strong>ой таблицы начинается с задания ее макета. Для этого через меню<br />

Окно или кнопкой <strong>в</strong>ыполняется переход <strong>в</strong> окно базы данных (если оно не было<br />

пред<strong>в</strong>арительно <strong>в</strong>ыделено), на <strong>в</strong>кладке Таблицы нажимается кнопка Создать и <strong>в</strong>ыбирается<br />

Конструктор. В Конструкторе таблиц задается порядок следо<strong>в</strong>ания полей, им даются<br />

уникальные имена длиной до 64 сим<strong>в</strong>оло<strong>в</strong>, устана<strong>в</strong>ли<strong>в</strong>аются типы данных и с<strong>в</strong>ойст<strong>в</strong>а полей.<br />

Простые таблицы можно заполнять и без Конструктора <strong>в</strong> Режиме таблицы, предоста<strong>в</strong>и<strong>в</strong><br />

«с<strong>в</strong>ободу» <strong>Access</strong> <strong>в</strong> имено<strong>в</strong>ании полей и назначении типо<strong>в</strong> их данных. С этой же целью может<br />

быть использо<strong>в</strong>ан Мастер таблиц, который преобразует один из множест<strong>в</strong>а <strong>в</strong>строенных<br />

шаблоно<strong>в</strong> <strong>в</strong> подходящую таблицу. Мастер Импорт таблиц используется для преобразо<strong>в</strong>ания<br />

<strong>в</strong> формат <strong>Access</strong> ранее созданных таблиц DBase, FoxPro, структуриро<strong>в</strong>анных тексто<strong>в</strong> и<br />

прочих файло<strong>в</strong>. Мастер С<strong>в</strong>язь с таблицами соединяет с базой данных доступные таблицы<br />

различных формато<strong>в</strong>, не <strong>в</strong>ключая их <strong>в</strong> базу. Такое присоединение целесообразно, когда<br />

требуемый файл имеет большие размеры, когда он часто обно<strong>в</strong>ляется или планируется работа<br />

<strong>в</strong> сети. Аналогичные операции могут быть <strong>в</strong>ыполнены и без участия программ-мастеро<strong>в</strong>.<br />

Структура базы данных будет сформиро<strong>в</strong>ана после определения макето<strong>в</strong> <strong>в</strong>сех<br />

необходимых таблиц, задания ключей, типо<strong>в</strong> и с<strong>в</strong>ойст<strong>в</strong> полей и устано<strong>в</strong>ки с<strong>в</strong>язей между<br />

ними.<br />

Ключе<strong>в</strong>ые поля назначаются из меню Пра<strong>в</strong>ка .Ключе<strong>в</strong>ое поле или кнопкой , причем<br />

<strong>в</strong> соста<strong>в</strong>ных ключах объединяются поля произ<strong>в</strong>ольных типо<strong>в</strong>. Таблица а<strong>в</strong>томатически<br />

индексируется по ключе<strong>в</strong>ым полям. Индексом я<strong>в</strong>ляется специальная, <strong>в</strong> <strong>Access</strong> обычно<br />

недоступная пользо<strong>в</strong>ателю таблица, <strong>в</strong> которой записи физически упорядочены по заданному<br />

полю, неза<strong>в</strong>исимо от порядка, <strong>в</strong> котором заполнялась исходная таблица. «При<strong>в</strong>язы<strong>в</strong>ая»<br />

данные индексиро<strong>в</strong>анных полей к их расположению на диске, индексы ускоряют доступ к<br />

записям и обеспечи<strong>в</strong>ают их уникальность. Кроме ключе<strong>в</strong>ых полей, <strong>Access</strong> поз<strong>в</strong>оляет<br />

созда<strong>в</strong>ать дополнительные индексы по другим полям. До 32 таких индексо<strong>в</strong>, содержащих от<br />

одного до десяти полей, устана<strong>в</strong>ли<strong>в</strong>аются из меню Вид .Индексы или кнопкой .<br />

С<strong>в</strong>ойст<strong>в</strong>а, определяющие <strong>в</strong>ид и по<strong>в</strong>едение полей, также задаются <strong>в</strong> Конструкторе<br />

таблиц. Щелчок по имени поля откры<strong>в</strong>ает бланк его с<strong>в</strong>ойст<strong>в</strong> с комментариями, которые


18<br />

можно прочитать и изменить. В частности, некоторые таблицы содержат поля, <strong>в</strong> которые<br />

практически <strong>в</strong>сегда <strong>в</strong><strong>в</strong>одятся одни и те же значения. С этой целью полезно устано<strong>в</strong>ить<br />

конкретное значение с<strong>в</strong>ойст<strong>в</strong>а Значение по умолчанию. Так, <strong>в</strong> поля даты часто <strong>в</strong><strong>в</strong>одится<br />

текущая дата, для чего можно устано<strong>в</strong>ить Значение по умолчанию =Date().<br />

В большинст<strong>в</strong>е случае<strong>в</strong> значения, <strong>в</strong><strong>в</strong>одимые <strong>в</strong> поля, должны удо<strong>в</strong>лет<strong>в</strong>орять определенным<br />

усло<strong>в</strong>иям. Для этого следует задать соот<strong>в</strong>етст<strong>в</strong>ующее <strong>в</strong>ыражение <strong>в</strong> строке Усло<strong>в</strong>ие на<br />

значение. В общем случае <strong>в</strong>ыражение состоит из операндо<strong>в</strong> и с<strong>в</strong>язы<strong>в</strong>ающих их операторо<strong>в</strong>:<br />

арифметических (+, -, *, /, \, Mod, ^), сра<strong>в</strong>нения (=, ), логических (And, Or, Not,<br />

Xor, Eqv), а также слияния (&), разделения объекто<strong>в</strong> (!) и с<strong>в</strong>ойст<strong>в</strong> (.), пустого поля (Is),<br />

подобия (Like), списка (In) и диапазона (Between). К операндам относятся <strong>в</strong>строенные,<br />

число<strong>в</strong>ые, тексто<strong>в</strong>ые и <strong>в</strong>ременные константы (например, True, False, Null; 1,23E02;<br />

«строка»; #10:20:30#, #1.ян<strong>в</strong>.01#), имена объекто<strong>в</strong> (например, Клиенты, [Домашний адрес]).<br />

Большую группу операндо<strong>в</strong> <strong>в</strong>оз<strong>в</strong>ращают функции — даты и <strong>в</strong>ремени (Date, Now, Time,..),<br />

обработки текста (Lcase, Left, Len, Mid, Right, Str, Ucase, Val,..), преобразо<strong>в</strong>ания данных (CStr,<br />

Cvar,..), математические (Abs, Fix, Sgn, Sin, Sqr,..) и прочие (Choose, Iif, IsNull, Switch,..).<br />

Примеры усло<strong>в</strong>ий отбора: > 0 And < 1000, Not(«Сша» Or «Канада»), Like «[N-Z]*», Like S*<br />

Or Like V*, Like «*рим*», Like «*.*.98», In(5;7;12), Between 500 And 1000, Is Null. К числу<br />

шаблоно<strong>в</strong>, применяемых <strong>в</strong> <strong>в</strong>ыражениях, относятся * — произ<strong>в</strong>ольное число любых сим<strong>в</strong>оло<strong>в</strong><br />

и — один любой сим<strong>в</strong>ол. Выражения, относящиеся не к одному полю, а ко <strong>в</strong>сей таблице,<br />

заносятся <strong>в</strong> сторку Усло<strong>в</strong>ие на значение таблицы под кнопкой С<strong>в</strong>ойст<strong>в</strong>а таблицы ,<br />

например, Year([Дата <strong>в</strong>ыдачи])=1995. Усло<strong>в</strong>ия удобно формиро<strong>в</strong>ать с помощью<br />

Построителя <strong>в</strong>ыражений, откры<strong>в</strong>аемого кнопкой <strong>в</strong> поле Усло<strong>в</strong>ие на значение или<br />

на панели инструменто<strong>в</strong>. Если пользо<strong>в</strong>атель <strong>в</strong><strong>в</strong>едет недопустимое значение, <strong>Access</strong><br />

предложит его изменить. Чтобы обязать пользо<strong>в</strong>ателя заполнять поле, <strong>в</strong>ыбирается Да для<br />

с<strong>в</strong>ойст<strong>в</strong>а Обязательное поле. Формат поля определяет до четырех шаблоно<strong>в</strong> <strong>в</strong>ы<strong>в</strong>ода, а<br />

Маска <strong>в</strong><strong>в</strong>ода ускоряет <strong>в</strong><strong>в</strong>од по<strong>в</strong>торяющихся бук<strong>в</strong>осочетаний <strong>в</strong> поле. Те и другие при<strong>в</strong>едены <strong>в</strong><br />

таблице:<br />

Шаблоны <strong>в</strong>ы<strong>в</strong>ода<br />

Маски <strong>в</strong><strong>в</strong>ода<br />

0 Цифра или незначащий нуль 0 Обязательная цифра<br />

# Цифра или ничего 9 Необязательная цифра, пробел<br />

$# Число со знаком доллара # То же и знаки +, -<br />

#,# Десятичный разделитель L Обязательная бук<strong>в</strong>а<br />

#% Умножение на 100 и сим<strong>в</strong>ол % Необязательная бук<strong>в</strong>а<br />

# # Разделитель групп разрядо<strong>в</strong> А Обязательная бук<strong>в</strong>а, цифра<br />

#Е+, #E- Экспоненциальная нотация а Необязательная бук<strong>в</strong>а, цифра<br />

. Разделитель даты & Обязательный сим<strong>в</strong>ол<br />

d,m,yyyy День, месяц, год С Необязательный сим<strong>в</strong>ол<br />

: Разделитель <strong>в</strong>ремени ! Спра<strong>в</strong>а нале<strong>в</strong>о<br />

h,n,s Часы, минуты, секунды \ Постоянный сим<strong>в</strong>ол<br />

@ Позиция бук<strong>в</strong>енного сим<strong>в</strong>ола < Преобразо<strong>в</strong>ание <strong>в</strong> строко<strong>в</strong>ые<br />

& Необязательный сим<strong>в</strong>ол > Преобразо<strong>в</strong>ание <strong>в</strong> прописные<br />

> < Строчные / прописные бук<strong>в</strong>ы . Десятичный разделитель<br />

! Ле<strong>в</strong>ое <strong>в</strong>ыра<strong>в</strong>ни<strong>в</strong>ание текста «сим<strong>в</strong>ол» Любой сим<strong>в</strong>ол<br />

В частности, <strong>в</strong> Формате поля m, d месяц или день <strong>в</strong>ы<strong>в</strong>одятся одной цифрой, mm, dd, yy —<br />

д<strong>в</strong>умя цифрами, mmm, ddd — тремя пер<strong>в</strong>ыми бук<strong>в</strong>ами, а mmmm, dddd, yyyy — сло<strong>в</strong>ом. Формат<br />

<strong>в</strong>ремени может <strong>в</strong>ыглядеть как hh:nn «часо<strong>в</strong>» или h:nn A/P. Телефонный номер удобно<br />

предста<strong>в</strong>лять <strong>в</strong> формате (@@@)@@@-@@-@@ или «(812)»#. Для <strong>в</strong><strong>в</strong>ода имен подходит<br />

маска >L


19<br />

ограничить число цифр, например \(000\)000\-00\-00, а для <strong>в</strong>алюты подходит $### ###,00 или<br />

###р.<br />

Поля перемещаются с места на место перетаски<strong>в</strong>анием или через буфер обмена. Более<br />

того, через буфер обмена часть полей может быть заимст<strong>в</strong>о<strong>в</strong>ана из других таблиц и баз<br />

данных. Доба<strong>в</strong>лением но<strong>в</strong>ых полей <strong>в</strong> таблицу упра<strong>в</strong>ляет меню Вста<strong>в</strong>ка .Строки и кнопка<br />

, а удалением — Пра<strong>в</strong>ка .Удалить строки и кнопка .<br />

После задания последо<strong>в</strong>ательности, типо<strong>в</strong> и с<strong>в</strong>ойст<strong>в</strong> полей таблица сохраняется из меню<br />

Файл .Сохранить, Файл .Сохранить как/экспорт, кнопкой или кла<strong>в</strong>ишей .<br />

За<strong>в</strong>ерши<strong>в</strong> формиро<strong>в</strong>ание макета, приступают к заполнению записей, перейдя <strong>в</strong> таблицу<br />

через меню Вид .Режим таблицы или щелчком по кнопке . Когда записи будут<br />

заполнены, с помощью Мастера анализа таблиц, <strong>в</strong>ызы<strong>в</strong>аемого из меню Сер<strong>в</strong>ис .Анализ<br />

.Таблица или кнопкой , можно <strong>в</strong>ыполнить про<strong>в</strong>ерку качест<strong>в</strong>а полученных таблиц.<br />

Мастер анализа таблиц демонстрирует <strong>в</strong>се по<strong>в</strong>торяющиеся и неполные с<strong>в</strong>едения,<br />

обнаруженные <strong>в</strong> полях, и <strong>в</strong> ряде случае<strong>в</strong> помогает перераспределить информацию между<br />

отдельными таблицами. Этой же программой удобно пользо<strong>в</strong>аться для преобразо<strong>в</strong>ания<br />

обычных тексто<strong>в</strong>ых файло<strong>в</strong> или файло<strong>в</strong> электронных таблиц.<br />

С<strong>в</strong>язы<strong>в</strong>ание таблиц<br />

Созда<strong>в</strong>ая структуру базы данных, таблицы с<strong>в</strong>язы<strong>в</strong>ают между собой для контроля за<br />

<strong>в</strong><strong>в</strong>одом и обно<strong>в</strong>лением данных, для обеспечения целостности и однозначности информации <strong>в</strong><br />

полях. С<strong>в</strong>язь между таблицами определяет характер отношений со<strong>в</strong>падающих значений<br />

полей. С<strong>в</strong>язы<strong>в</strong>ание обычно <strong>в</strong>ыполняют после задания макето<strong>в</strong> таблиц, но до их заполнения.<br />

Пред<strong>в</strong>арительно закрытые таблицы с<strong>в</strong>язы<strong>в</strong>ают через меню Сер<strong>в</strong>ис .Схема данных или<br />

кнопкой . В окне Схема данных кнопкой откры<strong>в</strong>ается список и кнопками Доба<strong>в</strong>ить<br />

и Закрыть <strong>в</strong> макет схемы данных помещаются нужные таблицы. При необходимости через<br />

меню Пра<strong>в</strong>ка .Удалить с макета удаляются <strong>в</strong>ыделенные лишние столбцы, а кнопкой<br />

макет очищается. Поля таблиц с<strong>в</strong>язы<strong>в</strong>аются перетаски<strong>в</strong>анием между ними указателя мыши<br />

или заполнением специальных полей <strong>в</strong> окне диалога С<strong>в</strong>язи. В момент с<strong>в</strong>язы<strong>в</strong>ания или по<br />

мере необходимости уточняются параметры соединения <strong>в</strong> от<strong>в</strong>ет на д<strong>в</strong>ойной щелчок по линии<br />

с<strong>в</strong>язи или одинарный щелчок с последующим <strong>в</strong>ыбором меню С<strong>в</strong>язи .Изменить с<strong>в</strong>язь.<br />

Кнопка Объединение окна диалога С<strong>в</strong>язи поз<strong>в</strong>оляет <strong>в</strong>ыбрать переключатель, с<strong>в</strong>язы<strong>в</strong>ающий<br />

гла<strong>в</strong>ную и подчиненную таблицы различными отношениями. Флажок Обеспечение<br />

ссылочной целостности «заста<strong>в</strong>ляет» <strong>Access</strong> следить за тем, чтобы <strong>в</strong> полях не поя<strong>в</strong>лялось<br />

нес<strong>в</strong>язанных записей. Этот флажок <strong>в</strong>ыста<strong>в</strong>ляют тогда, когда гла<strong>в</strong>ная таблица заполнена и<br />

предстоит заполнение с<strong>в</strong>язанной таблицы. Флажок Каскадное обно<strong>в</strong>ление с<strong>в</strong>язанных полей<br />

<strong>в</strong>ызы<strong>в</strong>ает а<strong>в</strong>томатическое обно<strong>в</strong>ление с<strong>в</strong>язанной информации при <strong>в</strong>несении изменений <strong>в</strong> поле<br />

пер<strong>в</strong>ичного ключа гла<strong>в</strong>ной таблицы. Этот флажок устана<strong>в</strong>ли<strong>в</strong>ают перед изменением<br />

содержания гла<strong>в</strong>ной таблицы при наличии заполненных с<strong>в</strong>язанных таблиц. Флажок<br />

Каскадное удаление с<strong>в</strong>язанных записей разрешает удаление с<strong>в</strong>язанной информации<br />

одно<strong>в</strong>ременно с ее удалением <strong>в</strong> гла<strong>в</strong>ной таблице.<br />

Другой способ организации с<strong>в</strong>язанных таблиц осно<strong>в</strong>ан на программе Мастер<br />

подстано<strong>в</strong>ок. Для этого на <strong>в</strong>кладке Таблицы <strong>в</strong> окне базы данных <strong>в</strong>ыделяется таблица, <strong>в</strong><br />

которую надо доба<strong>в</strong>ить но<strong>в</strong>ое поле, присутст<strong>в</strong>ующее <strong>в</strong> другой таблице, и нажимается кнопка<br />

Открыть или Конструктор. Выделяется поле, перед которым следует доба<strong>в</strong>ить но<strong>в</strong>ое поле,<br />

<strong>в</strong>ыбирается меню Вста<strong>в</strong>ка .Столбец подстано<strong>в</strong>ок или Вста<strong>в</strong>ка .Поле подстано<strong>в</strong>ок,<br />

указы<strong>в</strong>ается таблица, содержащая нужное поле, а затем и само поле. Если требуемые поля<br />

отсутст<strong>в</strong>уют <strong>в</strong> Мастере подстано<strong>в</strong>ок, их имена <strong>в</strong><strong>в</strong>одятся <strong>в</strong> пустые строки <strong>в</strong> <strong>в</strong>ерхней части


20<br />

окна и задаются типы данных. После доба<strong>в</strong>ления полей <strong>Access</strong> устана<strong>в</strong>ли<strong>в</strong>ает с<strong>в</strong>язь между<br />

таблицами, отображаемую <strong>в</strong> окне Схема данных.<br />

Устано<strong>в</strong>ленные с<strong>в</strong>язи при необходимости удаляются из окна Схема данных кла<strong>в</strong>ишей<br />

или из меню Пра<strong>в</strong>ка .Удалить. Если предполагается изменение типа данных<br />

ключе<strong>в</strong>ого поля с<strong>в</strong>язанных таблиц, надо пред<strong>в</strong>арительно удалить с<strong>в</strong>язи и <strong>в</strong>осстано<strong>в</strong>ить их<br />

только после <strong>в</strong>несения изменений.<br />

Пример нормализо<strong>в</strong>анной базы данных Транспортный узел, <strong>в</strong> соста<strong>в</strong> которой <strong>в</strong>ходят пять<br />

таблиц:<br />

Таблица То<strong>в</strong>ары: ключе<strong>в</strong>ое поле Номер партии (тип — счетчик); неключе<strong>в</strong>ые поля<br />

Наз<strong>в</strong>ание (текст); Отпра<strong>в</strong>итель (текст); Получатель (текст); Цена (денежное);<br />

Характеристика (мемо).<br />

Таблица Контроль: ключе<strong>в</strong>ое поле Номер партии (длинное целое), я<strong>в</strong>ляющееся <strong>в</strong>нешним<br />

ключом к одноименному полю таблицы То<strong>в</strong>ары при с<strong>в</strong>язи 1:1; неключе<strong>в</strong>ые поля количест<strong>в</strong>о<br />

(целое); контроль (логическое).<br />

Таблица Склады: соста<strong>в</strong>ной ключ из полей Номер партии (длинное целое) и Номер<br />

склада (байт), причем поле Номер партии я<strong>в</strong>ляется <strong>в</strong>нешним ключом для с<strong>в</strong>язи с таким же<br />

полем таблицы Контроль <strong>в</strong> отношении 1:1; неключе<strong>в</strong>ое поле Дата поступления (дата).<br />

Таблица Организации: ключе<strong>в</strong>ое поле Организация (текст) с<strong>в</strong>язано с <strong>в</strong>нешними ключами<br />

Отпра<strong>в</strong>итель и Получатель таблицы То<strong>в</strong>ары <strong>в</strong> отношении 1:N; неключе<strong>в</strong>ые поля Страна<br />

(текст), Рек<strong>в</strong>изиты (текст).<br />

Таблица Страны: ключе<strong>в</strong>ое поле Страна (текст) с<strong>в</strong>язано с <strong>в</strong>нешним ключом такого же<br />

поля предыдущей таблицы <strong>в</strong> отношении 1:N; неключе<strong>в</strong>ые поля Валюта (текст), Курс<br />

(<strong>в</strong>ещест<strong>в</strong>енное).<br />

Запросы<br />

Язык запросо<strong>в</strong> QBE<br />

Любой язык запросо<strong>в</strong> предоста<strong>в</strong>ляет пользо<strong>в</strong>ателю набор пра<strong>в</strong>ил и инструмент для<br />

формиро<strong>в</strong>ания <strong>в</strong>опроса с информацией о желаемом результате. В от<strong>в</strong>ет на запрос СУБД<br />

а<strong>в</strong>томатически <strong>в</strong>ыдает результат <strong>в</strong> <strong>в</strong>иде экранной (<strong>в</strong>иртуальной) таблицы, отражающей<br />

итого<strong>в</strong>ый набор данных (RecordSet) <strong>в</strong> определенном макете (QueryDef), на базе которого<br />

<strong>в</strong>последст<strong>в</strong>ии можно построить таблицу, отчет или но<strong>в</strong>ый запрос. К числу наиболее<br />

популярных <strong>в</strong> практике СУБД относятся непроцедурные <strong>в</strong>изуальные языки запросо<strong>в</strong> на<br />

примере QBE.<br />

При наличии открытой базы данных любой ее запрос откры<strong>в</strong>ается с <strong>в</strong>кладки Запросы,<br />

доступной через меню Вид .Объекты базы данных .Запросы. После <strong>в</strong>ыделения запроса и<br />

нажатия кнопки Открыть пользо<strong>в</strong>ателю демонстрируется результат <strong>в</strong> <strong>в</strong>иде преобразо<strong>в</strong>анной<br />

соот<strong>в</strong>етст<strong>в</strong>ующим образом таблицы или группы таблиц. Открытие запроса <strong>в</strong>едет к открытию<br />

<strong>в</strong>сех таблиц, <strong>в</strong>ключенных <strong>в</strong> запрос, без <strong>в</strong>ы<strong>в</strong>ода их на экран. Все изменения данных,<br />

про<strong>в</strong>одимые <strong>в</strong> ходе <strong>в</strong>ыполнения запроса, отражаются <strong>в</strong> этих таблицах.<br />

Если <strong>в</strong> базе данных не сохранены ранее сделанные запросы или сущест<strong>в</strong>ующие запросы<br />

не удо<strong>в</strong>лет<strong>в</strong>оряют пользо<strong>в</strong>ателя, можно создать но<strong>в</strong>ый запрос, <strong>в</strong>оспользо<strong>в</strong>а<strong>в</strong>шись меню<br />

Вста<strong>в</strong>ка .Запрос, кнопкой Создать <strong>в</strong> окне базы данных или кнопкой панели<br />

инструменто<strong>в</strong>, после нажатия которой <strong>в</strong>ыбирается Запрос. <strong>Access</strong> поддержи<strong>в</strong>ает четыре<br />

категории запросо<strong>в</strong>: запрос на <strong>в</strong>ыборку, запрос на изменение, запрос с аргументами<br />

(параметрами), перекрестный запрос. Для начала лучше <strong>в</strong>сего <strong>в</strong>ступить <strong>в</strong> диалог с Мастером<br />

запросо<strong>в</strong> с целью создания запроса на <strong>в</strong>ыборку. Мастер Простой запрос упра<strong>в</strong>ляет<br />

<strong>в</strong>ключением <strong>в</strong> документ необходимых полей из отдельной таблицы или различных с<strong>в</strong>язанных<br />

между собой таблиц и ранее созданных запросо<strong>в</strong> и определяет наз<strong>в</strong>ание запроса, а затем<br />

<strong>в</strong>ы<strong>в</strong>одит на экран результат <strong>в</strong> <strong>в</strong>иде таблицы. Такой результат часто требует доработки <strong>в</strong><br />

режиме Вид .Конструктор запросо<strong>в</strong>.


21<br />

Большинст<strong>в</strong>о запросо<strong>в</strong> создается Конструктором, откры<strong>в</strong>аемым из списка Запрос под<br />

кнопкой или кнопкой Создать окна базы данных. В окне Конструктора запроса<br />

поочередно указы<strong>в</strong>аются таблицы или запросы, содержащие необходимые с<strong>в</strong>едения, и<br />

нажимается кнопка Доба<strong>в</strong>ить. Затем окно закры<strong>в</strong>ается. Если <strong>в</strong>ыбранных таблиц<br />

недостаточно, их число можно у<strong>в</strong>еличить через меню Запрос .Доба<strong>в</strong>ить таблицу или<br />

кнопкой . Поля, участ<strong>в</strong>ующие <strong>в</strong> запросе, <strong>в</strong><strong>в</strong>одятся <strong>в</strong> бланк запроса либо перетаски<strong>в</strong>анием<br />

их имен, либо д<strong>в</strong>ойным щелчком по имени, либо <strong>в</strong>ыбором их из раскры<strong>в</strong>ающихся списко<strong>в</strong><br />

Поле и Имя таблицы непосредст<strong>в</strong>енно <strong>в</strong> бланке запроса. Чтобы <strong>в</strong><strong>в</strong>ести <strong>в</strong> бланк сразу <strong>в</strong>се<br />

поля, можно <strong>в</strong>ыполнить д<strong>в</strong>ойной щелчок по заголо<strong>в</strong>ку списка полей и после <strong>в</strong>ыделения <strong>в</strong>се<br />

имена переместить <strong>в</strong> бланк или <strong>в</strong>оспользо<strong>в</strong>аться пер<strong>в</strong>ой строкой списка полей, помеченной<br />

з<strong>в</strong>ездочкой. Результат <strong>в</strong>ыполнения запроса предста<strong>в</strong>ляется <strong>в</strong> <strong>в</strong>иде итого<strong>в</strong>ого набора данных<br />

после обращения к меню Запрос .Запуск, после щелчка кнопкой<br />

или после <strong>в</strong>ыбора<br />

пункта Режим таблицы под кнопкой . При сохранении запроса <strong>в</strong> файле базы данных<br />

остается его макет.<br />

Ознакоми<strong>в</strong>шись с результатом запроса, можно <strong>в</strong>ернуться <strong>в</strong> Конструктор через меню Вид<br />

.Конструктор запросо<strong>в</strong> или кнопку , чтобы уточнить с<strong>в</strong>едения или усло<strong>в</strong>ия отбора<br />

данных. В строке Усло<strong>в</strong>ие отбора обычно формулируют критерии поиска информации <strong>в</strong><br />

каждом поле <strong>в</strong> <strong>в</strong>иде <strong>в</strong>ыражений, аналогичных Усло<strong>в</strong>иям на значение <strong>в</strong> с<strong>в</strong>ойст<strong>в</strong>ах полей<br />

Флажок строки Вы<strong>в</strong>од на экран снимается, если отсутст<strong>в</strong>ует необходимость <strong>в</strong> просмотре<br />

результата по какому-нибудь полю.<br />

Итого<strong>в</strong>ыми наборами данных можно не только отображать с<strong>в</strong>язанные записи<br />

объединенных таблиц базы данных (Inner Join — «<strong>в</strong>нутреннее объединение»), но и <strong>в</strong><strong>в</strong>одить<br />

но<strong>в</strong>ые либо размыкать сущест<strong>в</strong>ующие с<strong>в</strong>язи. Подобные «<strong>в</strong>нешние объединения» поз<strong>в</strong>оляют<br />

отображать <strong>в</strong>се записи гла<strong>в</strong>ной таблицы неза<strong>в</strong>исимо от наличия со<strong>в</strong>падающих значений <strong>в</strong><br />

с<strong>в</strong>язанной таблице (Left Join) или <strong>в</strong>се записи с<strong>в</strong>язанной таблицы неза<strong>в</strong>исимо от гла<strong>в</strong>ной<br />

таблицы (Right Join). Переключение типа объединения <strong>в</strong>ыполняется через меню Вид<br />

.Параметры объединения при <strong>в</strong>ыделенной линии с<strong>в</strong>язи таблиц. Характер объединения<br />

отра<strong>в</strong>жается <strong>в</strong> бланке запроса стрелкой на линии с<strong>в</strong>язи. Кроме того, даже между полями<br />

одной таблицы <strong>в</strong> запросе можно устано<strong>в</strong>ить так назы<strong>в</strong>аемое «самообъединение»,<br />

про<strong>в</strong>еряющее эти поля на со<strong>в</strong>падение значений.<br />

С<strong>в</strong>ойст<strong>в</strong>о запроса Уникальные значения наклады<strong>в</strong>ает запрет на изменение итого<strong>в</strong>ого<br />

набора данных, а <strong>в</strong>месте со с<strong>в</strong>ойст<strong>в</strong>ом Уникальные записи исключает одинако<strong>в</strong>ые записи из<br />

итого<strong>в</strong>ого набора. Исключить по<strong>в</strong>торяющиеся записи можно, также, с помощью меню Вид<br />

.Группо<strong>в</strong>ые операции или кнопки , доба<strong>в</strong>ляющих <strong>в</strong> бланк запроса строку Группо<strong>в</strong>ая<br />

операция с аргументом Группиро<strong>в</strong>ка. К сгруппиро<strong>в</strong>анным записям могут быть применены<br />

итого<strong>в</strong>ые функции, определяющие суммарные, средние, минимальные, максимальные или<br />

иные статистические значения полей, <strong>в</strong>ыбранные из списка Группо<strong>в</strong>ая операция для <strong>в</strong>сех<br />

число<strong>в</strong>ых полей:<br />

Функция группо<strong>в</strong>ой операции<br />

Avg<br />

Count<br />

First<br />

Last<br />

Max<br />

Min<br />

StDev<br />

Значение<br />

Среднее аргументо<strong>в</strong><br />

Число непустых записей<br />

Значение поля из пер<strong>в</strong>ой записи<br />

Значение поля из последней записи<br />

Максимальный аргумент<br />

Минимальный аргумент<br />

Среднек<strong>в</strong>адратическое отклонение


Sum<br />

Var<br />

Функция группо<strong>в</strong>ой операции<br />

22<br />

Значение<br />

Сумма аргументо<strong>в</strong><br />

Дисперсия аргументо<strong>в</strong><br />

Для определения нескольких группо<strong>в</strong>ых операций над одним полем, это поле<br />

многократно доба<strong>в</strong>ляется <strong>в</strong> бланк запроса. Для упорядочения результато<strong>в</strong> запроса<br />

указы<strong>в</strong>аются необходимые с<strong>в</strong>ойст<strong>в</strong>а <strong>в</strong> строке Сортиро<strong>в</strong>ка. Сортиро<strong>в</strong>ка по нескольким полям<br />

<strong>в</strong>ыполняется <strong>в</strong> том порядке, <strong>в</strong> каком они расположены. Из меню Вид .С<strong>в</strong>ойст<strong>в</strong>а .Набор<br />

значений или кнопкой можно устано<strong>в</strong>ить число записей, <strong>в</strong>ы<strong>в</strong>одимых <strong>в</strong> итого<strong>в</strong>ый<br />

набор.<br />

Полям запроса можно прис<strong>в</strong>аи<strong>в</strong>ать имена, отличные от имен полей таблицы. Для этого <strong>в</strong><br />

строке Поле перед табличным именем пишется но<strong>в</strong>ое имя с д<strong>в</strong>оеточием.<br />

Чтобы организо<strong>в</strong>ать <strong>в</strong> запросе <strong>в</strong>ычисляемое поле, <strong>в</strong> строку Поле с<strong>в</strong>ободного столбца<br />

бланка запроса <strong>в</strong><strong>в</strong>одится <strong>в</strong>ыражение, например Но<strong>в</strong>оеИмя:[Год]*2-50, <strong>в</strong> котором <strong>в</strong><br />

прямоугольные скобки заключаются имена число<strong>в</strong>ых полей таблиц базы данных. В строке<br />

Группо<strong>в</strong>ая операция этого столбца <strong>в</strong>ыбирается Выражение. При изменении значений<br />

полей, используемых <strong>в</strong> <strong>в</strong>ыражении, значения <strong>в</strong>ычисляемых полей и группо<strong>в</strong>ых операций<br />

а<strong>в</strong>томатически обно<strong>в</strong>ляются. Если <strong>в</strong> скобки заключить константу (число, сло<strong>в</strong>о, пробел…), то<br />

она будет <strong>в</strong>писана <strong>в</strong>о <strong>в</strong>се записи <strong>в</strong>ычисляемого поля, что удобно для группиро<strong>в</strong>ки <strong>в</strong>сех без<br />

исключения записей таблицы. Аналогичную роль играет функция Count, если на базе запроса<br />

с <strong>в</strong>ычисляемым полем создать но<strong>в</strong>ый <strong>в</strong>ычисляемый запрос для подстчета итого<strong>в</strong> по <strong>в</strong>сей<br />

таблице. Функция Format(Выражение; ШаблонФормата)форматирует любое поле<br />

Результаты статистических расчето<strong>в</strong> по данным поля отображает перекрестный запрос.<br />

Эти результаты группируются по д<strong>в</strong>ум наборам данных, один из которых размещается <strong>в</strong><br />

ле<strong>в</strong>ом столбце, а другой занимает <strong>в</strong>ерхнюю строку. Имена заголо<strong>в</strong>ко<strong>в</strong> столбцо<strong>в</strong> такого<br />

запроса можно перечислить <strong>в</strong> С<strong>в</strong>ойст<strong>в</strong>е запроса Заголо<strong>в</strong>ки столбцо<strong>в</strong>.<br />

Запросы на изменение используются для доба<strong>в</strong>ления, удаления и обно<strong>в</strong>ления записей, а<br />

также для сохранения итого<strong>в</strong>ого набора данных <strong>в</strong> <strong>в</strong>иде но<strong>в</strong>ой таблицы. Разно<strong>в</strong>идностью таких<br />

запросо<strong>в</strong> я<strong>в</strong>ляются упра<strong>в</strong>ляющие запросы, поз<strong>в</strong>оляющие созда<strong>в</strong>ать, изменять и удалять<br />

таблицы, а также созда<strong>в</strong>ать и удалять индексы.<br />

Запросу на изменение должно предшест<strong>в</strong>о<strong>в</strong>ать создание таблицы результато<strong>в</strong> запроса на<br />

<strong>в</strong>ыборку. После <strong>в</strong>ыборки <strong>в</strong> режиме конструктора <strong>в</strong>ыбирается меню Запрос .Создание<br />

таблицы или <strong>в</strong>ыбирается строка Создание таблицы под кнопкой . После задания имени<br />

и нажатия кнопки ОК запрос на <strong>в</strong>ыборку преобразуется <strong>в</strong> запрос на создание таблицы и его<br />

значок помечается <strong>в</strong>осклицательным знаком. При открытии такого запроса не отображается<br />

результирующий набор записей, а создается но<strong>в</strong>ая таблица. К созданной таблице<br />

Конструктор поз<strong>в</strong>оляет обратиться с запросом на изменение: обно<strong>в</strong>ление, доба<strong>в</strong>ление или<br />

удаление записей с помощью меню Запрос .Обно<strong>в</strong>ление, Запрос .Доба<strong>в</strong>ление, Запрос<br />

.Удаление или <strong>в</strong>ыбором таких строк под кнопкой . В бланке запроса на обно<strong>в</strong>ление<br />

строка Обно<strong>в</strong>ление содержит но<strong>в</strong>ое значение обно<strong>в</strong>ляемого поля, а Усло<strong>в</strong>иями отбора<br />

ограничены обрабаты<strong>в</strong>аемые записи. В бланке запроса на удаление строка Удаление может<br />

содержать значения Из и Выражение. Пер<strong>в</strong>ое указы<strong>в</strong>ает поле обрабаты<strong>в</strong>аемой таблицы, а<br />

<strong>в</strong>торое — поле, для которого задано усло<strong>в</strong>ие удаления. Доба<strong>в</strong>ление данных <strong>в</strong> таблицы не<br />

<strong>в</strong>ызы<strong>в</strong>ает проблем при идентичности полей таблицы и итого<strong>в</strong>ого набора данных. Если же<br />

имена полей различны, <strong>в</strong> строке Доба<strong>в</strong>ление бланка запроса на доба<strong>в</strong>ление следует добиться<br />

соот<strong>в</strong>етст<strong>в</strong>ия имен. В частности, запрос на доба<strong>в</strong>ление к таблице с полем типа Счетчик<br />

таблицы с число<strong>в</strong>ым полем поз<strong>в</strong>оляет устано<strong>в</strong>ить нужный начальный номер <strong>в</strong> поле Счетчика.<br />

Чтобы сформиро<strong>в</strong>ать запрос с параметрами, <strong>в</strong> режиме Конструктор <strong>в</strong> каждое поле,<br />

которое предполагается использо<strong>в</strong>ать как параметр, следует <strong>в</strong><strong>в</strong>ести <strong>в</strong> ячейку строки Усло<strong>в</strong>ие<br />

отбора текст приглашения, заключенный <strong>в</strong> к<strong>в</strong>адратные скобки. Типы данных параметро<strong>в</strong><br />

запроса назначаются при необходимости из меню Запрос .Параметры.


23<br />

Эк<strong>в</strong>и<strong>в</strong>алентом однотабличного запроса я<strong>в</strong>ляется фильтр из меню Записи .Фильтр<br />

.Расширенный фильтр <strong>в</strong>кладки Таблицы окна базы данных. Результат фильтрации можно<br />

сохранить <strong>в</strong> форме запроса через меню Файл .Сохранить как запрос. Для по<strong>в</strong>торного его<br />

использо<strong>в</strong>ания, после <strong>в</strong>ыбора меню Записи .Фильтр .Расширенный фильтр <strong>в</strong>ыбирается<br />

Файл .Загрузить из запроса, либо <strong>в</strong>едется работа с <strong>в</strong>кладки Запросы окна базы данных.<br />

Механизм QBE поз<strong>в</strong>оляет <strong>в</strong>ыполнять <strong>в</strong>се операции реляционного исчисления:<br />

• сформиро<strong>в</strong>а<strong>в</strong> запрос на <strong>в</strong>ыборку из с<strong>в</strong>язанных таблиц с идентичными макетами и <strong>в</strong>ключи<strong>в</strong><br />

<strong>в</strong> бланк запроса <strong>в</strong>се поля одной из них, нетрудно убедиться (пра<strong>в</strong>ым щелчком по <strong>в</strong>ыделенной<br />

линии с<strong>в</strong>язи или из меню Вид .Параметры объединения), что <strong>Access</strong> предлагает <strong>в</strong>ключить <strong>в</strong><br />

результат запроса только результат пересечения;<br />

• <strong>в</strong>ычитание и дополнение таблиц с одинако<strong>в</strong>ыми макетами <strong>в</strong>ыполняет Мастер записей без<br />

подчиненных;<br />

• соединение с<strong>в</strong>язанных таблиц с разными макетами, но идентичными ключе<strong>в</strong>ыми полями<br />

организуется через <strong>в</strong>ключение <strong>в</strong> бланк запроса <strong>в</strong>сех непо<strong>в</strong>торяющихся полей;<br />

• перемножение нес<strong>в</strong>язанных таблиц <strong>в</strong>ыполняется <strong>в</strong> <strong>Access</strong> при формиро<strong>в</strong>ании запроса ко<br />

<strong>в</strong>сем непо<strong>в</strong>торяющимся полям обеих таблиц;<br />

• для деления с<strong>в</strong>язанных таблиц формируется запрос на <strong>в</strong>ыборку полей делимого, не<br />

<strong>в</strong>ходящих <strong>в</strong> делитель;<br />

• для объединения таблиц без ключей сначала <strong>в</strong>ыполняется запрос на создание копии<br />

пер<strong>в</strong>ой таблицы, затем — на ее доба<strong>в</strong>ление ко <strong>в</strong>торой таблице, и <strong>в</strong> заключение — на <strong>в</strong>ыборку<br />

из объединенной таблицы непо<strong>в</strong>торяющихся записей посредст<strong>в</strong>ом их группиро<strong>в</strong>ки.<br />

Язык запросо<strong>в</strong> SQL<br />

Диалект <strong>Access</strong> SQL предназначен исключительно для формиро<strong>в</strong>ания запросо<strong>в</strong> к<br />

реляционным базам данных, актуализации и упра<strong>в</strong>ления ими, а не для разработки или<br />

модификации таблиц. Поэтому он не поддержи<strong>в</strong>ает многих <strong>в</strong>озможностей ANSI SQL.<br />

Осно<strong>в</strong>у <strong>Access</strong> SQL соста<strong>в</strong>ляют SQL-операторы Create, Insert, Select и др. Каждый запрос<br />

SQL указы<strong>в</strong>ает, что нужно сделать с <strong>в</strong>ходными данными для генерации <strong>в</strong>ыходной<br />

информации, и <strong>в</strong>оз<strong>в</strong>ращает информацию <strong>в</strong> табличном формате. Для конкретизации<br />

<strong>в</strong>ыполняемых дейст<strong>в</strong>ий SQL-операторы снабжаются SQL-аргументами, задающими имена<br />

таблиц и полей, усло<strong>в</strong>ия и отношения. В запрос <strong>в</strong>ключаются, также, разного рода<br />

анализирующие SQL-функции и знаки операций: — подстано<strong>в</strong>очный знак замены любого<br />

сим<strong>в</strong>ола, * — подстано<strong>в</strong>очный знак замены любой группы сим<strong>в</strong>оло<strong>в</strong>, # — подстано<strong>в</strong>очный<br />

знак замены любой цифры или ограничитель значений даты и <strong>в</strong>ремени, ; — конец запроса, ,<br />

— разделитель списка, ' — ограничитель тексто<strong>в</strong>ой строки, Like – оператор подобия, Between<br />

— указатель диапазона. При обработке запросо<strong>в</strong> лишние пробелы и знаки конца запроса<br />

игнорируются.<br />

Любой QBE-запрос может быть предста<strong>в</strong>лен <strong>в</strong> <strong>Access</strong> как запрос SQL через меню Вид<br />

.Режим SQL или <strong>в</strong>ыбором Режим SQL под кнопкой . В то же <strong>в</strong>ремя, пользо<strong>в</strong>атель<br />

имеет <strong>в</strong>озможность самостоятельного формиро<strong>в</strong>ания SQL-запросо<strong>в</strong> <strong>в</strong> этих режимах.<br />

Центральным, наиболее часто используемым SQL-оператором я<strong>в</strong>ляется Select. Запрос на<br />

<strong>в</strong>ыборку с этим оператором имеет формат<br />

Select [{All | Distinct | Distinctrow}] { * | списокПолей} From списокТаблиц [Where<br />

логическоеВыражение] [In списокЗначений ] [Group By логическоеВыражение] [Having<br />

логическоеВыражение] [Order By списокПолей [{Asc | Desc}]]];<br />

где списокПолей = {имяТаблицы.* | [имяТаблицы.]имяПоля [,…]]};<br />

списокТаблиц = имяТаблицы [, ...];<br />

списокЗначений = Значение [, ...].


24<br />

К<strong>в</strong>адратные скобки <strong>в</strong> структуре формата указы<strong>в</strong>ают на необязательную (факультати<strong>в</strong>ную)<br />

часть <strong>в</strong>ыражения, а многоточие — на <strong>в</strong>озможную ее по<strong>в</strong>торяемость. Если имя поля содержит<br />

пробелы, его также заключают <strong>в</strong> к<strong>в</strong>адратные скобки. Фигурные скобки обрамляют группу из<br />

нескольких <strong>в</strong>арианто<strong>в</strong>, разделенных <strong>в</strong>ертикальной чертой (|) — знаком операции Или. В<br />

конкретном <strong>в</strong>ыражении следует использо<strong>в</strong>ать один из <strong>в</strong>арианто<strong>в</strong> без многоточия, к<strong>в</strong>адратных<br />

и фигурных скобок.<br />

В общем случае оператор Select определяет поля, обрабаты<strong>в</strong>аемые <strong>в</strong> запросе. Из таблиц,<br />

заданных аргументом From, из<strong>в</strong>лекаются записи:<br />

Пример 1.<br />

SELECT Фирма, Год, Президент FROM Таблица;<br />

Здесь из Таблица <strong>в</strong>ыбираются <strong>в</strong>се записи <strong>в</strong> полях Фирма, Год, Президент, а <strong>в</strong> следующем<br />

примере находится произ<strong>в</strong>едение д<strong>в</strong>ух таблиц:<br />

Пример 2.<br />

SELECT Задачи.*, Сотрудники.* FROM [Задачи], [Сотрудники];<br />

В результат запроса <strong>в</strong>ключаются записи, удо<strong>в</strong>лет<strong>в</strong>оряющие усло<strong>в</strong>иям Where:<br />

Пример 3.<br />

SELECT Таблица1.Фирма, Таблица2.Год, Таблица1.Президент FROM Таблица1,<br />

Таблица2 WHERE Таблица2.Год > 1950;<br />

Диапазон значений запроса определяется аргументами функции In, заключенными <strong>в</strong><br />

скобки:<br />

Пример 4.<br />

SELECT * FROM Таблица, Таблица1 WHERE Таблица.Имя IN ("И<strong>в</strong>ано<strong>в</strong>", "Петро<strong>в</strong>") AND<br />

Таблица1.Оклад > 10000;<br />

В примере <strong>в</strong>ыбираются <strong>в</strong>се записи д<strong>в</strong>ух таблиц, если поле Имя <strong>в</strong> Таблица содержит «И<strong>в</strong>ано<strong>в</strong>»,<br />

«Петро<strong>в</strong>», а значение поля Оклад <strong>в</strong> Таблица1 пре<strong>в</strong>ышает 10000.<br />

Аргументы All, Distinct, Distinctrow упра<strong>в</strong>ляют <strong>в</strong>ключением и исключением дубликато<strong>в</strong>:<br />

Пример 5.<br />

SELECT DISTINCT Таблица2.* FROM Таблица2;<br />

Order By сортирует <strong>в</strong>ыходные данные <strong>в</strong> заданной последо<strong>в</strong>ательности:<br />

Пример 6.<br />

SELECT DISTINCTROW * FROM Таблица, Таблица1 ORDER BY Таблица.Имя, Таблица.<br />

Оклад;


25<br />

Здесь из Таблица и Таблица1 <strong>в</strong>ыбираются непо<strong>в</strong>торяющиеся записи с сортиро<strong>в</strong>кой по полям<br />

Имя и Оклад из Таблица.<br />

Для <strong>в</strong>ычислений <strong>в</strong> SQL используются статистические функции, при<strong>в</strong>еденные ранее <strong>в</strong><br />

списке группо<strong>в</strong>ых операций:<br />

Пример 7.<br />

SELECT Имя, SUM(Оклад) FROM Таблица GROUP BY Имя;<br />

Здесь аргумент Group By формирует одну запись из записей с одинако<strong>в</strong>ым значением поля<br />

Имя. В запросе формируется информация о поле Оклад, причем для каждого работника<br />

<strong>в</strong>ы<strong>в</strong>одится одна запись с суммой.<br />

Аргумент Having ограничи<strong>в</strong>ает число записей:<br />

Пример 8.<br />

SELECT Оклад FROM Таблица GROUP BY Оклад HAVING COUNT(Имя) > 1;<br />

В этом запросе формируются с<strong>в</strong>едения обо <strong>в</strong>сех работниках, упомянутых более одного раза.<br />

Пример 9.<br />

SELECT MIN(Оклад) AS Минимум, MAX(Оклад) AS Максимум, AVG(Оклад) AS<br />

Среднее FROM Таблица;<br />

В этом примере <strong>в</strong>ы<strong>в</strong>одятся минимальное, максимальное и среднее значения оклада <strong>в</strong> полях,<br />

наз<strong>в</strong>ания которых следуют за As.<br />

Пример 10.<br />

SELECT Имя, Оклад FROM Таблица WHERE Оклад BETWEEN 1000 AND 3000;<br />

Сообщаются работники, имеющие оклады от 1000 до 3000.<br />

Запрос <strong>в</strong> формате<br />

Select списокПолей Into но<strong>в</strong>аяТаблица<br />

[In <strong>в</strong>нешняяБазаДанных] From исходнаяТаблица;<br />

создает таблицы. Если при этом не указы<strong>в</strong>аются поля и не наклады<strong>в</strong>ается усло<strong>в</strong>ий,<br />

<strong>в</strong>ыполняется копиро<strong>в</strong>ание таблиц:<br />

Пример 11.<br />

SELECT Имя, Оклад INTO Таблица2 FROM Таблица1 ORDER BY Оклад, Имя;<br />

В Таблица2 заносятся д<strong>в</strong>а поля, отсортиро<strong>в</strong>анных по Оклад (ключе<strong>в</strong>ое поле) и Имя.<br />

Аргумент Inner Join объединяет записи из д<strong>в</strong>ух таблиц, если с<strong>в</strong>язующие поля этих<br />

таблиц содержат одинако<strong>в</strong>ые значения:<br />

Select списокПолей From имяТаблицы1 Inner Join имяТаблицы2 On<br />

имяТаблицы1.имяПоля1 операторCра<strong>в</strong>нения имяТаблицы2.имяПоля2;


26<br />

В частности, Inner Join можно применить к таблицам Отделы и Сотрудники для отбора <strong>в</strong>сех<br />

сотруднико<strong>в</strong> каждого отдела. Для отбора же <strong>в</strong>сех отдело<strong>в</strong> (<strong>в</strong> том числе тех, <strong>в</strong> которых нет ни<br />

одного сотрудника) или <strong>в</strong>сех сотруднико<strong>в</strong> (<strong>в</strong> том числе тех, которые не приписаны ни к<br />

какому отделу) следует использо<strong>в</strong>ать аргументы Left Join или Right Join, которые создают<br />

<strong>в</strong>нешнее объединение.<br />

Пример 12.<br />

SELECT Категория, Марка FROM Типы INNER JOIN То<strong>в</strong>ары ON Типы.КодТипа =<br />

То<strong>в</strong>ары.КодТипа;<br />

В этом примере поле КодТипа используется для объединения таблиц, однако оно не<br />

<strong>в</strong>ключается <strong>в</strong> результат <strong>в</strong>ыполнения запроса, поскольку нет оператора Select. Чтобы доба<strong>в</strong>ить<br />

с<strong>в</strong>язующее поле (<strong>в</strong> данном случае поле Типы.КодТипа) <strong>в</strong> результат <strong>в</strong>ыполнения запроса,<br />

следует <strong>в</strong>ключить имя этого поля <strong>в</strong> Select.<br />

Пример 13.<br />

SELECT DISTINCTROW Таблица1.*<br />

FROM Таблица1 INNER JOIN Таблица3 ON Таблица1.Фирма = Таблица3.Фирма;<br />

В данном примере Таблица1 пересекается с Таблицей3, а <strong>в</strong> следующих примерах сначала из<br />

таблицы Задачи <strong>в</strong>ычитается таблица Задачи1, а затем Задачи делится на таблицу<br />

СотрудникиЗадачи :<br />

Пример 14.<br />

SELECT DISTINCTROW Задачи.КодЗадачи, Задачи.ОписаниеЗадачи,<br />

Задачи.НачальнаяДата, Задачи.КонечнаяДата FROM Задачи LEFT JOIN Задачи1<br />

ON Задачи.КодЗадачи = Задачи1. КодЗадачи WHERE ((Задачи1.КодЗадачи) IS NULL);<br />

Пример 15.<br />

SELECT Задачи.ОписаниеЗадачи, Задачи.НачальнаяДата, Задачи.КонечнаяДата<br />

FROM Задачи INNER JOIN СотрудникиЗадачи<br />

ON Задачи.КодЗадачи = Сотрудники .Задачи. КодЗадачи;<br />

Пример 16.<br />

SELECT * FROM Таблица1 UNION SELECT * FROM Таблица2;<br />

Это запрос на объединение д<strong>в</strong>ух таблиц с идентичными макетами.<br />

Запросам на изменение и упра<strong>в</strong>ляющим запросам <strong>Access</strong> соот<strong>в</strong>етст<strong>в</strong>уют другие<br />

<strong>в</strong>ыражения SQL. По запросу <strong>в</strong> формате<br />

Create Table имяТаблицы (имяПоля типПоля [(Размер)]<br />

[списокИндексо<strong>в</strong>][,…]);<br />

создается но<strong>в</strong>ая таблица с указанными <strong>в</strong> аргументах полями конкретного типа и размера, а<br />

запрос формата


27<br />

Drop {Table имяТаблицы | Index Значение On имяТаблицы};<br />

удаляет заданную таблицу или ее индекс.<br />

Пример 17.<br />

CREATE TABLE [Отдел кадро<strong>в</strong>] (Фамилия TEXT(30), [Номер п/п] INTEGER,<br />

Оклад DOUBLE);<br />

Предста<strong>в</strong>ленный SQL-запрос создает таблицу Отдел кадро<strong>в</strong> с тексто<strong>в</strong>ым полем Фамилия<br />

длиной 30 сим<strong>в</strong>оло<strong>в</strong> и число<strong>в</strong>ыми полями [Номер п/п] и Оклад.<br />

Следующие запросы создают индексы:<br />

Create [ Unique ] Index Значение On имяТаблицы<br />

(имяПоля [{Asc | Desc}][,...])<br />

[With {Primary | Disallow Null | Ignore Null }];<br />

Constraint Индекс {Primary Key | Unique | References};<br />

имяТаблицы [имяПоля]}<br />

Чтобы доба<strong>в</strong>ить <strong>в</strong> таблицу но<strong>в</strong>ые поля или удалить сущест<strong>в</strong>ующие, используется запрос<br />

на изменение<br />

Alter Table имяТаблицы {Add | Drop} Column имяПоля [типПоля(Размер)]];<br />

Удалить из таблицы индекс или таблицу из базы данных можно запросом<br />

Drop {Table имяТаблицы | Index Индекс On имяТаблицы};<br />

Запрос<br />

Insert Into имяТаблицы [In базаДанных] [(имяПоля [,...])] Select списокПолей From<br />

имяТаблицы;<br />

доба<strong>в</strong>ляет записи <strong>в</strong> конец сущест<strong>в</strong>ующей таблицы с использо<strong>в</strong>анием заданных <strong>в</strong>ыражений.<br />

Если опущены имена полей, данные заносятся последо<strong>в</strong>ательно поля <strong>в</strong> соот<strong>в</strong>етст<strong>в</strong>ии с<br />

макетом таблицы базы данных:<br />

Пример 18.<br />

INSERT INTO Таблица2 SELECT Таблица3.* FROM Таблица3;<br />

Здесь к Таблице2 доба<strong>в</strong>ляется Таблица3.<br />

Пример 19.<br />

INSERT INTO [Отдел кадро<strong>в</strong>] (Фамилия, Оклад) VALUES ("И<strong>в</strong>ано<strong>в</strong>", 54700);<br />

Запросы на удаление и обно<strong>в</strong>ление информации <strong>в</strong> таблицах строятся <strong>в</strong> форматах:<br />

Delete From имяТаблицы [Where логическоеВыражение] [In базаДанных];


28<br />

Update имяТаблицы Set имяПоля=Значение [,…] [Where логическоеВыражение];<br />

Пример 20.<br />

DELETE FROM Таблица2 WHERE Год5000;<br />

Из Таблица удаляются значения поля Имя, если значение поля Оклад пре<strong>в</strong>ышает 5000.<br />

Формы и отчеты<br />

Чтение и пра<strong>в</strong>ка данных через форму<br />

Обычно заполненная таблица неудобна для просмотра <strong>в</strong>сех записей. Если длина или<br />

ширина ее пре<strong>в</strong>ышает размер экрана, приходится постоянно «прокручи<strong>в</strong>ать» изображение с<br />

помощью полосы прокрутки. Когда на экране исчезает ключе<strong>в</strong>ое поле, стано<strong>в</strong>ится трудно<br />

отличить одну запись от другой. А когда приходит <strong>в</strong>ремя пра<strong>в</strong>ить данные, <strong>в</strong>озникают ошибки<br />

<strong>в</strong>ыбора записей и перехода между ними. Поэтому для просмотра и пра<strong>в</strong>ки отдельных записей<br />

используется другой объект базы данных — форма. При наличии открытой базы данных<br />

любая ее форма откры<strong>в</strong>ается с <strong>в</strong>кладки Формы, доступной через меню Вид .Объекты базы<br />

данных .Формы. Одно<strong>в</strong>ременно с открытием формы откры<strong>в</strong>аются, хотя и не <strong>в</strong>ы<strong>в</strong>одятся на<br />

экран, таблицы или запросы, на которых построена форма.<br />

Форма удобна для предста<strong>в</strong>ления записей одной таблицы или группы с<strong>в</strong>язанных таблиц.<br />

В то же <strong>в</strong>ремя, каждой таблице может соот<strong>в</strong>етст<strong>в</strong>о<strong>в</strong>ать несколько форм. Любая страница<br />

формы демонстрирует одну или несколько записей или их части. Переход от записи к записи<br />

осущест<strong>в</strong>ляется на<strong>в</strong>игационными кнопками формы<br />

или через<br />

меню Пра<strong>в</strong>ка .Перейти. При чтении записей можно использо<strong>в</strong>ать методы фильтрации и<br />

сортиро<strong>в</strong>ки, применяемые к таблицам.<br />

Записи пра<strong>в</strong>ятся прямо <strong>в</strong> тексто<strong>в</strong>ых полях формы. Для доба<strong>в</strong>ления но<strong>в</strong>ой записи <strong>в</strong> базу<br />

данных используется на<strong>в</strong>игационная кнопка со з<strong>в</strong>ездочкой или меню Пра<strong>в</strong>ка .Перейти<br />

.Но<strong>в</strong>ая. После перехода к следующей записи или закрытия формы но<strong>в</strong>ая запись сохраняется<br />

<strong>в</strong> таблице. Для отмены изменений <strong>в</strong> текущем поле служит меню Пра<strong>в</strong>ка .Восстано<strong>в</strong>ить<br />

текущее поле/запись и кнопка на панели инструменто<strong>в</strong>. По<strong>в</strong>торное нажатие этой же<br />

кнопки отменяет <strong>в</strong>се изменения, <strong>в</strong>несенные <strong>в</strong> редактируемую запись. Чтобы удалить запись,<br />

используется меню Пра<strong>в</strong>ка .Удалить запись или кнопка<br />

. Меню Сер<strong>в</strong>ис .Орфография<br />

и кнопка помогают про<strong>в</strong>ести синтаксический контроль записей. Для копиро<strong>в</strong>ания<br />

запись <strong>в</strong>ыделяют через меню Пра<strong>в</strong>ка .Выделить запись или одноименной кнопкой <strong>в</strong> ле<strong>в</strong>ой<br />

части формы, после чего ее заносят <strong>в</strong> буфер обмена. Затем копию из буфера <strong>в</strong>ста<strong>в</strong>ляют <strong>в</strong><br />

любую <strong>в</strong>ыделенную запись. Чтобы быстро найти из<strong>в</strong>естную запись через форму, следует<br />

перейти <strong>в</strong> нужное поле и <strong>в</strong>ыбрать меню Пра<strong>в</strong>ка .Найти или нажать одноименную кнопку<br />

панели инструменто<strong>в</strong>. Произ<strong>в</strong>ольные бук<strong>в</strong>осочетания отыски<strong>в</strong>аются после <strong>в</strong>ыбора строки С<br />

любой частью поля из списка Со<strong>в</strong>падение <strong>в</strong> окне поиска. Если требуется регулярное<br />

использо<strong>в</strong>ание формы, ее можно перенести <strong>в</strong> любую папку Windows или создать ярлык из<br />

меню Пра<strong>в</strong>ка .Создать ярлык, <strong>в</strong> том числе — на Рабочем столе.


29<br />

Создание формы<br />

Если к таблице не разработано форм или сущест<strong>в</strong>ующие формы не от<strong>в</strong>ечают требо<strong>в</strong>аниям<br />

к базе данных, создается но<strong>в</strong>ая форма с помощью меню Вста<strong>в</strong>ка .Форма или кнопки<br />

Создать <strong>в</strong> окне базы данных. Если же нажать кнопку панели инструменто<strong>в</strong> и <strong>в</strong>ыбрать<br />

пункт А<strong>в</strong>тоформа, то будет а<strong>в</strong>томатически подгото<strong>в</strong>лена форма, содержащая <strong>в</strong>се поля<br />

таблицы. Если какие-либо поля а<strong>в</strong>тоформы не требуются, от них следует отказаться, <strong>в</strong>ступи<strong>в</strong><br />

<strong>в</strong> диалог с Мастером форм. Эта программа поз<strong>в</strong>оляет созда<strong>в</strong>ать формы с полями из одной<br />

или нескольких с<strong>в</strong>язанных таблиц или запросо<strong>в</strong>. Упра<strong>в</strong>ляя <strong>в</strong>ключением <strong>в</strong> форму<br />

необходимых полей, Мастер форм одно<strong>в</strong>ременно создает базо<strong>в</strong>ый <strong>в</strong>нешний <strong>в</strong>ид формы В<br />

столбец, предста<strong>в</strong>ляющую одну запись, либо Ленточной формы из нескольких записей, либо<br />

Табличной формы. Разно<strong>в</strong>идностями форм я<strong>в</strong>ляются Диаграмма и С<strong>в</strong>одная таблица,<br />

использующая данные из таблиц, подобных Excel. При работе с несколькими таблицами<br />

создаются подчиненные формы или с<strong>в</strong>язанные формы. В формах, где источником данных<br />

служат таблицы, с<strong>в</strong>язанные отношением «один ко многим», подчиненные формы необходимо<br />

с<strong>в</strong>язы<strong>в</strong>ать с осно<strong>в</strong>ной формой так, чтобы <strong>в</strong>се их записи соот<strong>в</strong>етст<strong>в</strong>о<strong>в</strong>али текущей записи<br />

осно<strong>в</strong>ной формы. При этом Мастер форм использует информацию о типе отношения между<br />

таблицами для с<strong>в</strong>язи осно<strong>в</strong>ной и подчиненных форм. Чтобы создать подчиненную форму,<br />

отображаемую <strong>в</strong> режиме таблицы, иногда оказы<strong>в</strong>ается проще перетащить таблицу или запрос<br />

из окна базы данных <strong>в</strong> форму.<br />

Оригинальные формы создаются Конструктором, откры<strong>в</strong>аемым для <strong>в</strong>ыбранной таблицы<br />

из меню Вста<strong>в</strong>ка .Форма или кнопкой Создать окна базы данных. Конструктор предлагает<br />

макет формы с разметочной сеткой, а к самой форме можно перейти через меню Вид .Форма<br />

или щелчком по кнопке . Обычно одно<strong>в</strong>ременно с Конструктором откры<strong>в</strong>ается<br />

соот<strong>в</strong>етст<strong>в</strong>ующая панель элементо<strong>в</strong>. На панели находятся кнопки, щелкая которыми, можно<br />

создать элементы упра<strong>в</strong>ления форм посредст<strong>в</strong>ом перетаски<strong>в</strong>ания указателя мыши по макету<br />

формы. Но<strong>в</strong>ый элемент упра<strong>в</strong>ления <strong>в</strong> пер<strong>в</strong>ый момент оказы<strong>в</strong>ается <strong>в</strong>ыделенным —<br />

окаймленным размерными маркерами. Если <strong>в</strong>последст<strong>в</strong>ии потребуется пра<strong>в</strong>ка, его можно<br />

по<strong>в</strong>торно <strong>в</strong>ыделять щелчком. Выделенный элемент обрамляется рамкой с маркером<br />

перемещения <strong>в</strong> ле<strong>в</strong>ом <strong>в</strong>ерхнем углу и размерными маркерами по краям. Он с<strong>в</strong>ободно<br />

перемещается по форме при нажатой кнопке перетаски<strong>в</strong>анием, командами меню<br />

Пра<strong>в</strong>ка .Вырезать, Пра<strong>в</strong>ка .Вста<strong>в</strong>ить (с последующим перетаски<strong>в</strong>анием) или <strong>в</strong>ыбором<br />

одноименных кнопок стандартной панели инструменто<strong>в</strong>. Для более точного<br />

позициониро<strong>в</strong>ания после <strong>в</strong>ыделения элемента надо нажать кла<strong>в</strong>ишу и <strong>в</strong>ыполнить<br />

перемещение кла<strong>в</strong>ишами-стрелками. Возможно и группо<strong>в</strong>ое перемещение. Для группо<strong>в</strong>ого<br />

<strong>в</strong>ыделения несколько соседних элементо<strong>в</strong> упра<strong>в</strong>ления очерчи<strong>в</strong>аются д<strong>в</strong>ижением указателя<br />

пунктирной рамкой или поочередно <strong>в</strong>ыделяются при нажатой кла<strong>в</strong>ише . Элементы<br />

могут <strong>в</strong>ыра<strong>в</strong>ни<strong>в</strong>аться по сетке из меню Формат .Выро<strong>в</strong>нять. Для копиро<strong>в</strong>ания <strong>в</strong>ыделенных<br />

элементо<strong>в</strong> служат меню Пра<strong>в</strong>ка .Дублиро<strong>в</strong>ать, Пра<strong>в</strong>ка .Копиро<strong>в</strong>ать и Пра<strong>в</strong>ка .Вста<strong>в</strong>ить<br />

или одноименные кнопки стандартной панели инструменто<strong>в</strong>. Элементы удаляются кла<strong>в</strong>ишей<br />

и заменяются один другим через контекстное меню Преобразо<strong>в</strong>ать элемент <strong>в</strong>.<br />

Пользуясь кнопками панели форматиро<strong>в</strong>ания и размерными маркерами, у <strong>в</strong>ыделенных<br />

элементо<strong>в</strong> можно менять шрифт, размер, другие с<strong>в</strong>ойст<strong>в</strong>а, откры<strong>в</strong>аемые из меню Вид<br />

.С<strong>в</strong>ойст<strong>в</strong>а или кнопкой . Любое изменение за<strong>в</strong>ершается щелчком <strong>в</strong>не элемента.<br />

Каждая кнопка панели элементо<strong>в</strong> формы предста<strong>в</strong>ляет определенный класс объекто<strong>в</strong><br />

Windows. С их помощью создаются три типа элементо<strong>в</strong> упра<strong>в</strong>ления: с<strong>в</strong>ободные,<br />

присоединенные и <strong>в</strong>ычисляемые. Содержание с<strong>в</strong>ободных элементо<strong>в</strong> не за<strong>в</strong>исит от содержания<br />

таблиц или запросо<strong>в</strong>. Надпись остается <strong>в</strong> форме после заполнения ее текстом. Обычно<br />

— это текст пояснения, приглашения, при<strong>в</strong>етст<strong>в</strong>ия, обращенного к пользо<strong>в</strong>ателю. Тексто<strong>в</strong>ое


30<br />

Поле используется для <strong>в</strong>печаты<strong>в</strong>ания <strong>в</strong> него информации пользо<strong>в</strong>ателем. <strong>Access</strong> имеет<br />

четыре типа таких полей: однострочное, многострочное, <strong>в</strong>ычисляемое и с<strong>в</strong>ободное.<br />

Многострочные поля обладают с<strong>в</strong>ойст<strong>в</strong>ами Растяжение и Сжатие, поз<strong>в</strong>оляющими<br />

<strong>в</strong>ы<strong>в</strong>одить информацию полей <strong>в</strong> печать, не <strong>в</strong>ключая их <strong>в</strong>о <strong>в</strong>нешний <strong>в</strong>ид формы. Группа<br />

окаймляет сгруппиро<strong>в</strong>анные по смыслу элементы <strong>в</strong> форме. Выключатель<br />

инициирует и<br />

за<strong>в</strong>ершает программные процессы. Переключатель устана<strong>в</strong>ли<strong>в</strong>ает один из<br />

предложенных пользо<strong>в</strong>ателю <strong>в</strong>арианто<strong>в</strong>, а Флажками<br />

помечают <strong>в</strong>се <strong>в</strong>ыбираемые<br />

пользо<strong>в</strong>ателем <strong>в</strong>арианты. Поле со списком<br />

поз<strong>в</strong>оляет отыскать <strong>в</strong> списке необходимую<br />

запись, а из простого Списка<br />

щелчком мыши можно произ<strong>в</strong>ести <strong>в</strong>ыбор одного из<br />

нескольких конкретных значений. Кнопка создается для упра<strong>в</strong>ления ходом<br />

программных процессо<strong>в</strong>. Рисунок, С<strong>в</strong>ободная рамка объекта и Присоединенная рамка<br />

объекта<br />

применяются для <strong>в</strong>страи<strong>в</strong>ания <strong>в</strong> формы графических объекто<strong>в</strong>. Разбить<br />

форму на страницы помогает Разры<strong>в</strong> страницы , а дополнить ее <strong>в</strong>строенной формой —<br />

элемент Подчиненная форма<br />

. Кроме того, <strong>в</strong> форму можно поместить Набор <strong>в</strong>кладок,<br />

разнообразные Линии и Прямоугольники<br />

. Панель дополнительных элементо<strong>в</strong><br />

откры<strong>в</strong>ается кнопкой . Многие из элементо<strong>в</strong> строятся с помощью инди<strong>в</strong>идуальных<br />

программ-мастеро<strong>в</strong> под кнопкой панели элементо<strong>в</strong> и кодируются построителями<br />

<strong>в</strong>ыражений.<br />

Но гла<strong>в</strong>ное назначение формы состоит <strong>в</strong> предста<strong>в</strong>лении присоединенных элементо<strong>в</strong><br />

упра<strong>в</strong>ления — полей таблиц базы данных. Из меню Вид .Список полей или кнопкой<br />

откры<strong>в</strong>ается панель с именами <strong>в</strong>сех полей таблицы. Каждое поле копируется <strong>в</strong> форму<br />

перетаски<strong>в</strong>анием или через буфер обмена. Вста<strong>в</strong>ляемые поля сопро<strong>в</strong>ождаются надписями с<br />

их именами, которые можно пра<strong>в</strong>ить <strong>в</strong>месте с полями или отдельно, удалять или заменять<br />

другими надписями. Кроме тексто<strong>в</strong>ых полей, <strong>в</strong> качест<strong>в</strong>е присоединенных элементо<strong>в</strong> полезно<br />

использо<strong>в</strong>ать объекты OLE, переключатели и флажки. Хотя по умолчанию <strong>в</strong>се элементы,<br />

доба<strong>в</strong>ленные <strong>в</strong> форму с панели элементо<strong>в</strong>, я<strong>в</strong>ляются с<strong>в</strong>ободными, многие из них после<br />

<strong>в</strong>ыделения могут быть преобразо<strong>в</strong>аны <strong>в</strong> присоединенные, то есть с<strong>в</strong>язаны с полями<br />

источника данных. Для этого надо на <strong>в</strong>кладке Данные окна С<strong>в</strong>ойст<strong>в</strong>а с<strong>в</strong>ойст<strong>в</strong>о Данные<br />

инициализиро<strong>в</strong>ать именем поля.<br />

Вычисляемыми элементами упра<strong>в</strong>ления обычно я<strong>в</strong>ляются тексто<strong>в</strong>ые поля, содержащие<br />

<strong>в</strong>ыражения.<br />

После заполнения формы элементами упра<strong>в</strong>ления, формируется ее стиль из меню<br />

Формат .А<strong>в</strong>тоформат, кнопкой или <strong>в</strong>ручную кнопками панели форматиро<strong>в</strong>ания,<br />

упра<strong>в</strong>ляющими ц<strong>в</strong>етом фона, текста, границ, их шириной и предста<strong>в</strong>лением. Перед этим <strong>в</strong>ся<br />

форма <strong>в</strong>ыделяется через меню Пра<strong>в</strong>ка .Выделить форму или щелчком по специальной<br />

кнопке на пересечении горизонтальной и <strong>в</strong>ертикальной линеек. Д<strong>в</strong>ойной щелчок по этой<br />

кнопке <strong>в</strong>едет к одно<strong>в</strong>ременному открытию окна С<strong>в</strong>ойст<strong>в</strong>а формы. В качест<strong>в</strong>е фоно<strong>в</strong>ого<br />

рисунка формы (с<strong>в</strong>ойст<strong>в</strong>о Рисунок) можно использо<strong>в</strong>ать растро<strong>в</strong>ую картинку из папки<br />

\Office\Bitmaps\Styles или графические файлы <strong>в</strong> форматах .wmf, .bmp. Изменяя с<strong>в</strong>ойст<strong>в</strong>а Тип<br />

рисунка, Масштабы рисунка, Выра<strong>в</strong>ни<strong>в</strong>ание рисунка, Мозаичное заполнение, можно


31<br />

добиться разнообразных эффекто<strong>в</strong> оформления. Стили элементо<strong>в</strong> удобно копиро<strong>в</strong>ать<br />

кнопкой . Элементы <strong>в</strong> форме <strong>в</strong>ыра<strong>в</strong>ни<strong>в</strong>аются по разметочной сетке через меню Формат<br />

.Выро<strong>в</strong>нять, Формат .При<strong>в</strong>язать к сетке, Формат .Размер .По узлам сетки или —<br />

наоборот — Формат .Размер .По размеру данных.<br />

В окне Конструктора форма разделена на три части: Заголо<strong>в</strong>ок формы, Область<br />

данных и Примечание формы. Форма размечается по <strong>в</strong>ертикальной и горизонтальной<br />

линейкам (<strong>в</strong>ертикальная линия спра<strong>в</strong>а определяет ее ширину, а горизонтальная <strong>в</strong>низу —<br />

<strong>в</strong>ысоту), изменяемым перетаски<strong>в</strong>анием.<br />

Чтобы доба<strong>в</strong>ить заголо<strong>в</strong>ок или примечание к форме, надо обратиться к меню Вид<br />

.Заголо<strong>в</strong>ок/примечание формы или перетащить нижнюю или <strong>в</strong>ерхнюю границу Области<br />

данных. Здесь можно располагать текст и другие элементы упра<strong>в</strong>ления. В многостраничной<br />

форме Заголо<strong>в</strong>ок формы отображается только на пер<strong>в</strong>ой странице. Аналогичные функции<br />

<strong>в</strong>ыполняет Примечание формы, отображаемое <strong>в</strong>низу на последней странице. Верхние и<br />

нижние колонтитулы, откры<strong>в</strong>аемые из меню Вид .Колонтитулы, и элемент Разры<strong>в</strong><br />

страницы используются <strong>в</strong> формах, предназначенных для печати.<br />

Одной из форм базы данных обычно поручается роль заста<strong>в</strong>ки. На ней размещают<br />

наз<strong>в</strong>ание программного продукта, с<strong>в</strong>едения об а<strong>в</strong>торах и а<strong>в</strong>торском пра<strong>в</strong>е, логотип<br />

разработчика. Сюда доба<strong>в</strong>ляют кнопки Мастером кнопок для быстрого перехода к нужным<br />

формам или таблицам. Здесь организуют меню или огла<strong>в</strong>ление программы. Через меню<br />

Сер<strong>в</strong>ис .Параметры запуска <strong>в</strong><strong>в</strong>одится заголо<strong>в</strong>ок программы и указы<strong>в</strong>ается имя этой<br />

формы-заста<strong>в</strong>ки. Соот<strong>в</strong>етст<strong>в</strong>ующими флажками при необходимости удаляются с экрана окно<br />

базы данных и строка состояния. Если же пользо<strong>в</strong>атель желает мино<strong>в</strong>ать заста<strong>в</strong>ку, ему<br />

следует осущест<strong>в</strong>лять запуск программы при нажатой кла<strong>в</strong>ише .<br />

Отчеты<br />

Любой отчет базы данных откры<strong>в</strong>ается с <strong>в</strong>кладки Отчеты или через меню Вид .Объекты<br />

базы данных .Отчеты. После нажатия кнопки Просмотр пользо<strong>в</strong>атель попадает <strong>в</strong> окно<br />

пред<strong>в</strong>арительного просмотра, демонстрирующего отчет, подгото<strong>в</strong>ленный к печати. Отсюда<br />

можно проанализиро<strong>в</strong>ать детали документа <strong>в</strong> различных масштабах или кон<strong>в</strong>ертиро<strong>в</strong>ать его <strong>в</strong><br />

формат Excel или <strong>в</strong> .rtf, удобный для печати <strong>в</strong> Word.<br />

Макет отчета просматри<strong>в</strong>ается и изменяется Конструктором отчето<strong>в</strong>, доступным<br />

через кнопку Конструктор. Каждое поле таблицы здесь предста<strong>в</strong>лено тексто<strong>в</strong>ым полем,<br />

которое можно <strong>в</strong>ыделять и пра<strong>в</strong>ить, как это делалось <strong>в</strong> Конструкторе форм. Отдельные<br />

надписи дополняют и поясняют текст отчета. Вычисляемые поля и итого<strong>в</strong>ые записи<br />

предста<strong>в</strong>ляют дополнительную информацию о табличных данных, актуальную для<br />

конкретного отчета. Рисунки и диаграммы поясняют содержание. Рабочая область обрамлена<br />

областями колонтитуло<strong>в</strong> страниц. Отдельная часть отчета формирует титульную страницу,<br />

которую можно заполнять самыми разнообразными объектами.<br />

Если база данных не имеет отчета или сущест<strong>в</strong>ующие отчеты не от<strong>в</strong>ечают требо<strong>в</strong>аниям к<br />

ней, следует создать но<strong>в</strong>ый отчет, <strong>в</strong>оспользо<strong>в</strong>а<strong>в</strong>шись меню Вста<strong>в</strong>ка .Отчет или кнопкой<br />

Создать <strong>в</strong> окне базы данных. Кнопкой панели инструменто<strong>в</strong> а<strong>в</strong>томатически создается<br />

А<strong>в</strong>тоотчет, содержащий <strong>в</strong>се поля таблицы. Если какие-либо поля не требуются, от них<br />

следует отказаться, <strong>в</strong>ступи<strong>в</strong> <strong>в</strong> диалог с Мастером отчето<strong>в</strong>. В <strong>Access</strong> можно создать<br />

несколько типо<strong>в</strong> отчето<strong>в</strong>. Отчет В столбец предста<strong>в</strong>ляет каждое поле каждой записи<br />

отдельной строкой. Ленточный отчет <strong>в</strong>ыделяет отдельный столбец для каждого поля<br />

документируемой таблицы или запроса, <strong>в</strong>ы<strong>в</strong>одя строками значения записей. Специальный<br />

тип Ленточного отчета — Почто<strong>в</strong>ые наклейки — каждую группу полей заносит <strong>в</strong><br />

отдельную ячейку сетки пред<strong>в</strong>арительно заданных размеро<strong>в</strong>. В Диаграмме дается<br />

графическое предста<strong>в</strong>ление данных.


32<br />

Мастер отчето<strong>в</strong> упра<strong>в</strong>ляет <strong>в</strong>ключением <strong>в</strong> документ необходимых полей из различных<br />

таблиц и запросо<strong>в</strong>, их группиро<strong>в</strong>анием по заданным критериям, порядком сортиро<strong>в</strong>ки и<br />

формиро<strong>в</strong>анием итого<strong>в</strong>ых записей, макетом, стилем и наз<strong>в</strong>анием отчета. Сформиро<strong>в</strong>анный<br />

отчет полезно проанализиро<strong>в</strong>ать из режимо<strong>в</strong> Вид .Пред<strong>в</strong>арительный просмотр или Вид<br />

.Образец. При этом следует обратить <strong>в</strong>нимание на расположение документа на экране: узкие<br />

или непропорционально широкие поля, неудачный формат предста<strong>в</strong>ления число<strong>в</strong>ых данных,<br />

неясные итого<strong>в</strong>ые записи и заголо<strong>в</strong>ки полей. Такие отчеты требуют дополнительной пра<strong>в</strong>ки <strong>в</strong><br />

режиме Вид .Конструктор отчето<strong>в</strong>.<br />

Отчеты для многих документо<strong>в</strong> (финансо<strong>в</strong>ых, бухгалтерских, офисных) создаются<br />

<strong>в</strong>ручную Конструктором, откры<strong>в</strong>аемым для <strong>в</strong>ыбранной таблицы из меню Вста<strong>в</strong>ка .Отчет<br />

или кнопкой Создать окна базы данных. Конструктор предлагает макет отчета, из которого<br />

<strong>в</strong>сегда можно <strong>в</strong>ернуться к просмотру через меню Вид .Пред<strong>в</strong>арительный просмотр, Вид<br />

.Образец или щелчком по кнопке . Кроме с<strong>в</strong>язанных объекто<strong>в</strong>, <strong>в</strong> отчеты часто<br />

доба<strong>в</strong>ляют присоединенные рамки объекто<strong>в</strong> для отображаемых полей типа объекто<strong>в</strong> OLE,<br />

с<strong>в</strong>ободные рамки объекто<strong>в</strong> для отображения прочих объекто<strong>в</strong> OLE, линии и прямоугольники<br />

декорати<strong>в</strong>ного оформления, переключатели и флажки для отображения значений логических<br />

полей, кнопки для запуска макросо<strong>в</strong> и процедур. Сетка <strong>в</strong> окне Конструктора упрощает<br />

задание положения каждого элемента упра<strong>в</strong>ления на странице. Размеры <strong>в</strong>ыделенных<br />

элементо<strong>в</strong> изменяются перемещением их маркеро<strong>в</strong>. Смещением границ раздело<strong>в</strong> уточняются<br />

расстояния между ними. Высота каждого раздела отчета регулируется перемещением<br />

указателем мыши его нижней границы. Ширина <strong>в</strong>сех раздело<strong>в</strong> одно<strong>в</strong>ременно<br />

устана<strong>в</strong>ли<strong>в</strong>ается посредст<strong>в</strong>ом перемещения указателем мыши пра<strong>в</strong>ой границы. Воздейст<strong>в</strong>уя<br />

на пра<strong>в</strong>ый нижний угол, удобно масштабиро<strong>в</strong>ать <strong>в</strong>ысоту и ширину раздела одно<strong>в</strong>ременно.<br />

Оформление может копиро<strong>в</strong>аться и изменяться а<strong>в</strong>тоформатиро<strong>в</strong>анием, как это делалось при<br />

создании форм. Из меню Вста<strong>в</strong>ка .Номер страницы задается формат и расположение<br />

номеро<strong>в</strong>. Поля отчета можно заполнять не только содержимым таблиц, но также<br />

<strong>в</strong>ыражениями, например: =[Количест<strong>в</strong>о] * [Цена] или =Sum([Количест<strong>в</strong>о] * [Цена]).<br />

В качест<strong>в</strong>е титульного листа отчета <strong>в</strong>озможно использо<strong>в</strong>ание документа Word или<br />

графического файла. Для этого <strong>в</strong>ыделяется раздел Заголо<strong>в</strong>ок отчета, и из меню Вста<strong>в</strong>ка<br />

.Объект <strong>в</strong>ыбирается нужный документ. Чтобы напечатать титульный лист на отдельной<br />

странице, с<strong>в</strong>ойст<strong>в</strong>у Конец страницы Заголо<strong>в</strong>ка отчета придается значение После раздела.<br />

Размеры полей и колонтитуло<strong>в</strong> отчета устана<strong>в</strong>ли<strong>в</strong>аются <strong>в</strong> меню Файл .Макет страницы. А<br />

<strong>в</strong>кладка Формы/отчеты меню Сер<strong>в</strong>ис .Параметры упра<strong>в</strong>ляет исходным шаблоном<br />

формируемого документа<br />

Макросы<br />

Выполнение по<strong>в</strong>торяющихся задач а<strong>в</strong>томатизируется с помощью макросо<strong>в</strong>. Макрос<br />

указы<strong>в</strong>ает на языке макрокоманд, какие дейст<strong>в</strong>ия следует <strong>в</strong>ыполнить <strong>в</strong> <strong>Access</strong> <strong>в</strong> от<strong>в</strong>ет на то<br />

или иное событие.<br />

При наличии открытой базы данных любая группа ее макросо<strong>в</strong> откры<strong>в</strong>ается с <strong>в</strong>кладки<br />

Макросы, доступной через меню Вид .Объекты базы данных .Макросы. Для открытия<br />

окна макроса <strong>в</strong>ыделяют имя группы и нажимают кнопку Конструктор. Окно разделено на<br />

четыре столбца — Имя макроса, Усло<strong>в</strong>ие, Макрокоманда и Примечание, причем пер<strong>в</strong>ые<br />

д<strong>в</strong>а из них могут оказаться скрытыми <strong>в</strong> меню Вид .Имена макросо<strong>в</strong> и Вид .Усло<strong>в</strong>ия или под<br />

кнопками панели инструменто<strong>в</strong>. Использо<strong>в</strong>ание столбца Имя макроса необязательно,<br />

если <strong>в</strong> окне находится <strong>в</strong>сего один макрос. В этом случае имя окна со<strong>в</strong>падает с именем<br />

макроса. Если же окно содержит несколько макросо<strong>в</strong>, то каждый макрос <strong>в</strong> нем обладает<br />

уникальным именем, определяемым программистом. Как пра<strong>в</strong>ило, каждая такая группа<br />

описы<strong>в</strong>ает процесс обработки событий одного объекта базы данных: формы или отчета. Ее


33<br />

назначение комментируется <strong>в</strong> столбце<br />

Примечание, который <strong>Access</strong> игнорирует при<br />

<strong>в</strong>ыполнении.<br />

Каждый макрос ассоциируется с группой<br />

макрокоманд, обрабаты<strong>в</strong>аемых одна за другой,<br />

пока <strong>Access</strong> не обнаружит строку с но<strong>в</strong>ым<br />

именем или не достигнет последней строки окна<br />

макроса. Пустые строки игнорируются, поэтому<br />

такими строками принято разделять макросы <strong>в</strong><br />

группе для удобст<strong>в</strong>а их чтения и пра<strong>в</strong>ки. Все<br />

макрокоманды макроса перечислены <strong>в</strong> столбце<br />

Макрокоманда. После <strong>в</strong>ыделения любой из них<br />

<strong>в</strong> нижней части окна раскры<strong>в</strong>ается список<br />

аргументо<strong>в</strong>, уточняющих область значений и<br />

особенности <strong>в</strong>ыполнения.<br />

В столбец Усло<strong>в</strong>ие может быть занесено<br />

усло<strong>в</strong>ное <strong>в</strong>ыражение, определяющее<br />

необходимость <strong>в</strong>ыполнения макрокоманды<br />

соот<strong>в</strong>етст<strong>в</strong>ующей строки. Макрокоманда<br />

запускается только <strong>в</strong> случае <strong>в</strong>ыполнения<br />

усло<strong>в</strong>ия. В проти<strong>в</strong>ном случае <strong>Access</strong> ее<br />

пропускает. Если одним усло<strong>в</strong>ием надо<br />

запустить несколько макрокоманд, <strong>в</strong><br />

последующих строках столбца Усло<strong>в</strong>ие<br />

располагают многоточие (…). Если запуск<br />

макрокоманды нужно произ<strong>в</strong>ести только тогда,<br />

когда усло<strong>в</strong>ие не <strong>в</strong>ыполняется, используется<br />

макрокоманда Остано<strong>в</strong>итьМакрос. Всякий раз,<br />

когда усло<strong>в</strong>ие не <strong>в</strong>ыполняется, <strong>Access</strong> переходит<br />

к <strong>в</strong>ыполнению пер<strong>в</strong>ой из макрокоманд, проти<strong>в</strong><br />

которой нет многоточия. Макрокоманда<br />

ЗапускМакроса используется для организации<br />

цикло<strong>в</strong>. Ее аргументы указы<strong>в</strong>ают число<br />

по<strong>в</strong>торений или их усло<strong>в</strong>ия.<br />

Для документиро<strong>в</strong>ания макросо<strong>в</strong> создается<br />

отчет из меню Сер<strong>в</strong>ис .Анализ .Архи<strong>в</strong>ариус.<br />

Перед программиро<strong>в</strong>анием макроса<br />

назначается событие, реакцию на которое он<br />

должен описы<strong>в</strong>ать. Каждое из перечисленных<br />

ниже событий характеризует изменение<br />

состояния объекта, сопро<strong>в</strong>ождаемое откликом<br />

Windows. В частности, события кла<strong>в</strong>иатуры и<br />

мыши сопро<strong>в</strong>ождаются преры<strong>в</strong>аниями<br />

процессо<strong>в</strong>. События окна с<strong>в</strong>язаны с открытием и<br />

закрытием форм и отчето<strong>в</strong>. События фокуса<br />

определяют акти<strong>в</strong>ность или пасси<strong>в</strong>ность<br />

информационного объекта. События данных<br />

происходят при их изменении, а события<br />

фильтра — при отборе. События печати<br />

характеризуют режимы печати и просмотра<br />

отчето<strong>в</strong>. События ошибок и таймера передаются<br />

<strong>в</strong> формы и отчеты.<br />

Событие<br />

Имя<br />

События мыши и кла<strong>в</strong>иатуры<br />

Нажатие кнопки Click<br />

Д<strong>в</strong>ойное нажатие DblClick<br />

кнопки<br />

Кнопка <strong>в</strong>низ MouseDown<br />

Кнопка <strong>в</strong><strong>в</strong>ерх MouseUp<br />

Перемещение MouseMove<br />

указателя<br />

Кла<strong>в</strong>иша <strong>в</strong>низ KeyDown<br />

Кла<strong>в</strong>иша <strong>в</strong><strong>в</strong>ерх KeyUp<br />

Нажатие кла<strong>в</strong>иши KeyPress<br />

События окна<br />

Открытие<br />

Open<br />

Загрузка<br />

Load<br />

Выгрузка<br />

UnLoad<br />

Закрытие<br />

Close<br />

Изменение размера Resize<br />

События данных<br />

Вход<br />

Enter<br />

Получение фокуса GetFocus<br />

Выход<br />

Exit<br />

Потеря фокуса<br />

LostFocus<br />

Включение<br />

Activate<br />

Отключение<br />

Deactivate<br />

Текущая запись Current<br />

До <strong>в</strong>ста<strong>в</strong>ки<br />

BeforeInsert<br />

После <strong>в</strong>ста<strong>в</strong>ки AfterInsert<br />

Удаление<br />

Delete<br />

До подт<strong>в</strong>ерждения BeforeDelConfirm<br />

Del<br />

После<br />

AfterDelConfirm<br />

подт<strong>в</strong>ерждения<br />

До обно<strong>в</strong>ления BeforeUpdate<br />

После обно<strong>в</strong>ления AfterUpdate<br />

Изменение<br />

Change<br />

При обно<strong>в</strong>лении Updated<br />

Отсутст<strong>в</strong>ие <strong>в</strong> списке NotInList<br />

Фильтрация Filter<br />

Применение ApplyFilter<br />

фильтра<br />

События печати и таймера<br />

Форматиро<strong>в</strong>ание Format<br />

Печать<br />

Print<br />

Воз<strong>в</strong>рат<br />

Retreat<br />

Отсутст<strong>в</strong>ие данных NoDate<br />

Страница<br />

Page<br />

Таймер<br />

Timer


34<br />

Для создания макроса <strong>в</strong> открытом окне<br />

Макрокоманда<br />

Имя<br />

базы данных на <strong>в</strong>кладке Макрос<br />

Копиро<strong>в</strong>атьОбъект CopyObject<br />

нажимается кнопка Создать, либо на<br />

Переимено<strong>в</strong>ать Rename<br />

панели инструменто<strong>в</strong> под кнопкой УдалитьОбъект DeleteObject<br />

<strong>в</strong>ыбирается Макрос. Проще же ОткрытьТаблицу OpenTable<br />

использо<strong>в</strong>ать Построитель макросо<strong>в</strong> <strong>в</strong> окне ОткрытьЗапрос OpenQuery<br />

Конструктора форм или Конструктора ОткрытьФорму OpenForm<br />

отчето<strong>в</strong>. Для этого <strong>в</strong>ыделяется нужный ОткрытьОтчет<br />

OpenReport<br />

элемент упра<strong>в</strong>ления, <strong>в</strong>ыбирается меню Вид. ОткрытьМодуль OpenModule<br />

Закрыть<br />

Close<br />

С<strong>в</strong>ойст<strong>в</strong>а или нажимается кнопка и <strong>в</strong><br />

откры<strong>в</strong>шемся окне диалога <strong>в</strong>ыбирается<br />

Сохранить<br />

Save<br />

<strong>в</strong>кладка События. На ней <strong>в</strong>ыполняется<br />

Печать<br />

Print<br />

ВыделитьОбъект SelectObject<br />

щелчок на нужном событии и кнопкой<br />

Обно<strong>в</strong>итьОбъект RepaintObject<br />

окна диалога или на панели Обно<strong>в</strong>ление<br />

Require<br />

инструменто<strong>в</strong> откры<strong>в</strong>ается Построитель ПоказатьВсеЗаписи ShowAllRecords<br />

макросо<strong>в</strong>. Можно также создать но<strong>в</strong>ое окно УказатьЗначение SetValue<br />

макроса через меню Файл .Сохранить как КомандаМеню<br />

DoMenuItem<br />

или кла<strong>в</strong>ишей . Для дополнения ЗапускЗапросаSQL RunSQL<br />

но<strong>в</strong>ым макросом сущест<strong>в</strong>ующей группы, ее<br />

ЗапускМакроса RunMacro<br />

откры<strong>в</strong>ают и, отступи<strong>в</strong> строку от<br />

ЗапускПрограммы RunCode<br />

предыдущего макроса, <strong>в</strong><strong>в</strong>одят имя но<strong>в</strong>ого.<br />

ЗапускПриложения RunApp<br />

Затем со следующей строки <strong>в</strong><strong>в</strong>одятся<br />

Остано<strong>в</strong>итьМакрос StopMacro<br />

макрокоманды, их аргументы, усло<strong>в</strong>ия и<br />

Остано<strong>в</strong>итьВсеМакросы StopAllMacros<br />

примечания. Из меню Файл .Сохранить<br />

или одноименной кнопкой панели<br />

Выход<br />

Quit<br />

инструменто<strong>в</strong> <strong>в</strong>ыполняется сохранение ОтменитьСобытие ConcelEvent<br />

группы, после чего макрос испыты<strong>в</strong>ается. ПрименитьФильтр ApplyFilter<br />

Макрокоманды, из которых СледующаяЗапись FindNext<br />

формируются макросы, перечислены <strong>в</strong> НайтиЗапись<br />

FindRecord<br />

таблице.<br />

КЭлементуУпра<strong>в</strong>ления GoToControl<br />

Для <strong>в</strong>ыбора доступной макрокоманды НаЗапись<br />

GoToRecord<br />

откры<strong>в</strong>ается список <strong>в</strong> столбце НаСтраницу<br />

GoToPage<br />

Макрокоманда либо нажимается или Вы<strong>в</strong>естиВФормате OutputAs<br />

. Если <strong>в</strong> качест<strong>в</strong>е аргумента Отпра<strong>в</strong>итьОбъект SendObject<br />

макрокоманды необходимо <strong>в</strong><strong>в</strong>ести имя Преобразо<strong>в</strong>атьБазуДан TransferDatabase<br />

объекта базы данных, его можно не Преобразо<strong>в</strong>атьЭлТабл TransfSpreadSheet<br />

<strong>в</strong>печаты<strong>в</strong>ать, а <strong>в</strong>ыбрать из Преобразо<strong>в</strong>атьТекст TransferText<br />

раскры<strong>в</strong>ающегося списка. Некоторые Доба<strong>в</strong>итьМеню AddMenu<br />

макросы удобно <strong>в</strong><strong>в</strong>одить перетаски<strong>в</strong>анием <strong>в</strong> ЗадатьКомандуМеню SetMenuItem<br />

окно макроса объекта базы данных: Сигнал<br />

Beep<br />

таблицы, запроса, формы, отчета. При этом ПанельИнструменто<strong>в</strong> ShowToolBar<br />

<strong>Access</strong> <strong>в</strong>ста<strong>в</strong>ляет строку над ячейкой, на КомандыКла<strong>в</strong>иатуры SendKeys<br />

которой опущена кнопка мыши, <strong>в</strong><strong>в</strong>одит ПесочныеЧасы Haurglass<br />

макрокоманду открытия окна объекта и<br />

Вы<strong>в</strong>одНаЭкран Echo<br />

а<strong>в</strong>томатически определяет его параметры.<br />

Устано<strong>в</strong>итьСообщение SetWarnings<br />

При перетаски<strong>в</strong>ании <strong>в</strong> столбец другого<br />

Сообщение<br />

MsgBox<br />

макроса <strong>в</strong><strong>в</strong>одится команда ЗапускМакроса с<br />

указанием его имени <strong>в</strong> строке аргумента.<br />

Если же аргумент описы<strong>в</strong>ается <strong>в</strong>ыражением,<br />

его можно описать построителем <strong>в</strong>ыражений под соот<strong>в</strong>етст<strong>в</strong>ующей кнопкой .


35<br />

Для удаления строки макроса <strong>в</strong>ыполняется щелчок <strong>в</strong> столбце <strong>в</strong>ыделения <strong>в</strong> ле<strong>в</strong>ой части<br />

окна макросо<strong>в</strong> и нажимается кнопка на панели инструменто<strong>в</strong>, удаляющая строку. Чтобы<br />

доба<strong>в</strong>ить строку, указатель располагается <strong>в</strong> следующей строке и нажимается кла<strong>в</strong>иша<br />

или соот<strong>в</strong>етст<strong>в</strong>ующая кнопка панели инструменто<strong>в</strong>. Для <strong>в</strong>ста<strong>в</strong>ки строк <strong>в</strong>место<br />

сущест<strong>в</strong>ующих, они пред<strong>в</strong>арительно <strong>в</strong>ыделяются.<br />

Каждая макрокоманда реализует определенную операцию. Макрокоманда<br />

КомандаКла<strong>в</strong>иатуры имитирует нажатие кла<strong>в</strong>иш: {BACKSPACE}, {BS}, {BKSP};<br />

{CAPSLOCK}; {CLEAR}; {DELETE}, {DEL}; {END}; {ENTER}, {~}; {ESCAPE}, {ESC};<br />

{HELP}; {HOME}; {INSERT};{Fn} (n = 1,.. 16); {DOWN}; {LEFT}; {PGDN}; {PGUP}; {TAB};<br />

{UP}. Вместо <strong>в</strong><strong>в</strong>одится +, <strong>в</strong>место печатают ^, а <strong>в</strong>место ста<strong>в</strong>ят %. Чтобы<br />

послать кла<strong>в</strong>иатурную комбинацию несколько раз, доба<strong>в</strong>ляется число ее по<strong>в</strong>торений,<br />

например {^DOWN 3}. Для а<strong>в</strong>томатического обно<strong>в</strong>ления данных с помощью макросо<strong>в</strong><br />

используют макрокоманды Обно<strong>в</strong>итьОбъект, Обно<strong>в</strong>ление или ПоказатьВсеЗаписи.<br />

Макрокоманда ЗадатьЗначение используется для инициализации элементо<strong>в</strong> таблиц,<br />

упра<strong>в</strong>ляющих объекто<strong>в</strong>, с<strong>в</strong>ойст<strong>в</strong> формы или отчета.<br />

Макрокоманда ЗапускЗапросаSQL запускает запрос на изменение с помощью<br />

соот<strong>в</strong>етст<strong>в</strong>ующего <strong>в</strong>ыражения SQL длиной до 256 сим<strong>в</strong>оло<strong>в</strong>. Кроме того, эта макрокоманда<br />

поз<strong>в</strong>оляет запустить упра<strong>в</strong>ляющий запрос. Для запуска <strong>в</strong> макросе запроса на <strong>в</strong>ыборку или<br />

перекрестного запроса следует с помощью аргумента Режим макрокоманды<br />

ОткрытьЗапрос открыть сущест<strong>в</strong>ующий запрос на <strong>в</strong>ыборку или перекрестный запрос <strong>в</strong><br />

режиме таблицы. Эта же макрокоманда поз<strong>в</strong>оляет <strong>в</strong>ыполнить сохраненные запросы на<br />

изменение и запросы SQL.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!