Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: elvodia am Dezember 27, 2011, 11:07:38

Titel: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 11:07:38
ich möchte über If abfragen erkenen ob werte geändert wurden. Dazu gibt es ein Form was wenn es geöffnet wird einen bestimmten Datensatz auswählt.

Private Sub Form_Load()
   Dim VAR_patient_alt As String
   Dim VAR_behandlungsart_alt As String
   Dim VAR_RZ_ID_alt As String
   VAR_patient_alt = Me.tf_patient
   VAR_behandlungsart_alt = Me.tf_behandlungsart
   VAR_RZ_ID_alt = Me.tf_RZ_ID
   MsgBox VAR_patient_alt & ", " & VAR_behandlungsart_alt & ", " & VAR_RZ_ID_alt
End Sub


Die MsgBox zeigt mir sauber die werte an.



Wenn ich nun auf speichern Drücke möchte ich wissen ob die werte der Felder sich geändert haben dies versuche ich folgender Maßen:
Private Sub button_behandlung_bearbeiten_save_Click()
   Dim VAR_patient_neu As String
   Dim VAR_behandlungsart_neu As String
   Dim VAR_RZ_ID_neu As String
   
   VAR_patient_neu = Me.tf_patient
   VAR_behandlungsart_neu = Me.tf_behandlungsart
   VAR_RZ_ID_neu = Me.tf_RZ_ID
   MsgBox VAR_patient_neu & "=" & VAR_patient_alt
   If IsNull(VAR_patient_neu) = True Then
       MsgBox ("Patient auswählen.")
   Else
       If IsNull(VAR_behandlungsart_neu) = True Then
           MsgBox ("Behandlung auswählen.")
       Else
           If IsNull(VAR_RZ_ID_neu) = True Then
               MsgBox ("Rezept auswählen.")
           Else
               If VAR_patient_neu <> VAR_patient_alt Then
                   
                   If VAR_behandlungsart_neu <> VAR_behandlungsart_alt Then
                       
                       If VAR_RZ_ID_neu <> VAR_RZ_ID_alt Then
                           
                           MsgBox "Rezept ist anders ," & VAR_RZ_ID_neu & ",  " & VAR_RZ_ID_alt
                       Else
                       
                       MsgBox "Behandlung ist anders"
                       End If
                   Else
                   MsgBox "Patient ist anderrs"
                   End If
               Else
                       
               End If
                       
           'CurrentDb.Execute "AKT_ABF_behandlung_plus_1"
           DoCmd.RunCommand acCmdSaveRecord
           DoCmd.Close acDefault
           DoCmd.Requery FM_behandlungen
           MsgBox ("Änderung gespeichert.")
               
           End If
       End If
   End If

End Sub



In der msgbox nachd er zuordnung der neuen daten hat er aber den Wert der _alt Variable vergessen und meine Abfragen können nciht funktionieren.

Gibt es da einen anderen  weg?
Titel: Re: Variablen verlieren wert
Beitrag von: Stapi am Dezember 27, 2011, 11:20:50
Guten Morgen elvodia

Du must die Variabel auch in der Funktion : "Private Sub button_behandlung_bearbeiten_save_Click() " deklarieren, du hast sie lediglich beim Laden des Formular zu gewiesen.

Gruß Stefan
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 11:25:02
Aber wenn ich sie dort Deklariere haben sich ja die werte bereits geändert wenn man auf den save button klickz dann ahben ja neu und alt immer den selben wert. Daher dachte ich mir die Alten deklariere ich bein laden des forms.

Habe

Dim VAR_patient_alt As String
    Dim VAR_behandlungsart_alt As String
    Dim VAR_RZ_ID_alt As String


nun im save mit drin hat sich nix verändert.
Titel: Re: Variablen verlieren wert
Beitrag von: Stapi am Dezember 27, 2011, 11:41:54
Hallo elvodia

Wenn du prüfen möchtest ob eine Änderung in deinem Datensatz statt gefunden hat, dann ist es über den "Button Speichern" nicht der richtige Weg. Jede Änderung eines Datensatz wird in den Tabellen automatisch gespeichert, dafür im Grundsatz ist ein "Speicher Button" nicht nötig. Ein Prüfung könnte stattfinden z.b "nach Focus verlust" oder "nach Aktualiesierung" eines im Formular befindlichen Feld.

Gruß stefan
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 11:51:56
Variablen welche du in einer Sub oder Funktion deklariest sind auch nur innerhalb diese gültig. Du must bei funktionsübergreifende Variablen diese ausserhalb dieser deklarieren. einfach unter z.b. Obtion explicit diese durch
Private VAR_patient_alt As String
Private VAR_behandlungsart_alt As Strind
Private VAR_RZ_ID_alt As String
deklarieren
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 11:57:41
Wo genau Deklairei ich den Funktionsübergreifend? Arbeite wenig mit Funktionen udn befinde mich meist Im Klassenobjekt des Formulares. Kann ich die dort im Kopf deklarieren?
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 12:05:34
ja, am einfachsten unter
Option Compare Database
Option Explicit
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 12:27:27
"Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck beim klicken eingegeben. Dieser Ausdruck hat einen Fehler Verusacht: Benutzerdefinierter Typ nicht definiert."

Dieser Fehler kommt nun egal welchen button ich drücke.

Folgendes steht imKopf:


Option Compare Database
Option Explicit

Private VAR_patient_alt As String
Private VAR_behandlungsart_alt As Strind
Private VAR_RZ_ID_alt As String
Titel: Re: Variablen verlieren wert
Beitrag von: Stapi am Dezember 27, 2011, 12:33:52
Hallo elvodia

Du hast die Variabel nun Funktionsübergreifend gemacht, damit darf sie in keiner anderen Funktion "klick Befehl" mit dem gleichen Namen vorkommen.

Es sei an dieser Stelle nochmals der Hinweiß gestattet, die Prüfung nicht durch einen "Save Button " zu machen sondern gleich nach verlassen des Feld oder deren Änderung.

Gruß Stefan
Titel: Re: Variablen verlieren wert
Beitrag von: DF6GL am Dezember 27, 2011, 12:36:48
Hallo,


korrigier mal den Tippfehler:


Private VAR_behandlungsart_alt As Strind
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 12:38:18
Wenn du jetzt meinen Text kopiert hast, dann ist da jetzt ein schreibfehler drinne. Den Datentyp Strind kennt er ja nicht, das muß String lauten.    ;D
Titel: Re: Variablen verlieren wert
Beitrag von: Stapi am Dezember 27, 2011, 12:42:28
Hallo

Franz ist mal wieder unglaublich  ;D ;D

Mal sollte auch seine Brile aufsetzen  :D

Gruß Stefan
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 12:44:23
Auf was man nciht alles achten muß. Das war ein fehler nun habe ich einen Neuen. Er meckern bei sämmtlichen variablen rum. Nachdem ich alle Variablen Deklariert habe was ich wie ich gerade festgestellt habe wegen "Option Explicit" machen muss sagt er

DoCmd.Requery FM_behandlungen

Variable nicht definiert.

Die Werte hat er jedoch noch immer verloren.
Titel: Re: Variablen verlieren wert
Beitrag von: DF6GL am Dezember 27, 2011, 12:48:25
Hallo,


DoCmd.Requery "FM_behandlungen"


wenn dieser Code in diesem Formular abläuft, wäre besser:
Me.Requery


wobei, wenn ich den Anfangs-Thread lese, nicht ganz von der Methodik der "Datenverarbeitung" überzeugt bin.. soll heißen, ich versteh den dahinter liegenden Sinn/Problematik  nicht.
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 13:34:55
ich habe Option Explicit aus Kopf geschmissen. nun kann ich docmd.requery wieder benutzen wie ich mag und er meckert nicht mehr wegen Variablen wenn ich da ein Form name eintrage.
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 13:35:49
Wenn du nicht alle Variable deklarieren willst dann lösche die Zeile Option Explicit. Ist aber nicht zu empfehlen.

und ohne das ich wirklich verstehe was du vorhast mußt du deine Sub Form_Load ändern:


Private Sub Form_Load()
   VAR_patient_alt = Me.tf_patient
   VAR_behandlungsart_alt = Me.tf_behandlungsart
   VAR_RZ_ID_alt = Me.tf_RZ_ID
   MsgBox VAR_patient_alt & ", " & VAR_behandlungsart_alt & ", " & VAR_RZ_ID_alt
End Sub


damit die FormularFunktions(sub)-übergreifende Variablen benutzt werden.

Titel: Re: Variablen verlieren wert
Beitrag von: DF6GL am Dezember 27, 2011, 13:43:25
Hallo,


