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).