Мой вопрос касается ситуаций, когда пользовательский код требуется для автоматического увеличения полей в MS Access, особенно с проблемами, возникающими в результате использования такого кода в событии OnActivate.
У меня есть поле [Group_ID], которое автоматически-инкрементно каждый раз, когда создается новая запись с использованием пользовательского кода в событиях OnCurrent и OnActivate.Иногда мне нужно, чтобы Group_ID был увеличен OnActivate, но иногда нет.В некоторых случаях пользователи фактически используют кнопку «дублирующаяся запись», чтобы использовать тот же Group_ID (наряду с большинством других полей) для последующей записи.В подобных ситуациях я хотел бы установить условие для события OnActivate, которое позволяет пользователям ссылаться на другие формы или таблицы без повторного запроса Group_ID по возвращении в форму для завершения записи.Вот мой код:
'increments Group_ID when a new record is made
Private Sub Form_Current()
If Me.NewRecord = True Then
Me.Group_ID = Nz(DMax("Group_ID", "All_sightings"), 1) + 1
End If
End Sub
'increments Group_ID when the form becomes active IF the value is no
longer max value + 1
Private Sub Form_Activate()
If Me.Group_ID = Nz(DMax("Group_ID", "All_sightings")) + 1 Then
Else
Me.Requery
End If
End Sub
Что я хотел бы сделать, это добавить дополнительное условие к подпункту Form_Activate, которое проверяет, заполнено ли другое поле (например, была ли использована кнопка «дубликата»)когда форма снова активируется после того, как пользователь возвращается к частично заполненной записи.Это поле не потребует ввода данных пользователем, поскольку оно будет автоматически заполнено, когда пользователь нажимает кнопку дублирования.Я выбрал поле [UTM_x].
Я пробовал:
=IIF(Me.Group_ID = Nz(DMax("Group_ID", "All_sightings")) + 1 And Not IsNull(Me.UTM_x), "", Me.Requery)
И различные другие комбинации вложенных операторов IIF () и IfThenElse, но не повезло.Форма продолжает запрашивать каждый раз по событию OnActivate, когда Group_ID не больше (max + 1).Есть предложения?