August 11, 2022, 04:45:02

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Variablen verlieren wert

Begonnen von elvodia, Dezember 27, 2011, 11:07:38

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

If Me!textfeld <> Me!textfeld.OldValue  Then
  '  sql ausführung
end if



wobei ich nochmal (vermutlich vergeblich) darauf hinweisen möchte, dass die ganze Vorgehensweise auf einem falschem Konzept basiert ..

elvodia

Warum bist du dieser Meinung? Ich  habe doch versucht zu erklären das ich herausfinden muss ob sich der inhalt geändert hat.

Bezieht sich OldValue auf den Wert den das Textfeld beim laden des Forms erhält? Ich frage deshalb weil man so ein Textfeld mehrmals ändern kann. Ich würdeden Vergleich nicht bei änderung sonder bei Save_click einbauen wollen damit alles erst gespeichert gelöscht wird wenn man save drückt.

Beaker s.a.

Hallo elvodia,

ZitatBezieht sich OldValue auf den Wert den das Textfeld beim laden des Forms erhält?


.OldValue ist der Wert, den das Control VOR einer Änderung und VOR dem Speichern hatte.
Auf den kannst Du NACH einem Form_AfterUpdate NICHT mehr zugreifen.

ZitatIch würdeden Vergleich nicht bei änderung sonder bei Save_click einbauen wollen damit alles erst gespeichert gelöscht wird wenn man save drückt.


Kannst Du ja auch so machen, musst es aber über den Umweg des Form_BeforeUpdate machen.

Etwa so (Luftcode)


Private Sub button_behandlung_bearbeiten_save_Click()
    DoCmd.RunCommand acCmdSaveRecord
End Sub


Dadurch wird Form_BeforeUpdate ausgelöst.


Private Sub Form_BeforeUpdate(Cancel as Integer)
    If IsNull(Me!tf_patient.Value) = True Then
        MsgBox ("Patient auswählen.")
    Else
        If IsNull(Me!tf_behandlungsart.Value) = True Then
            MsgBox ("Behandlung auswählen.")
        Else
            If IsNull(Me!tf_RZ_ID.Value) = True Then
                MsgBox ("Rezept auswählen.")
            Else
                If Me!tf_patient.Value <> Me!tf_patient.OldValue Then
                    If Me!tf_behandlungsart.Value <> Me!tf_behandlungsart.OldValue Then
                        If Me!tf_RZ_ID.Value <> Me!tf_RZ_ID.OldValue Then
                            MsgBox "Rezept ist anders ," & Me!tf_RZ_ID.Value & ",  " & Me!tf_RZ_ID.OldValue
                            Cancel=True
                            Me!tf_RZ_ID.SetFocus
                        Else
                            MsgBox "Behandlung ist anders"
                            Cancel=True
                            Me!tf_behandlungsart.SetFocus
                        End If
                    Else
                        MsgBox "Patient ist anderrs"
                            Cancel=True
                            Me!tf_patient.SetFocus
                    End If
                End If
            End If
        End If
    End If

End Sub


Ich habe jetzt beim Vergleich explizit die Standardeigenschaft .Value angegeben damit es für Dich vielleicht einfacher zu verstehen ist. Wobei ich anmerken möchte, dass man das immer machen sollte (also die Standardeigenschaft angeben), auch wenn's nicht nötig ist. Finde aber, dass es leichter zu verstehen ist; - ist ja auch nicht immer die Eigenschaft .Value.

Was da sonst noch so passieren soll, musst Du selber wissen.
hth
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

DF6GL

Hallo elvodia,

ich meinte nicht die Oldvalue-Geschichte, sondern das gesamte Konzept, wie Du die Rezepte, Behandlungen etc. versuchst zu behandeln.

Zitat
und es ist ein Hausbesuchsrezept trägt er automatisch 2 Datensätze ein. Wenn man nun den Patienten bzw. die Behandlung ändert auf ein nicht Hausbesuchsrezept muss ich diesen eintrag ja wieder löschen damit die Bilanz nachher stimmt.


ist aus konzeptioneller Sicht halt sehr fragwürdig, wenn die ernsthaft und stabil betrieben werden soll.


Aber ich will Dir hier nichts vorschreiben oder aufschwätzen.    ;)

elvodia

Dezember 28, 2011, 17:57:05 #34 Letzte Bearbeitung: Dezember 29, 2011, 09:54:09 von elvodia
Zitatist aus konzeptioneller Sicht halt sehr fragwürdig, wenn die ernsthaft und stabil betrieben werden soll.


Wie würdest du es den anders machen? Ich könnte wahrscheinlich auch eine Zusatz Berechnung machen in etwa so:

Var 1: Wenn tbl_rezepte.RZ_HB (boolwert Hausbesuch ja/nein) Ja rechne den wert X dazu.

Oder

Var 2 : Ich baue die Behandlungs Tabelle um und in Rezepten wo kein HB stattfindet bleiben halt die 2 Felder leer. (1 Feld HB ja nein, 2 Feld Leistung in €) <-- Würde ich am ehesten alleine hinbekommen und stelle ich mir unkomplizierter vor.

Edit: Habe Var 2 nun angewendet und es gefällt mir so besser und macht auch was es soll.