У меня есть база данных доступа 2016, указывающая на бэкэнд MySQL. У меня есть форма с подчиненной формой. Субформа находится в режиме непрерывной формы.
Я сделал шанс на запись подформы, и теперь, когда мои пользователи вносят вклад в создание записи в следующую запись, только что созданная запись отображает #Deleted во всех полях текстовых полей. Нажатие F5 исправляет проблему, но это дополнительный шаг, который я хочу избежать.
Вот код, который я добавил.
Private Sub cboOperationNUM_AfterUpdate()
If Nz(DLookup("[autoOut]", "[dataDetailOperations]", "[dataDetailOperations_NUM] = " & Me.cboOperationNUM.Value), "") = "" Then
Exit Sub
ElseIf DLookup("[autoOut]", "[dataDetailOperations]", "[dataDetailOperations_NUM] = " & Me.cboOperationNUM.Value) = -1 Then
Me.opOutsourcedPO.Value = 0
Else
Me.opOutsourcedPO.Value = Null
End If
End Sub
Если операция "Аутсорсинг" выбирает, она вводит 0 в поле "ПО". Если не выполняется аутсорсинг, он вводит NULL. Я обнаружил, что если поле PO (int (5) в MySQL) установлено в число и затем пустое (NULL в VBA или удалено из формы), когда запись обновляется, она показывает #Deleted до обновления. Если я прокомментирую часть Else моего кода, все, похоже, работает, но оно не освобождает поле PO, если операция не является аутсорсингом. Это функциональность, которую я хотел бы сохранить.
Есть идеи?
Поскольку вы заявляете, что обновление формы с помощью F5 решает проблему, вы можете добавить:
Me.Refresh
После
Me.opOutsourcedPO.Value = Null
Это, очевидно, не решает основной проблемы, но может предложить обходное решение.
Me.Requery