ms обновление поля условно на form.activate - PullRequest
0 голосов
/ 29 сентября 2018

Мой вопрос касается ситуаций, когда пользовательский код требуется для автоматического увеличения полей в 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).Есть предложения?

1 Ответ

0 голосов
/ 01 октября 2018

Я поигрался с заявлениями iif и другими утверждениями if-then-else, в конце концов нашел решение своей проблемы.Вот оно:

Private Sub Form_Activate()
If Me.Group_ID = Nz(DMax("Group_ID", "All_sightings")) + 1 Then
'blank/do nothing because Group_ID is already max+1
    ElseIf IsNull(UTM_x) Then
        Me.Requery 'makes Group_ID max+1 because null UTM_x means it's a new record
        Else
            'blank/do nothing because Group_ID = max and this is a duplicated record
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...