Организация баз данных

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Таганрогский государственный радиотехнический университет Кафедра вычислительной техники Дистанционное обучение 1999 - 2000 учебный год О Т Ч Т о выполнении практических заданий по курсу ОРГАНИЗАЦИЯ БАЗ ДАННЫХ студента группы ВД - 39 . Найденко Алексея Владимировича Ф.И.О. полностью В в е д е н и е При проектировании программ выясняются запросы и пожелания клиента и определяется возможный подход к решению задачи.Задача анализируется.

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

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

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

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

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

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

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

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

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

Следующий представляющий для нас интерес объект Товар. Этот объект имеет свойства уникальный ключ товара, наименование товара. Второй рассматриваемый объект Поставщик. Его свойствами являются уникальный ключ поставщика, наименование поставщика. Третий рассматриваемый объект Заказчик. Его свойствами являются уникальный ключ заказчика, наименование заказчика.Взаимосвязь один к одному между двумя типами объектов Допустим, в определенный момент времени один заказчик может сделать только один заказ.

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

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

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

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

Первоначальная схема данных Функциональная модельИсследование токов ДанныхДанные выявленные в ходе разработкиОтдел обработки заявок Заявки ДоговораДоговоровПоставщикиЗаказчикиВеде ние счетовСчетаПогрузкаНакладныеТоварИнвента ризацияСправкиОпределение объектов Выделим следующие объекты 1. ТОВАР - Т 2. ЗАКАЗЧИК - З 3. ПОСТАВЩИК - П 4. СЧЕТА - С 5. ДОГОВОР - Д 6. НАКЛАДНЫЕ - Н. Первоначальное графическое представление концептуальной модели ТЗПСНД Задание первичных и альтернативных ключей, определение свойств объектов Для каждого объекта определим свойства, которые будем хранить в БД. При этом необходимо учитывать тот факт, что при переходе от логической к физической модели данных может произойти усечение числа объектов.

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

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

ОбъектПервичный ключСвойстваТОВАРУникальный ключ товараУникальный ключ товараНаименование товараЗАКАЗЧИКУникальный ключ заказчикаУникальный ключ заказчикаНаименование заказчикаЮридическая принадлежность Ф.И.О. руководителяАдрес ТелефонфаксНаименование товараКоличество товараПредполагаемая ценаПОСТАВЩИКУникальный ключ поставщикаУникальный ключ поставщикаНаименование поставщикаЮридическая принадлежностьФ.И.О. руководителяАдресТелефонфаксНаименование товараКоличество товараДата изготовленияАкцизная маркаРасшифровка штрих-кодаСрок годностиВес БруттоВес НеттоЦена за единицуСуммарная ценаВид упаковкиСпособ доставкиСЧЕТАНомер счтаНомер счтаДата продажиНаименование поставщикаАдрес поставщикаЮридическая принадлежность п. Наименование заказчикаАдрес заказчикаЮридическая принадлежность з.Наименование товараКоличество товараСуммаНДС Сумма к оплатеДОГОВОРНомер договораНомер договораДата заключенияНомер счтаНаименование поставщикаАдрес поставщикаЮридическая принадлежностьНаименование товараКоличество товараСуммаНДСНАКЛАДНЫЕНомер накладнойНомер накладнойДата накладнойПометка об оплатеНомер счтаНаименование заказчикаАдрес заказчикаЮридическая принадлежностьНаименование товараКоличество товараСуммаНДС Графическое представление первой таблицы СЗПТНД Приведение модели к требуемому 1 уровню нормальной формы Приведение модели к требуемому уровню нормальной формы является основой построения реляционной БД. В процессе нормализации элементы данных группируются в таблицы, представляющие объекты и их взаимосвязи.

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

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

Нормализация информационной модели выполняется в несколько этапов.

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

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

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

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

Транзитивная зависимость выявляет дублирование данных в одном отношении. Если А, В и С - три свойства одного отношения и С зависит от В, а В от А, то говорят, что С транзитивно зависит от А. Преобразование в третью нормальную форму происходит за счет разделения исходного отношения на два. Таблица 2. Свойства и первичные ключи измененных или добавленных объектов информационной модели.

