Организация баз данных
Рефераты >> Программирование и компьютеры >> Организация баз данных

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

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

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

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

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

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

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

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

Вес Брутто

Вес Нетто

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

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

Вид упаковки

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

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

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

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


Страница: