Спасибо, Уэйн за ваш ответ, я сделал составной ключ, но заметил, что пользователю придется добавить много информации в форму и нажать Enter только для того, чтобы увидеть, что в список не добавлен ни один пациент. Это на самом деле не дало мне того, что я искал, но заставило меня смотреть в правильном направлении...
Наконец, я придумал код для поиска номеров комнат, введенных в форму, используя Dcount в результате запроса, и поместил этот код в событие onExit номера комнаты, чтобы я мог вернуть фокус в поле до тех пор, пока правильный ответ представлен пользователем.
У меня уже была настроена проверка поля, чтобы убедиться, что будет введен правильный диапазон номеров комнат. Теперь это может привести к тому, что пользователь застрянет в бесконечном цикле. Итак, мне придется добавить еще один оператор if в сообщение об ошибке, чтобы вывести пользователя из цикла, если он просто не может придумать пустой номер комнаты для размещения в поле.
Во всяком случае, вот решение, которое я придумал. Во-первых, я добавил еще одно текстовое поле «Me.txtResult» в свою форму, чтобы посмотреть результаты Dcount, которые сейчас на самом деле не нужны. Тем не менее, это в коде, поэтому я подумал, что должен объяснить эту часть.
Private Sub txtRoomNo_Exit(Cancel As Integer)
On Error GoTo Err_txtRoomNo_Exit
Dim strRmX As Integer
Dim strRmNo As Integer
strRmNo = Me.txtRoomNo
strRmX = DCount("[2017].[ID]", "2017 Query", "[2017].[Room#]=" & strRmNo)
Me.txtResult = strRmX
If strRmX > 0 Then
MsgBox "Sorry, it appears the room number you entered" & vbCrLf & _
" is already occupied by another patient" & vbCrLf & vbCrLf & _
" Click OK to try another room number.", vbCritical,
"Surgical Weaning Tool User Data Entry Error!"
Me.txtRoomNo.SetFocus
End If
Exit_txtRoomNo_Exit:
Exit Sub
Err_txtRoomNo_Exit:
MsgBox " Error: For Room# Entry Duplicate Check" & vbCrLf & _
" for New Patient Form" & vbCrLf & vbCrLf & _
" " & Error$ & " " & vbCrLf & vbCrLf & _
" Please write down ALL the above message and" & vbCrLf & _
" Inform Jim about this error" & vbCrLf & _
" As Soon As Possible. Thank You!" & vbCrLf & vbCrLf & _
" Please double check the room number you" & vbCrLf & _
" just entered is not alread in use!", vbCritical,
"Surgical Weaning Tool - - ERROR!"
Resume Exit_txtRoomNo_Exit
End Sub
person
Jim Bray
schedule
09.06.2017