ОбъектПервичный ключСвойстваТОВАРУникальный ключ товараУникальный ключ товараУникальный ключ поставщикаУникальный ключ заказчикаНаименование товараДата изготовленияАкцизная маркаРасшифровка штрих-кодаСрок годностиВес БруттоВес НеттоЦена за единицуСуммарная ценаВид упаковкиЗАКАЗЧИКУникальный ключ заказчикаУникальный ключ заказчикаНаименование заказчикаЮридическая принадлежность Ф.И.О. руководителяАдрес ТелефонфаксПредполагаемая ценаПОСТАВЩИКУникальный ключ поставщикаУникальный ключ поставщикаНаименование поставщикаЮридическая принадлежностьФ. И.О. руководителяАдресТелефонфаксСЧЕТАНомер счтаНомер счтаДата продажиУникальный ключ товараНДС Сумма к оплатеДОГОВОРНомер договораНомер договораДата заключенияУникальный ключ поставщикаНАКЛАДНЫЕНомер накладнойНомер накладнойУникальный ключ заказчикаПометка об оплатеДата накладной Графическое представление второй таблицы ЗНТПДС Табличная с определнными связями, окончательная концептуальная модель.

ТОВАРУник. ключ поставщикаУник. ключ заказчикаНаименование товараДата изготовленияАкцизная маркаРасшиф. Штрих-кодаЗАКАЗЧИКСрок годностиПОСТАВЩИКУник. ключ заказчикаВес БруттоУник. ключ поставщикаНаименов.

ЗаказчикаВес НеттоНаименов. поставщикаЮрид-ская. принад.Цена за единицуЮрид-ская. принад.Ф.И.О. руководителяСуммарная ценаФ.И.О. руководителяАдресВид упаковкиАдресТелефонфаксУник. ключ товараТелефонфаксПредполагаемая ценаНомер договораНомер накладнойДата заключенияПометка об оплатеДата накладнойСЧЕТАУник. ключ товараНомер счтаДата продажиНДССумма к оплате Графическое представление концептуальной модели в третьей нормальной форме ЗТПС Концептуальная модель переносится затем в модель данных, совместимую с выбранной СУБД. Возможно, что отраженные в концептуальной модели взаимосвязи между объектами окажутся впоследствии нереализуемыми средствами выбранной СУБД. Это потребует изменения концептуальной модели.

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

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

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

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

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

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

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

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

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

Таблица 3. Проект таблицы для физической модели. ппНаименование поляПримечаниеТОВАР1.KeytovarУникальный ключ товара2.KeypostavУникальный ключ поставщика3.KeyzakazУникальный ключ заказчика4.NametovarНаименование товара5.DateДата изготовления6.MarkaАкцизная марка7.KodРасшифровка штрих-кода8.SrokgodСрок годности9.VesbВес Брутто10.VesnВес Нетто11.Cena1Цена за единицу12.CenaСуммарная цена13.UpakovkaВид упаковкиЗАКАЗЧИК1.KeyzakazУникальный ключ заказчика2.NamezakazНаименование заказчика3.YridzakazЮридическая принадлежность 4.FIOzakazФ.И.О. руководителя5.AdreszakazАдрес6.TelzakazТ елефонфакс7.CenazПредполагаемая цена8.NumberNНомер накладной9.OplataПометка об оплате10.DateNДата накладнойПОСТАВЩИК1.KeypoctavУникальный ключ поставщика2.NamepostavНаименование поставщика3.YridpoctavЮридическая принадлежность4.FIOpostavФ. И.О. руководителя5.AdrespostavАдрес6.Telposta vТелефонфакс7.NumberDНомер договора8.DateZДата заключенияСЧЕТА1.NumberSНомер счта2.DatePДата продажи3.KeytovarУникальный ключ товара4.NDSНДС5.SummaСумма к оплатеОдним из основных факторов, влияющих на производительность программ, которые взаимодействуют с базой данных, является способ хранения и доступа к данным.

