В моей базе данных есть три связанных таблицы; tblG5Property, tblG3ZIP, tblG2City. tblG5Property имеет fk, связанный с pk в tblG3ZIP, который имеет fk, связанный с pk в tblG2City.NotInList Message Box
У меня есть две формы, связанные с этими таблицами, frmProperty & frmCity. Когда пользователь добавляет новый адрес и ему необходимо добавить новый ZIP-код, у меня есть следующий код в NotInList даже для комбобокса ctrlg5ZIP в frmProperty.
Private Sub ctrlg5ZIP_NotInList(NewData As String, Response As Integer)
On Error GoTo ctrlg5ZIP_NotInList_Err
'Variable Declarations
Dim vntResult
Dim dbsCurrent As Database
Dim rstZIPs As Recordset
' Exit this subroutine if the combo box was cleared.
If NewData = "" Then Exit Sub
If MsgBox("The City/ZIP " & NewData & " is not currently listed." _
& vbCrLf & "Would you like to add it to the list now?", vbQuestion + vbOKCancel, _
"Homeland Real Estate") = vbOK Then
Response = acDataErrAdded
DoCmd.OpenForm "frmCity", , , , acFormAdd, acNormal
Else
'Return User to form
Response = acDataErrContinue
MsgBox "Please try again!", , "Homeland Real Estate"
Me!ctrlg2City.SetFocus
Exit Sub
End If
'Error Handling
ctrlg5ZIP_NotInList_Exit:
Exit Sub
ctrlg5ZIP_NotInList_Err:
MsgBox Err.Description, vbCritical, "Error"
Resume ctrlg5ZIP_NotInList_Exit
End Sub
Проблема заключается в том, что сообщение об ошибке «Текст, который вы ввели, а не элемент в списке» появляется немедленно. Я добавил следующий код в мое событие frmCity AfterUpdate, но ошибка появляется, как только открывается frmCity, а не после ее закрытия.
On Error GoTo Err_Handler
'From http://allenbrowne.com/ser-27.html#NotInList
'Purpose: Requery the combo that may have called this in its DblClick
Dim cbo As ComboBox
Dim iErrCount As Integer
Const strcCallingForm = "frmProperty"
If CurrentProject.AllForms(strcCallingForm).IsLoaded Then
Set cbo = Forms(strcCallingForm)!ctrlg5ZIP
cbo.Requery
End If
Exit_Handler:
Exit Sub
Err_Handler:
'Undo the combo if it has a partially entered value.
If (Err.Number = 2118) And (iErrCount < 3) And Not (cbo Is Nothing) Then
cbo.Undo
Resume
End If
MsgBox "Error " & Err.Number & ": " & Err.Description
Resume Exit_Handler
Мне нужно найти способ предотвратить появление ошибки до тех пор, пока ПОСЛЕ обновления и закрытия frmCity не будет. Любая помощь будет оценена по достоинству.
Как насчет отладки кода или отображения значения NewData? –
Код содержит окно сообщения, которое использует NewData, поэтому я знаю, что он фиксирует эту часть. Код работает по мере необходимости до открытия формы. Проблема в том, что она продолжается после того, как форма открыта и требует контроля, хотя форма City еще не обновлена. – Dragonsen