ich habe Option Explicit aus Kopf geschmissen. nun kann ich docmd.requery wieder benutzen wie ich mag und er meckert nicht mehr wegen Variablen wenn ich da ein Form name eintrage.


da kann ich auch nur sagen:  das ist nicht nur KEINE Lösung, das ist überhaupt keine Lösung    :'( :o

Durch das Abwürgen der Hilfestellung des VBA-Editors wird der Code ja nicht besser und wird trotzdem NICHT funktionieren.





Titel: Re: Variablen verlieren wert
Beitrag von: Stapi am Dezember 27, 2011, 19:14:32
Hallo Franz, hallo daolix

@elvodia versucht über ein "klick Ereignis" zu prüfen, ob an ihren Datensatz in Bezug auf die drei Felder ein Wert oder Inhalt geändert worden ist, um ihn dann im Abschluß nochmals zu speichern.
Ich kann aus ihren Code nicht erkennen was geschieht wenn dieser besagte "Save Button " nicht betätigt worden ist, kann der Anwender dann zum nächsten Datensatz springen ohne Prüfung? Somit wäre die Änderung auch ohne Prüfung übernommen.

Hier ist aus meiner Sicht der Ansatz Fragwürdig, wenn eine Prüfung stattfinden soll dann in den Formular Feldern mit einer [Ereignisprozedur] z.b  "nach Änderung" ober "bei Änderung"

Eine Grundregel die du @Df6GL ( Franz ) angesprochen hast, immer im Klassenmodul "Option Explicit" zu verwenden, sollte mann schon beachten, alleine schon im an betracht der selbst Kontrolle eine Variabel nicht deklariert zu haben, von den Problemen die im Nachgang kommen könnten bei nicht beachtung gar nicht zu reden.

Gruß Stefan
Titel: Re: Variablen verlieren wert
Beitrag von: database am Dezember 27, 2011, 20:10:31
Hallo,

Zitatich habe Option Explicit aus Kopf geschmissen. nun kann ich docmd.requery wieder benutzen wie ich mag ....
Bitte nicht böse sein aber - hast du schon mal nach dem Begriff 'Humbug' gegoogelt?

DoCmd.Requery (NamedesSteuerelments)

DoCmd.Requery "NameDesFormulars"

Du mußt halt das Requery-Kommando richtig einsetzen dann klappts auch mit 'Option Explicit'

Hat aber Franz bereits in #13 GENAU SO dargestellt!

Bei deiner Syntax passiert nämlich gar nix - ausser dass DEIN Fehler - weil keine Variablendeklaration mehr verlangt wird - nicht mehr gemeldet wird!

@daolix
ZitatWenn du nicht alle Variable deklarieren willst dann lösche die Zeile Option Explicit. Ist aber nicht zu empfehlen
...ist nicht nur nicht zu empfehlen sondern m.E. grob fahrlässig!
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 21:30:18
Mein Problem ist einfach das wenn ich "Option Explicit" im Head habe, er Meldungen Bringt die ich nicht verstehe.

Kein Option Explicit im Head

DoCmd.Requery FM_behandlungen

Aktualisiert mir das Form Welches sich in FM_INDEX(Hauptform).UF1(Unterform) befindet

Option Explicit im Head

DoCmd.Requery FM_behandlungen ---> Variable nicht definiert

DoCmd.Requery "FM_behandlungen" ---> Laufzeitfehler '2109' Der aktuelle Datensatz enthält kein feld mit dem Namen 'FM_behandlung'

DoCmd.Requery 'FM_behandlungen' --> Aktualisierung Funktioniert jedoch wird mir 'FM_Behandlungen' in grün angezeigt was für mich auf ein Kommentar deutet.

Wie ist es denn nun richtig?


Titel: Re: Variablen verlieren wert
Beitrag von: database am Dezember 27, 2011, 22:18:39
Hallo,

die erste Variante ist schlicht und ergreifend falsch, ebenso die Zweite und bei der Vierten ist - wie du richtig bemerkt hast - der Objektname auskommentiert.

Variante 3 ist Syntaktisch richtig.

Befindest du dich beim Ausführen des Requery-Befehls im Formular FM_behandlungen ?
Wenn ja dann lies doch noch einmal Antwort #13 von DF6GL ...

Zitatwenn dieser Code in diesem Formular abläuft, wäre besser:
Me.Requery