Обычно в дополнение к специализированным методам доступа в рамках внешней модели СУБД использует несколько методов доступа внутренней модели. Мы рассмотрим по условию варианта индексно-последовательный метод доступа ИМД. Существует множество индексных методов доступа, в основе которых лежит принцип создания отдельного файла или структуры из статей значений действительного ключа.

Статья действительного ключа называется статьй индекса, а весь файл действительных ключей - индексом.

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

По его значению идентифицируется физическая запись. До тех пор, пока это возможно, записи хранятся в той же логической последовательности, что и индекс отсюда и название индексно-последовательный метод доступа. Приведм пример таблицы индексов и их связи с имеющимися файлами данных, согласно варианта. Таблица 4. Таблица индексного файла ТОВАР для индексно-последовательного метода доступа.Примечание Доходя через индексы к файлу данных, посредством самого индекса считывается наименование товара и далее вся информация по полям находящаяся в записи, согласно таблицы ТОВАР. Индексный файл Блок 7Значение КлючаНомер БлокаФайл данных Блок 11010115205Индексный файл10Блок 10Блок 2ЗначениеНомер11КлючаБлока15157258Блок 3359Блок 816Индекс 2-го уровняЗначениеНомер20КлючаБлока203254Бло к 42125Блок 5Блок 926ЗначениеНомер30КлючаБлока305Блок 635631Индекс 1-го уровня35 Уникальный ключ товараНаименование товараУникальный ключ поставщикаУникальный ключ заказчикаДата изготовленияАкцизная маркаРасшифровка штрих-кодаСрок годностиВес БруттоВес НеттоЦена за единицуСуммарная ценаВид упаковкиФорма ГЛАВНАЯ КНОПОЧНАЯ ФОРМА Option Compare Database Option Explicit Private Sub FormOpenCancel As Integer Свертывание окна базы данных, инициализация формы.

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

Me.Filter ItemNumber 0 AND Argument по умолчанию Me. FilterOn True End Sub Private Sub FormCurrent Обновление заголовка и заполнение списка команд.

Me.Caption NzMeItemText, FillOptions End Sub Private Sub FillOptions Заполнение команд для страницы кнопочной формы. Число кнопок в форме. Const conNumButtons 8 Dim dbs As Database Dim rst As Recordset Dim strSQL As String Dim intOption As Integer Установка фокуса на первую кнопку формы, скрытие всех кнопок формы, кроме первой. Поле с фокусом скрыть нельзя.MeOption1.SetFocus For intOption 2 To conNumButtons MeOption intOption.Visible False MeOptionLabel intOption.Visible False Next intOption Открытие таб. элементов кнопочной формы, поиск первого элемента текущей страницы формы.

Set dbs CurrentDb strSQL SELECT FROM Элементы кнопочной формы strSQL strSQL WHERE ItemNumber 0 AND SwitchboardID MeSwitchboardID strSQL strSQL ORDER BY ItemNumber Set rst dbs.OpenRecordsetstrSQL Вывод сообщения при отсутствии элементов на странице кнопочной формы. В остальных случаях - заполнение страницы элементами.If rst.EOF Then MeOptionLabel1.Caption Элементы кнопочной формы отсутствуют Else While Not rst.EOF MeOption rstItemNumber.Visible True MeOptionLabel rstItemNumber.Visible True MeOptionLabel rstItemNumber.Caption rstItemText rst.MoveNext Wend End If Закрытие набора записей и базы данных. rst.Close dbs.Close End Sub Private Function HandleButtonClickintBtn As Integer Эта функ. вызывается при нажатии кнопки. Аргумент intBtn указывает, какая кнопка была нажата.

Константы для выполняемых команд.Const conCmdGotoSwitchboard 1 Const conCmdOpenFormAdd 2 Const conCmdOpenFormBrowse 3 Const conCmdOpenReport 4 Const conCmdCustomizeSwitchboard 5 Const conCmdExitApplication 6 Const conCmdRunMacro 7 Const conCmdRunCode 8 Особая ошибка.

