Читаем Access 2002: Самоучитель полностью

DMax(вырaжeниe, набор[, условие])

Здесь:

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

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

– условие – необязательное строковое выражение, ограничивающее диапазон данных, для которых определяется минимальное или максимальное значение поля. Если аргумент условие опущен, DMax выполнит действия над полем, заданным в аргументе выражение, для всего набора записей. Любое поле, указанное в аргументе условие, должно принадлежать подмножеству, заданному аргументом набор; в противном случае функция DMax возвращает значение Null.

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

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

6. Запускается макрос14, который передает фокус следующему полю – Название фирмы.

7. Заканчивается логическая конструкция If.

Проверка завершенной процедуры

На этом написание процедуры завершено. Вот ее полный текст:

Private Sub Название_фирмы_LostFocus()

On Error GoTo Err Название_фирмы_LostFocus_Click

Dim Cod As Integer

Dim answer As Integer

answer = DCount(«[Haзвaниe фирмы]», «Фирмы», «[Название фирмы] = Forms![Фирмы]![Haзвaниe фирмы]»)

If answer = 1 Then

MsgBox Prompt:="Значение уже содержится в файле и повторно не вводится"

DoCmd.RunMacro «Макрос32»

Else

DoCmd.RunMacro «Макрос2»

DoCmd.RunMacro «Макрос1»

MsgBox Prompt:="Запись введена"

Cod = DMax(«[Kод фирмы]», «Фирмы») + 1

Forms![Фирмы]![Kод фирмы] = [Cod]

DoCmd.RunMacro «Макрос14»

End If

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, acMenuVer70

Exit Название_фирмы_LostFocus_Click:

Exit Sub

Err Название_фирмы_LostFocus_Click:

MsgBox Err.Description

Resume Exit Название_фирмы_LostFocus_Click

End Sub

Программа создавалась в окне модуля. За недостатком места мы не иллюстрировали выполнение каждого этапа работы после ввода очередного оператора. Покажем только, как выглядит в окне модуля завершенная процедура (см. рис. 12.8).

Рис. 12.8

Перейти на страницу:

Похожие книги