Frohe Weihnachten erstmal.
Ich versuche mittels einer IF THEN ELSE herauszufinden ob man einen anderen Patienten gewählt hat als vorher.
Private Sub list_rezepte_DblClick(Cancel As Integer)
VAR_alter_patient = Forms!FM_rezepte_eingabeform.tf_patient
Var_neuer_patient = Me.list_rezepte.Column(0)
MsgBox VAR_alter_patient & " " & Var_neuer_patient
If VAR_alter_patient = Var_neuer_patient Then
DoCmd.Close acForm, "FM_rezepte_patient_suchen"
Else
MsgBox "Sind sie sicher das sie den Patienten dieses Rezeptes ändern möchten?", vbYesNo + vbCritical
If Response = vbYes Then ' Auswahl Ja
Forms![FM_rezepte_eingabeform]![tf_patient] = Me.list_rezepte.Column(0)
Forms![FM_rezepte_eingabeform].tf_patient.SetFocus
DoCmd.Close acForm, "FM_rezepte_patient_suchen"
MsgBox "Änderung vorgenommen"
Else
DoCmd.Close acForm, "FM_rezepte_patient_suchen"
End If
End If
End Sub
Die Oberste Msgbox ist nur zur Kontrolle und egal ob die 2 Werte Gleich sind oder Nicht springt er immer zum ELSE der ersten IF. Beide Werte VAR_alter_patient und Var_neuer_patient enthalten jeweils eine ID als Zahl.
Die Variablen Var_neuer_patient und VAR_alter_patient beinhalten eventuell unterschiedliche Datentypen. zur Kontrolle ändere mal die erste MSGbox in
MsgBox VAR_alter_patient & " " & Var_neuer_patient & vbcrlf & _
Vartype(VAR_alter_patient) & " " & Vartype(Var_neuer_patient)
Wenn unterschiedlich dann probier folgendes
VAR_alter_patient = clng(Forms!FM_rezepte_eingabeform.tf_patient)
Var_neuer_patient = clng(Me.list_rezepte.Column(0))
Hallo,
du solltest in JEDEM Fall JEDE verwendete Variable VOR ihrer Verwendung deklarieren!
Dim VAR_alter_patient As Long
Dim VAR_neuer_patient As Long
und dann erst die Wertzuweisung vornehmen
VAR_alter_patient = Forms!FM_rezepte_eingabeform.tf_patient
Var_neuer_patient = Me.list_rezepte.Column(0)
Stelle zudem in die 2. Zeile JEDES Moduls 'Option Explicit' das zwingt dich zur Deklaration und verhindert VIELE Probleme.
Und stelle unter 'Extras' ... 'Optionen' ein, daß die Variablendeklaration erforderlich ist - Haken setzen - damit wird bei jedem neuen Modul 'Option Explicit' automatisch eingetragen.
Ohne Deklarieren der Variablen erhalten sie den Datentyp 'Variant' und somit ist ein Vergleich der Inhalte mehr als unsicher.
Dukannst das leicht mit untenstehender Routine nachvollziehen, indem du sie in ein Standardmodul kopierst und dann mal ausführst:
Public Sub vergl()
Dim x As Variant
Dim y As Variant
x = 3
y = "3"
If x = y Then
MsgBox "gleich"
Else
MsgBox "nicht gleich"
End If
End Sub
Das mit der Definition hat wunderbar geklappt.