Const conErrDoCmdCancelled 2501 Dim dbs As Database Dim rst As Recordset On Error GoTo HandleButtonClickErr Поиск записи, соответствующей нажатой кнопке, в таблице элементов кнопочной формы.Set dbs CurrentDb Set rst dbs.OpenRecordsetЭлементы кнопочной формы, dbOpenDynaset rst.FindFirst SwitchboardID MeSwitchboardID AND ItemNumber intBtn Если нужная запись не найдена, вывод сообщения об ошибке и выход из функции.

If rst.NoMatch Then MsgBox Ошибка при чтении таблицы элементов кнопочной формы. rst.Close dbs.Close Exit Function End If Select Case rstCommand Переход к другой кнопочной форме. Case conCmdGotoSwitchboard Me.Filter ItemNumber 0 AND SwitchboardID rstArgument Открытие формы в режиме добавления записей.Case conCmdOpenFormAdd DoCmd.OpenForm rstArgument acAdd Открытие формы.

Case conCmdOpenFormBrowse DoCmd.OpenForm rstArgument Открытие отчета. Case conCmdOpenReport DoCmd.OpenReport rstArgument, acPreview Настройка кнопочной формы. Case conCmdCustomizeSwitchboard Обработка ситуации, когда диспетчер кнопочных форм не установлен например, при сокращенной установке. On Error Resume Next Application.Run WZMAIN80.sbmEntry If Err 0 Then MsgBox Команда недоступна. On Error GoTo 0 Обновление формы.Me.Filter ItemNumber 0 AND Argument по умолчанию Me.Caption NzMeItemText, FillOptions Выход из приложения.

Case conCmdExitApplication CloseCurrentDatabase Запуск макроса. Case conCmdRunMacro DoCmd.RunMacro rstArgument Выполнение программы. Case conCmdRunCode Application.Run rstArgument Другие команды не поддерживаются. Case Else MsgBox Неизвестная команда.End Select Закрытие набора записей и базы данных. rst.Close dbs.Close HandleButtonClickExit Exit Function HandleButtonClickErr Если выполнение прервано пользователем, сообщение об ошибке не выводится.

Вместо этого выполнение продолжается со следующей строки.If Err conErrDoCmdCancelled Then Resume Next Else MsgBox Ошибка при выполнении команды vbCritical Resume HandleButtonClickExit End If End Function Форма ЗАКАЗЧИК Option Compare Database Option Explicit Private Sub Кнопка18Click On Error GoTo ErrКнопка18Click DoCmd.DoMenuItem acFormBar, acEditMenu, 8 acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6 acMenuVer70 ExitКнопка18Click Exit Sub ErrКнопка18Click MsgBox Err.Description Resume ExitКнопка18Click End Sub Private Sub Кнопка20Click On Error GoTo ErrКнопка20Click Dim stDocName As String stDocName Запрос2 DoCmd.OpenReport stDocName, acPreview ExitКнопка20Click Exit Sub ErrКнопка20Click MsgBox Err.Description Resume ExitКнопка20Click End Sub Private Sub Кнопка33Click On Error GoTo ErrКнопка33Click Dim stDocName As String Dim stLinkCriteria As String stDocName Товары DoCmd.OpenForm stDocName stLinkCriteria ExitКнопка33Click Exit Sub ErrКнопка33Click MsgBox Err.Description Resume ExitКнопка33Click End Sub Sub ПолеСоСписком34AfterUpdate Поиск записи, соответствующей этому элементу управления.