Befindest du dich im FM_behandlungen dann lautet der Befehl   Me.Requery  
Befindest du dich in einem Hauptformular und möchtst ein Unterformular aktualisieren:
Me!Unterformularname.Requery
Unterformularname ist der Name des Unterformularobjekts im Hauptformular und nicht der tatsächliche Name des Unterformulars selbst!

Befindest du dich in einem fremden Formular und möchtest das Unterformular eines anderen geöffneten Hauptformulars aktualisieren

Forms!Hauptformularname!Unterformularname.Form.Requery
bzw.
Forms!Hauptformularname!Unterformularname.Requery

Zum RICHTIGEN Einsetzen der Formularbezüge siehe folgenden Link aus der http://www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2)

http://access.mvps.org/access/forms/frm0031.htm  (http://access.mvps.org/access/forms/frm0031.htm)

Und BITTE lass das 'Option Explicit' im Modulkopf stehen - egal welche dubiosen Ratschläge du dem entgegen erhältst!
Gehe noch weiter und stelle im VBA-Editor unter 'Extras' ... 'Optionen' ein, dass die Variablendeklaration ERFORDERLICH ist.
Das Verwenden von Variablen OHNE DIESE VORHER ZU DEKLARIEREN ist und bleibt grober Unfug - du handelst dir dadurch in weiterer Folge nur Probleme ein!
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 22:36:34

Zitat von: database@daolix
ZitatWenn du nicht alle Variable deklarieren willst dann lösche die Zeile Option Explicit. Ist aber nicht zu empfehlen
...ist nicht nur nicht zu empfehlen sondern m.E. grob fahrlässig!
Na na na, jetzt wollen wir aber nicht übertreiben nichwa. Das Problem ist doch das MS diese halt per Default nicht einstellt, und elvodia schon Code geschrieben hatte der ohne diese Option lief und erst im Rahmen dieses Threads in dem Code wohl mit aufgenommen wurde.

Zitat von: databaseUnd BITTE lass das 'Option Explicit' im Modulkopf stehen - egal welche dubiosen Ratschläge du dem entgegen erhältst!
Ehlich lies dir den Thread noch mal durch und denke nach bevor du hier etwas als dubios bezeichnest.
Titel: Re: Variablen verlieren wert
Beitrag von: database am Dezember 27, 2011, 22:43:35

Zitatund denke nach bevor du hier etwas als dubios bezeichnest
besten Dank für den hervorragenden Ratschlag - worüber ich nachdenke brauchst du nicht in dein Sorgenregister aufnehmen  ;)

...dann hast du ja verstanden was ich mit dubios meine!



Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 27, 2011, 22:45:03
Keine Streitereien pls.


Ich befinde mich in Folgendem Pfad.

FM_start

Dort gibt es ein Navigationselement UF1

Dort wird das Formular "FM_verwaltung_behandlungen" hineingeladen über

Me!UF1.SourceObject = "FM_verwaltung_behandlungen"

Und dien Inhalt dieses FM_verwaltung_behandlungen möchte ich aktualisieren. Solange es über

DoCmd.Requery geht bin ich zu frieden.

Es sei den mit erklärt jemand wie man das schreibt. Ich bin gerne für richtige Programmierung jedoch das einen langen Pfad zu schreiben nur wegen der Genauigkeit Wenns der kleine befehl auch macht.
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 22:50:01
besten Dank für den hervorragenden Ratschlag - worüber ich nachdenke brauchst du nicht in dein Sorgenregister aufnehmen  Zwinkernd

...dann hast du ja verstanden was ich mit dubios meine!


Nein. erklärs mal.
Titel: Re: Variablen verlieren wert
Beitrag von: Beaker s.a. am Dezember 27, 2011, 22:50:20
Hallo,

@elvodia
ZitatDazu gibt es ein Form was wenn es geöffnet wird einen bestimmten Datensatz auswählt.

Davon ist in dem Code aber nichts zu sehen.

Deine Prüfroutine verlagere mal nach Form_BeforeUpdate. Da brauchst Du auch Deine ganzen Variablen nicht, da Du da mit .OldValue vergleichen kannst. Der Button löst dann nur noch das Speichern den DS aus, wodurch das o.a. Ereignis gefeuert wird.

@daolix
OHNE Option Explicit geht GAR NICHT !!

@database
ZitatGehe noch weiter und stelle im VBA-Editor unter 'Extras' ... 'Optionen' ein, dass die Variablendeklaration ERFORDERLICH ist.

