Dank Wayne für Ihre Antwort, machte ich den Compound-Schlüssel, aber bemerkte, dass der Benutzer viele Informationen in das Formular hinzufügen und drücken Sie die Eingabetaste nur um zu sehen, dass kein Patient der Liste hinzugefügt. Das hat mich nicht richtig verstanden, aber ich habe in die richtige Richtung geschaut ...
Ich kam schließlich mit einem Code, um die Zimmernummern zu finden, die in das Formular eingegeben wurden, indem ich Dcount für das Abfrageergebnis verwendete und habe diesen Code in das onExit-Ereignis der Raumnummer platziert, sodass ich den Fokus zurück an das Feld senden konnte, bis die richtige Antwort vom Benutzer gesendet wurde.
Ich hatte bereits die Feldvalidierung eingestellt, um sicherzustellen, dass der korrekte Bereich der Raumnummern eingegeben wurde. Dies hat nun das Potenzial, den Benutzer in einer Endlosschleife stecken zu lassen. Also, ich muss eine weitere if-Anweisung zu der Fehlermeldung hinzufügen, um den Benutzer aus der Schleife zu senden, wenn sie einfach nicht an eine leere Raumnummer denken kann, die in das Feld eingefügt werden soll.
Wie auch immer, hier ist die Lösung, die ich mir ausgedacht habe. Als erstes habe ich ein weiteres Textfeld "Me.txtResult" zu meinem Formular hinzugefügt, um die Ergebnisse von Dcount zu sehen, die jetzt nicht wirklich notwendig sind. Allerdings ist es in dem Code, also dachte ich, ich sollte diesen Teil erklären.
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
Ich schlage ein Ereignis 'Before_Update' für das Feld Zimmer auf Ihrem Formular vor. Dort könntest du nachsehen, ob noch jemand in diesem Raum ist. Natürlich könnten Sie einen Compound-Schlüssel zu Ihrer Tabelle von Room und Active (oder was auch immer) hinzufügen und Access spucken es mit einem Fehler aus ... aber das ist nicht sehr benutzerfreundlich. –