МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Организация баз данных

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

    нормализации основана на том, что определенный набор таблиц обладает

    лучшими свойствами при включении, модификации и удалении данных, чем все

    остальные наборы таблиц, с помощью которых могут быть представлены те же

    данные. Введение нормализации отношений при разработке информационной

    модели обеспечивает минимальный объем физической, то есть записанной на

    каком-либо носителе БД и ее максимальное быстродействие, что впрямую

    отражается на качестве функционирования информационной системы.

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

    Данные, представленные в виде двумерной таблицы, являются первой

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

    заключается в образовании двумерной таблицы, содержащей все необходимые

    свойства информационной модели, и в выделении ключевых свойств. Очевидно,

    что полученная весьма внушительная таблица будет содержать очень

    разнородную информацию. В этом случае будут наблюдаться аномалии включения,

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

    придется уделить внимание данным (вводить или заботиться о том, чтобы они

    не были стерты), которые не имеют к текущим действиям никакого отношения.

    Например, может наблюдаться такая парадоксальная ситуация.

    Отношение задано во второй нормальной форме, если оно является

    отношением в первой нормальной форме и каждое свойство, не являющийся

    первичным свойством в этом отношении, полностью зависит от любого

    возможного ключа этого отношения.

    Если все возможные ключи отношения содержат по одному свойству, то это

    отношение задано во второй нормальной форме, так как в этом случае все

    свойства, не являющиеся первичными, полностью зависят от возможных ключей.

    Если ключи состоят более чем из одного свойства, отношение, заданное в

    первой нормальной форме, может не быть отношением во второй нормальной

    форме. Приведение отношений ко второй нормальной форме заключается в

    обеспечении полной функциональной зависимости всех свойств от ключа за счет

    разбиения таблицы на несколько, в которых все имеющиеся свойства будут

    иметь полную функциональную зависимость от ключа этой таблицы. В процессе

    приведения модели ко второй нормальной форме в основном исключаются

    аномалии дублирования данных.

    Отношение задано в третьей нормальной форме, если оно задано во второй

    нормальной форме и каждое свойство этого отношения, не являющийся

    первичным, не транзитивно зависит от каждого возможного ключа этого

    отношения.

    Транзитивная зависимость выявляет дублирование данных в одном

    отношении. Если А, В и С - три свойства одного отношения и С зависит от В,

    а В от А, то говорят, что С транзитивно зависит от А. Преобразование в

    третью нормальную форму происходит за счет разделения исходного отношения

    на два.

    Таблица 2. Свойства и первичные ключи измененных или добавленных объектов

    информационной модели.

    |Объект |Первичный ключ |Свойства |

    |ТОВАР |Уникальный ключ товара |Уникальный ключ товара |

    | | |Уникальный ключ поставщика |

    | | |Уникальный ключ заказчика |

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

    | | |Дата изготовления |

    | | |Акцизная марка |

    | | |Расшифровка штрих-кода |

    | | |Срок годности |

    | | |Вес Брутто |

    | | |Вес Нетто |

    | | |Цена за единицу |

    | | |Суммарная цена |

    | | |Вид упаковки |

    |ЗАКАЗЧИК |Уникальный ключ заказчика |Уникальный ключ заказчика |

    | | |Наименование заказчика |

    | | |Юридическая принадлежность |

    | | |Ф.И.О. руководителя |

    | | |Адрес |

    | | |Телефон/факс |

    | | |Предполагаемая цена |

    |ПОСТАВЩИК |Уникальный ключ поставщика|Уникальный ключ поставщика |

    | | |Наименование поставщика |

    | | |Юридическая принадлежность |

    | | |Ф.И.О. руководителя |

    | | |Адрес |

    | | |Телефон/факс |

    |СЧЕТА |Номер счёта |Номер счёта |

    | | |Дата продажи |

    | | |Уникальный ключ товара |

    | | |НДС |

    | | |Сумма к оплате |

    |ДОГОВОР |Номер договора |Номер договора |

    | | |Дата заключения |

    | | |Уникальный ключ поставщика |

    |НАКЛАДНЫЕ |Номер накладной |Номер накладной |

    | | |Уникальный ключ заказчика |

    | | |Пометка об оплате |

    | | |Дата накладной |

    Графическое представление второй таблицы

    | | | |З |Н |

    | | | | | |

    | |Т | |П |Д |

    | | | | | |

    | | | |С | |

    Табличная с определёнными связями, окончательная концептуальная модель.

    | | |ТОВАР | | |

    | | |Уник. ключ поставщика| | |

    | | |Уник. ключ заказчика | | |

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

    | | |Дата изготовления | | |

    | | |Акцизная марка | | |

    | | |Расшиф. Штрих-кода | | |

    |ЗАКАЗЧИК | |Срок годности | |ПОСТАВЩИК |

    |Уник. ключ | |Вес Брутто | |Уник. ключ |

    |заказчика | | | |поставщика |

    |Наименов. | |Вес Нетто | |Наименов. поставщика|

    |Заказчика | | | | |

    |Юрид-ская. принад.| |Цена за единицу | |Юрид-ская. принад. |

    |Ф.И.О. | |Суммарная цена | |Ф.И.О. руководителя |

    |руководителя | | | | |

    |Адрес | |Вид упаковки | |Адрес |

    |Телефон/факс | |Уник. ключ товара | |Телефон/факс |

    |Предполагаемая | | | |Номер договора |

    |цена | | | | |

    |Номер накладной | | | |Дата заключения |

    |Пометка об оплате | | | | |

    |Дата накладной | |СЧЕТА | | |

    | | |Уник. ключ товара | | |

    | | |Номер счёта | | |

    | | |Дата продажи | | |

    | | |НДС | | |

    | | |Сумма к оплате | | |

    Графическое представление концептуальной модели в третьей нормальной форме

    | | | |З | |

    | | | | | |

    | |Т | |П | |

    | | | | | |

    | | | |С | |

    Концептуальная модель переносится затем в модель данных, совместимую с

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

    взаимосвязи между объектами окажутся впоследствии нереализуемыми средствами

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

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

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

    Логическая модель отражает логические связи между элементами данных вне

    зависимости от их содержания и среды хранения. Логическая модель данных

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

    подмножества этой логической модели, называемые внешними моделями,

    отражающие их представления о предметной области. Внешняя модель

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

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

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

    легли в основу разработки концептуальной модели. Логическая модель

    отображается в физическую память, такую, как диск, лента или какой-либо

    другой носитель информации.

    Иерархическая модель данных строится по принципу иерархии типов

    объектов, то есть один тип объекта является главным, а остальные,

    находящиеся на низших уровнях иерархии, — подчиненными. Между главным и

    подчиненными объектами устанавливается взаимосвязь «один ко многим». В то

    же время для каждого экземпляра главного объекта может быть несколько

    экземпляров подчиненных типов объектов. Взаимосвязи между объектами

    напоминают взаимосвязи в генеалогическом дереве за единственным

    исключением: для каждого порожденного (подчиненного) типа объекта может

    быть только один исходный (главный) тип объекта.

    Итак, полученную концептуальную модель, будем считать логико-

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

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

    Физическая модель, определяющая размещение данных, методы доступа и

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

    Внешние модели никак не связаны с типом физической памяти, в которой

    будут храниться данные, и с методами доступа к этим данным. Это положение

    отражает первый уровень независимости данных. С другой стороны, если

    концептуальная модель способна учитывать расширение требований к системе в

    будущем, то вносимые в нее изменения не должны оказывать влияния на

    существующие внешние модели. Это — второй уровень независимости данных.

    Построение логической модели обусловлено требованиями используемой СУБД.

    Поэтому при замене СУБД она также может измениться.

    С точки зрения прикладного программирования независимость данных

    определяется не техникой программирования, а его дисциплиной, т.е. для того

    чтобы при любом изменении системы избежать перекомпиляции приложения,

    рекомендуется не определять константы (постоянные значения данных) в

    программе. Лучшее решение состоит в передаче программе значений в качестве

    параметров.

    Все актуальные требования предметной области и адекватные им «скрытые»

    требования на стадии проектирования должны найти свое отражение в

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

    использования и изменения базы данных. Но в большинстве предметных областей

    такие основные данные, как объекты и их взаимосвязи, относительно

    стабильны. Меняются только информационные требования, то есть способы

    использования данных для получения информации.

    Степень независимости данных определяется тщательностью проектирования

    базы данных. Всесторонний анализ объектов предметной области и их

    взаимосвязей минимизирует влияние изменения требований к данным в одной

    программе на другие программы. В этом и состоит всеобъемлющая независимость

    данных.

    Основное различие между указанными выше тремя типами моделей данных

    (концептуальной, логической и физической) состоит в способах представления

    взаимосвязей между объектами. При проектировании БД требуется различать

    взаимосвязи между объектами, между свойствами одного объекта и между

    свойствами различных объектов.

    В процессе проектирования объекты преобразуются в отношения, свойства в

    поля таблиц, методы – в процедуры, формы и т.д. (что и было произведено).

    Правильно проведенный объектно-ориентированный анализ позволяет значительно

    облегчить работу.

    Таблица 3. Проект таблицы для физической модели.

    |№ п/п |Наименование поля |Примечание |

    |ТОВАР |

    |1. |Key_tovar |Уникальный ключ товара |

    |2. |Key_postav |Уникальный ключ поставщика |

    |3. |Key_zakaz |Уникальный ключ заказчика |

    |4. |Name_tovar |Наименование товара |

    |5. |Date |Дата изготовления |

    |6. |Marka |Акцизная марка |

    |7. |Kod |Расшифровка штрих-кода |

    |8. |Srok_god |Срок годности |

    |9. |Ves_b |Вес Брутто |

    |10. |Ves_n |Вес Нетто |

    |11. |Cena_1 |Цена за единицу |

    |12. |Cena |Суммарная цена |

    |13. |Upakovka |Вид упаковки |

    |ЗАКАЗЧИК |

    |1. |Key_zakaz |Уникальный ключ заказчика |

    |2. |Name_zakaz |Наименование заказчика |

    |3. |Yrid_zakaz |Юридическая принадлежность |

    |4. |FIO_zakaz |Ф.И.О. руководителя |

    |5. |Adres_zakaz |Адрес |

    |6. |Tel_zakaz |Телефон/факс |

    |7. |Cena_z |Предполагаемая цена |

    |8. |Number_N |Номер накладной |

    |9. |Oplata |Пометка об оплате |

    |10. |Date_N |Дата накладной |

    |ПОСТАВЩИК |

    |1. |Key_poctav |Уникальный ключ поставщика |

    |2. |Name_postav |Наименование поставщика |

    |3. |Yrid_poctav |Юридическая принадлежность |

    |4. |FIO_postav |Ф.И.О. руководителя |

    |5. |Adres_postav |Адрес |

    |6. |Tel_postav |Телефон/факс |

    |7. |Number_D |Номер договора |

    |8. |Date_Z |Дата заключения |

    |СЧЕТА |

    |1. |Number_S |Номер счёта |

    |2. |Date_P |Дата продажи |

    |3. |Key_tovar |Уникальный ключ товара |

    |4. |NDS |НДС |

    |5. |Summa |Сумма к оплате |

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

    которые взаимодействуют с базой данных, является способ хранения и доступа

    к данным. Обычно в дополнение к специализированным методам доступа в рамках

    внешней модели СУБД использует несколько методов доступа внутренней модели.

    Мы рассмотрим (по условию варианта) индексно-последовательный метод доступа

    (ИМД).

    Существует множество индексных методов доступа, в основе которых лежит

    принцип создания отдельного файла или структуры из статей значений

    действительного ключа. Статья действительного ключа называется статьёй

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

    значительно меньше собственно базы данных, и, поскольку в оперативной

    памяти могут находиться многие из его статей, скорость поиска в нём гораздо

    выше.

    В индексно-последовательном методе доступа индексный файл всегда

    упорядочен по так называемому первичному ключу. Первичный ключ - главный

    атрибут физической записи. По его значению идентифицируется физическая

    запись. До тех пор, пока это возможно, записи хранятся в той же логической

    последовательности, что и индекс (отсюда и название "индексно-

    последовательный метод доступа").

    Приведём пример таблицы индексов и их связи с имеющимися файлами

    данных, согласно варианта.

    Таблица 4. Таблица индексного файла "ТОВАР" для индексно-последовательного

    метода доступа.

    Примечание (Доходя через индексы к файлу данных, посредством самого индекса

    считывается наименование товара и далее вся информация по полям находящаяся

    в записи, согласно таблицы ТОВАР).

    | | | |Индексный файл | | |

    | | | |Блок 7 | | |

    | | | |Значение |Номер | |Файл |

    | | | |Ключа |Блока | |данных |

    | | | | | | |Блок 1 |

    | | | |10 |1 | |01 |

    | | | |15 |2 | |05 |

    |Индексный файл | | | | |10 |

    |Блок 10 | | | | |Блок 2 |

    |Значение |Номер | | | | |11 |

    |Ключа |Блока | | | | |15 |

    |15 |7 | | | | | |

    |25 |8 | | | | |Блок 3 |

    |35 |9 | |Блок 8 | |16 |

    |Индекс 2-го уровня | |Значение |Номер | |20 |

    | | | |Ключа |Блока | | |

    | | | |20 |3 | | |

    | | | |25 |4 | |Блок 4 |

    | | | | | | |21 |

    | | | | | | |25 |

    | | | | | | | |

    | | | | | | |Блок 5 |

    | | | |Блок 9 | |26 |

    | | | |Значение |Номер | |30 |

    | | | |Ключа |Блока | | |

    | | | |30 |5 | |Блок 6 |

    | | | |35 |6 | |31 |

    | | | |Индекс 1-го уровня | |35 |

    |Уни|Наи|Уни|Уни|Дат|Акц|Рас|Сро|Вес|Вес|Цен|Сум|Вид|

    |кал|мен|кал|кал|а |изн|шиф|к |Бру|Нет|а |мар|упа|

    |ьны|ова|ьны|ьны|изг|ая |ров|год|тто|то |за |ная|ков|

    |й |ние|й |й |ото|мар|ка |нос| | |еди|цен|ки |

    |клю|тов|клю|клю|вле|ка |штр|ти | | |ниц|а | |

    |ч |ара|ч |ч |ния| |их-| | | |у | | |

    |тов| |пос|зак| | |код| | | | | | |

    |ара| |тав|азч| | |а | | | | | | |

    | | |щик|ика| | | | | | | | | |

    | | |а | | | | | | | | | | |

    Форма «ГЛАВНАЯ КНОПОЧНАЯ ФОРМА»

    [pic]

    Option Compare Database

    Option Explicit

    Private Sub Form_Open(Cancel As Integer)

    ' Свертывание окна базы данных, инициализация формы.

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

    умолчанию.

    Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'по умолчанию' "

    Me.FilterOn = True

    End Sub

    Private Sub Form_Current()

    ' Обновление заголовка и заполнение списка команд.

    Me.Caption = Nz(Me![ItemText], "")

    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

    ' Установка фокуса на первую кнопку формы, скрытие всех кнопок формы,

    кроме первой.

    ' Поле с фокусом скрыть нельзя.

    Me![Option1].SetFocus

    For intOption = 2 To conNumButtons

    Me("Option" & intOption).Visible = False

    Me("OptionLabel" & intOption).Visible = False

    Next intOption

    ' Открытие таб. элементов кнопочной формы, поиск первого элемента

    текущей страницы формы.

    Set dbs = CurrentDb()

    strSQL = "SELECT * FROM [Элементы кнопочной формы]"

    strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" &

    Me![SwitchboardID]

    strSQL = strSQL & " ORDER BY [ItemNumber];"

    Set rst = dbs.OpenRecordset(strSQL)

    ' Вывод сообщения при отсутствии элементов на странице кнопочной формы.

    ' В остальных случаях - заполнение страницы элементами.

    If (rst.EOF) Then

    Me![OptionLabel1].Caption = "Элементы кнопочной формы отсутствуют"

    Else

    While (Not (rst.EOF))

    Me("Option" & rst![ItemNumber]).Visible = True

    Me("OptionLabel" & rst![ItemNumber]).Visible = True

    Me("OptionLabel" & rst![ItemNumber]).Caption = rst![ItemText]

    rst.MoveNext

    Wend

    End If

    ' Закрытие набора записей и базы данных.

    rst.Close

    dbs.Close

    End Sub

    Private Function HandleButtonClick(intBtn 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 HandleButtonClick_Err

    ' Поиск записи, соответствующей нажатой кнопке, в таблице элементов

    кнопочной формы.

    Set dbs = CurrentDb()

    Set rst = dbs.OpenRecordset("Элементы кнопочной формы", dbOpenDynaset)

    rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND

    [ItemNumber]=" & intBtn

    ' Если нужная запись не найдена, вывод сообщения об ошибке и выход из

    функции.

    If (rst.NoMatch) Then

    MsgBox "Ошибка при чтении таблицы элементов кнопочной формы."

    rst.Close

    dbs.Close

    Exit Function

    End If

    Select Case rst![Command]

    ' Переход к другой кнопочной форме.

    Case conCmdGotoSwitchboard

    Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" &

    rst![Argument]

    ' Открытие формы в режиме добавления записей.

    Case conCmdOpenFormAdd

    DoCmd.OpenForm rst![Argument], , , , acAdd

    ' Открытие формы.

    Case conCmdOpenFormBrowse

    DoCmd.OpenForm rst![Argument]

    ' Открытие отчета.

    Case conCmdOpenReport

    DoCmd.OpenReport rst![Argument], acPreview

    ' Настройка кнопочной формы.

    Case conCmdCustomizeSwitchboard

    ' Обработка ситуации, когда диспетчер

    ' кнопочных форм не установлен

    ' (например, при сокращенной установке).

    On Error Resume Next

    Application.Run "WZMAIN80.sbm_Entry"

    If (Err <> 0) Then MsgBox "Команда недоступна."

    On Error GoTo 0

    ' Обновление формы.

    Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'по умолчанию' "

    Me.Caption = Nz(Me![ItemText], "")

    FillOptions

    ' Выход из приложения.

    Case conCmdExitApplication

    CloseCurrentDatabase

    ' Запуск макроса.

    Case conCmdRunMacro

    DoCmd.RunMacro rst![Argument]

    ' Выполнение программы.

    Case conCmdRunCode

    Application.Run rst![Argument]

    ' Другие команды не поддерживаются.

    Case Else

    MsgBox "Неизвестная команда."

    End Select

    ' Закрытие набора записей и базы данных.

    rst.Close

    dbs.Close

    HandleButtonClick_Exit:

    Exit Function

    HandleButtonClick_Err:

    ' Если выполнение прервано пользователем, сообщение об ошибке не

    выводится.

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

    If (Err = conErrDoCmdCancelled) Then

    Resume Next

    Else

    MsgBox "Ошибка при выполнении команды.", vbCritical

    Resume HandleButtonClick_Exit

    End If

    End Function

    Форма «ЗАКАЗЧИК»

    [pic]

    Option Compare Database

    Option Explicit

    Private Sub Кнопка18_Click()

    On Error GoTo Err_Кнопка18_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_Кнопка18_Click:

    Exit Sub

    Err_Кнопка18_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка18_Click

    End Sub

    Private Sub Кнопка20_Click()

    On Error GoTo Err_Кнопка20_Click

    Dim stDocName As String

    stDocName = "Запрос2"

    DoCmd.OpenReport stDocName, acPreview

    Exit_Кнопка20_Click:

    Exit Sub

    Err_Кнопка20_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка20_Click

    End Sub

    Private Sub Кнопка33_Click()

    On Error GoTo Err_Кнопка33_Click

    Dim stDocName As String

    Dim stLinkCriteria As String

    stDocName = "Товары"

    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Exit_Кнопка33_Click:

    Exit Sub

    Err_Кнопка33_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка33_Click

    End Sub

    Sub ПолеСоСписком34_AfterUpdate()

    ' Поиск записи, соответствующей этому элементу управления.

    Me.RecordsetClone.FindFirst "[Name_zakaz] = '" & Me![ПолеСоСписком34] &

    "'"

    Me.Bookmark = Me.RecordsetClone.Bookmark

    End Sub

    Форма «ПОСТАВЩИК»

    [pic]

    Option Compare Database

    Option Explicit

    Private Sub Кнопка18_Click()

    On Error GoTo Err_Кнопка18_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_Кнопка18_Click:

    Exit Sub

    Err_Кнопка18_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка18_Click

    End Sub

    Private Sub Кнопка20_Click()

    On Error GoTo Err_Кнопка20_Click

    Dim stDocName As String

    stDocName = "Запрос1"

    DoCmd.OpenReport stDocName, acPreview

    Exit_Кнопка20_Click:

    Exit Sub

    Err_Кнопка20_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка20_Click

    End Sub

    Форма «ТОВАР»

    [pic]

    Option Compare Database

    Option Explicit

    Sub ПолеСоСписком18_AfterUpdate()

    ' Поиск записи, соответствующей этому элементу управления.

    Me.RecordsetClone.FindFirst "[Name_tovar] = '" & Me![ПолеСоСписком18] &

    "'"

    Me.Bookmark = Me.RecordsetClone.Bookmark

    End Sub

    Private Sub Кнопка25_Click()

    On Error GoTo Err_Кнопка25_Click

    DoCmd.Close

    Exit_Кнопка25_Click:

    Exit Sub

    Err_Кнопка25_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка25_Click

    End Sub

    Форма «О ПРОГРАММЕ»

    [pic]

    Option Compare Database ' Сортировка базы данных для сравнения строк.

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

    Private Sub Отмена_Click()

    ' Программа, созданная мастером кнопок.

    On Error GoTo Err_Cancel_Click

    ' Закрытие формы.

    DoCmd.Close

    Exit_Cancel_Click:

    Exit Sub

    Err_Cancel_Click:

    MsgBox Err.Description

    Resume Exit_Cancel_Click

    End Sub

    Private Sub ОК_Click()

    On Error GoTo Err_OK_Click

    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

    Exit_OK_Click:

    Exit Sub

    Err_OK_Click:

    strMsg = "Для использования формы нужно просматривать или печатать

    отчет 'Продажи по годам' из окна базы данных или конструктора."

    intStyle = vbOKOnly

    strTitle = "Открытие из отчета"

    MsgBox strMsg, intStyle, strTitle

    Resume Exit_OK_Click

    End Sub

    Private Sub Кнопка5_Click()

    On Error GoTo Err_Кнопка5_Click

    DoCmd.Close

    Exit_Кнопка5_Click:

    Exit Sub

    Err_Кнопка5_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка5_Click

    End Sub

    Форма «ПОДЧИНЁННАЯ ФОРМА ТОВАРА»

    Option Compare Database

    Option Explicit

    Private Sub Кнопка22_Click()

    On Error GoTo Err_Кнопка22_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_Кнопка22_Click:

    Exit Sub

    Err_Кнопка22_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка22_Click

    End Sub

    Private Sub Кнопка23_Click()

    On Error GoTo Err_Кнопка23_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_Кнопка23_Click:

    Exit Sub

    Err_Кнопка23_Click:

    MsgBox Err.Description

    Resume Exit_Кнопка23_Click

    End Sub

    ЗАПРОС1

    SELECT Товары.Name_tovar, Sum(Товары.Cena) AS Sum_Cena,

    Поставщик.Name_postav, Поставщик.Number_D, Поставщик.Date_Z

    FROM Поставщик INNER JOIN Товары ON Поставщик.Key_postav = Товары.Key_tovar

    WHERE (((Поставщик.Name_postav)=[Forms]![Поставщик]![Name_postav]))

    GROUP BY Товары.Name_tovar, Поставщик.Name_postav, Поставщик.Number_D,

    Поставщик.Date_Z;

    ЗАПРОС2

    SELECT Заказчик.Name_zakaz, Заказчик.Adres_zakaz, Заказчик.Number_N,

    Заказчик.Date_N, Товары.Name_tovar, Товары.Srok_god, Товары.Ves_b,

    Товары.Ves_n, Товары.Cena, Товары.Date

    FROM [Заказчик] INNER JOIN Товары ON Заказчик.Name_tov = Товары.Name_tovar

    WHERE (((Заказчик.Name_tov)=[Forms]![Заказчик1]![Name_tov]))

    GROUP BY Заказчик.Name_zakaz, Заказчик.Adres_zakaz, Заказчик.Number_N,

    Заказчик.Date_N, Товары.Name_tovar, Товары.Srok_god, Товары.Ves_b,

    Товары.Ves_n, Товары.Cena, Товары.Date;

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.