Hierzu vielleicht noch die Ergänzung, dass, wenn das eingestellt ist, die Zeile automatisch in jedes neue Modul (auch Forms/Reports) eingetragen wird.

gruss ekkehard
Titel: Re: Variablen verlieren wert
Beitrag von: Beaker s.a. am Dezember 27, 2011, 22:55:27
Hallo daolix,

Zitat
Nein. erklärs mal.

Mit nicht deklarierten Variablen kann Dir alles passieren, schlimmstenfalls speicherst Du falsche Daten.
Ein kleiner Tippfehler reicht da schon, um Deine Programmlogik völlig durcheinander zu bringen, weil Du EBEN KEINE Fehlermeldung erhältst.

gruss ekkehard
Titel: Re: Variablen verlieren wert
Beitrag von: daolix am Dezember 27, 2011, 23:30:11
Hallo ekkehard

der Vorschlag meinerseits ( den ich aber nicht empfahl ) fußte auf einen anderen kontext
elvodia hat ein Form in diesen hat er Code und mit diesem hatte er probleme, aber es gab keine FM's bezüglich nicht deklarierte Variablen.
darauf hin schrieb ich hier hier (http://www.access-o-mania.de/forum/index.php?topic=15201.msg87364#msg87364) und hier
(http://www.access-o-mania.de/forum/index.php?topic=15201.msg87368#msg87368) Nun tauchten aber das Problem mit besagter Option auf, die elvodia jetzt wohl mit in den Code einbaute, welche ich aber nur mit angab damit elvodia einen Position hat wo er die Variablen deklarieren soll, weil ich davon ausging das diese option soundso bei ihm aktiviert ist. Und da sein vorhergehender Code aber ohne diese Option erstellt wurde sollte er diese Zeile halt wieder rausnehmen.

Mein "Nein. erklärs mal." war schon explizit an database gerichtet, denn deine Erklärung ist schon richtig, aber glaube mir der meint was anderes.




Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 28, 2011, 06:47:07
Me!xAnzahl = Nz(list_patienten_alle.ListCount, 0)

Er sagt list_patienten_alle was ein listenfeld ist sei nicht als Variable definiert. Habs mit hochkomma und  Gänse versucht immr fehler.

Das schöne ist das ich den Selben Code in einem Anderen Form stehen habe und er da nicht meckert. Habe nun in jedem Form

Option Compare Database
Option Explicit


drin

EDIT: Problem gefunden das listenfeld hatte einen anderen namen.
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 28, 2011, 12:40:07
Zitat von: Beaker s.a. am Dezember 27, 2011, 22:50:20

Deine Prüfroutine verlagere mal nach Form_BeforeUpdate. Da brauchst Du auch Deine ganzen Variablen nicht, da Du da mit .OldValue vergleichen kannst. Der Button löst dann nur noch das Speichern den DS aus, wodurch das o.a. Ereignis gefeuert wird.


Wie mache ich denn so ein Vergleich mit OldValue. Habe in der Access Hilfe nix gefunden und Goole half mir auch nicht weiter.

Ich habe ein Form wo ich Behandlungen eingeben kann. Dort muss ich die Patienten ID und die Behandlungs ID eingeben. Die Rezept ID wird automatisch eingetragen durch Auswahl der Behandlung, was ich so verknüpft habe(Bzw. dahinten ist eine SQL Insert Anweisung). Wenn dieses Rezept nun ein Hausbesuchs Rezept ist wird zusätzlich eine Hausbesuchsbehandlung mit eingetragen als extra Datensatz. Das heist wenn ich eine Beahndlung eintrage 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. Die Sql bekomme ich bestimmt irgendwie hin. Für mich ist wichtig wie man das schreibt:


If (NewValue von textfeld) = (OldValue von Textfeld) Then
    tue nix
else
    sql ausführung
end if

Titel: Re: Variablen verlieren wert
Beitrag von: DF6GL am Dezember 28, 2011, 13:19:37
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 ..
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 28, 2011, 14:02:00
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.
Titel: Re: Variablen verlieren wert
Beitrag von: Beaker s.a. am Dezember 28, 2011, 16:27:53
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
Titel: Re: Variablen verlieren wert
Beitrag von: DF6GL am Dezember 28, 2011, 16:39:25
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.    ;)
Titel: Re: Variablen verlieren wert
Beitrag von: elvodia am Dezember 28, 2011, 17:57:05
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.