Me.RecordsetClone.FindFirst Namezakaz MeПолеСоСписком34 Me.Bookmark Me.RecordsetClone.Bookmark End Sub Форма ПОСТАВЩИК Option Compare Database Option Explicit Private Sub Кнопка18Click On Error GoTo ErrКнопка18Click DoCmd. DoMenuItem acFormBar, acEditMenu, 8 acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6 acMenuVer70 ExitКнопка18Click Exit Sub ErrКнопка18Click MsgBox Err.Description Resume ExitКнопка18Click End Sub Private Sub Кнопка20Click On Error GoTo ErrКнопка20Click Dim stDocName As String stDocName Запрос1 DoCmd.OpenReport stDocName, acPreview ExitКнопка20Click Exit Sub ErrКнопка20Click MsgBox Err.Description Resume ExitКнопка20Click End Sub Форма ТОВАР Option Compare Database Option Explicit Sub ПолеСоСписком18AfterUpdate Поиск записи, соответствующей этому элементу управления. Me.RecordsetClone.FindFirst Nametovar MeПолеСоСписком18 Me.Bookmark Me.RecordsetClone.Bookmark End Sub Private Sub Кнопка25Click On Error GoTo ErrКнопка25Click DoCmd.Close ExitКнопка25Click Exit Sub ErrКнопка25Click MsgBox Err.Description Resume ExitКнопка25Click End Sub Форма О ПРОГРАММЕ Option Compare Database Сортировка базы данных для сравнения строк.

Option Explicit Обязательное описание переменных перед применением.

Private Sub ОтменаClick Программа, созданная мастером кнопок.

On Error GoTo ErrCancelClick Закрытие формы.DoCmd.Close ExitCancelClick Exit Sub ErrCancelClick MsgBox Err.Description Resume ExitCancelClick End Sub Private Sub ОКClick On Error GoTo ErrOKClick Dim strMsg As String, strTitle As String Dim intStyle As Integer Если отчет о продажах по годам не был открыт для просмотра или печати, возникает ошибка.

Перем. blnOpening имеет значение True, только если для отчета произошло событие Open. If Not ReportsДата.blnOpening Then Err.Raise 0 Скрытие формы.Me.Visible False ExitOKClick Exit Sub ErrOKClick strMsg Для использования формы нужно просматривать или печатать отчет Продажи по годам из окна базы данных или конструктора. intStyle vbOKOnly strTitle Открытие из отчета MsgBox strMsg, intStyle, strTitle Resume ExitOKClick End Sub Private Sub Кнопка5Click On Error GoTo ErrКнопка5Click DoCmd.Close ExitКнопка5Click Exit Sub ErrКнопка5Click MsgBox Err.Description Resume ExitКнопка5Click End Sub Форма ПОДЧИНННАЯ ФОРМА ТОВАРА Option Compare Database Option Explicit Private Sub Кнопка22Click On Error GoTo ErrКнопка22Click DoCmd.DoMenuItem acFormBar, acEditMenu, 8 acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6 acMenuVer70 ExitКнопка22Click Exit Sub ErrКнопка22Click MsgBox Err.Description Resume ExitКнопка22Click End Sub Private Sub Кнопка23Click On Error GoTo ErrКнопка23Click DoCmd.DoMenuItem acFormBar, acEditMenu, 8 acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6 acMenuVer70 ExitКнопка23Click Exit Sub ErrКнопка23Click MsgBox Err.Description Resume ExitКнопка23Click End Sub ЗАПРОС1 SELECT Товары.Nametovar, SumТовары.Cena AS SumCena, Поставщик.Namepostav, Поставщик.NumberD, Поставщик.DateZ FROM Поставщик INNER JOIN Товары ON Поставщик.Keypostav Товары.Keytovar WHERE Поставщик.NamepostavFormsПоставщикNamepo stav GROUP BY Товары.Nametovar, Поставщик.Namepostav, Поставщик.NumberD, Поставщик.DateZ ЗАПРОС2 SELECT Заказчик.Namezakaz, Заказчик.Adreszakaz, Заказчик.NumberN, Заказчик.DateN, Товары.Nametovar, Товары.Srokgod, Товары.Vesb, Товары.Vesn, Товары.Cena, Товары.Date FROM Заказчик INNER JOIN Товары ON Заказчик.Nametov Товары.Nametovar WHERE Заказчик.NametovFormsЗаказчик1Nametov GROUP BY Заказчик.Namezakaz, Заказчик.Adreszakaz, Заказчик.NumberN, Заказчик.DateN, Товары.Nametovar, Товары.Srokgod, Товары.Vesb, Товары.Vesn, Товары.Cena, Товары.Date.