Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: mk500 am Juni 22, 2017, 09:27:30

Titel: Berechnetes Feld auf Änderung prüfen
Beitrag von: mk500 am Juni 22, 2017, 09:27:30
Hallo ans Forum  ;)

ich brauche mal wieder eure Hilfe. Ich habe ein Texfeld in dem ein Wert berechnet wird (Beispiel: Textfeld1*Textfeld2).

Nun suche ich eine Möglichkeit eine MessageBox erscheinen zulassen wenn sich der Wert in dem genannten Feld ändert. Simples Beispiel: "Der Wert wurde verändert"

Danke für eure Hilfe im Voraus!  8)

Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: MzKlMu am Juni 22, 2017, 09:42:05
Hallo,
der Wert kann sich ja nur ändern wenn sich einer der anderen Werte ändert. Du kannst also das Ereignis "Nach Aktualisierung" der beiden beteiligten Felder verwenden.
MsgBox "Der berechnete Wert hat sich geändert"

Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: mk500 am Juni 22, 2017, 09:50:16
ok, da hätte ich eigentlich auch selber drauf kommen können :D

Nun habe ich aber auch ein Textfeld, welches eine Summe ausgibt über "DCount". Wie kann ich das bei diesem Feld machen das ich eine Benachrichtigung bzw. MsgBox bekomme, dass sich die Summe geändert hat?
Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: MzKlMu am Juni 22, 2017, 10:19:59
Hallo,
auch der Wert über DCount kann sich nur ändern, wenn sich eines der im Kriterium beteiligten Felder ändert.
Und dort musst Du wie gehabt ansetzen.

Es gibt kein Ereignis das man direkt im berechneten Feld verwenden könnte.
Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: mk500 am Juni 22, 2017, 10:28:17
ok danke dann versuche ich mal da anzusetzen.

Noch eine andere Frage bzgl. einer MsgBox. Kann ich in einer Abfrage überwachen (regelmäßige Aktualisierung vorausgesetzt) ob ein neuer DS hinzugekommen ist um dann eine MsgBox zu erhalten: "Es wurde ein neuer Datensatz angelegt!" ?

Vielen Dank für die Hilfe.
Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: MzKlMu am Juni 22, 2017, 10:44:15
Hallo,
nein, in einer Abfrage geht das nicht.
Access ist Ereignis gesteuert und Ereignisse gibt es nur in Formularen und Berichten. Von Datenmakros in Tabellen bei den neueren Access Versionen abgesehen.

Die Eingabe von Daten in Abfragen/Tabellen direkt sollte in einer Datenbank tabu sein. Datenbearbeitung erfolgt grundsätzlich über Formulare und da ist Dein Anliegen problemlos realisierbar.
Titel: Re: Berechnetes Feld auf Änderung prüfen
Beitrag von: Lachtaube am Juni 22, 2017, 11:27:34
Ein (verstecktes) Formular könnte im Zeitgeberereignis in dezenten Abständen (also nicht im Sekunden- sondern eher im Minutentakt oder größer) prüfen, ob sich die Datenmenge bezogen auf eine Abfrage oder eine Tabelle verändert hat. Ein einfaches Muster könnte dazu so gestaltet werden.' ein Zeitgeberintervall > 0 würde den Timer starten lassen
' 60000 Tausendstel-Sekunden würden jede Minute das Ereignis
' ablaufen lassen.
Private Sub Form_Timer()
   Static OldCount As Long
   Dim NewCount As Long
   
   Const Msg As String = "Die Datenmenge hat um # auf # Datensätze &."
   
   NewCount = DCount("*", "TabellenOderAbfragename", "optionale_Kriterien")
   If NewCount <> OldCount Then
      If NewCount > OldCount Then
         MsgBox Replace(Replace(Replace(Msg, "#", NewCount - OldCount, 1), _
                                        "#", NewCount), _
                                "&", _
                        "zugenommen")
      Else
         MsgBox Replace(Replace(Replace(Msg, "#", OldCount - NewCount, 1), _
                                        "#", NewCount), _
                                "&", _
                        "abgenommen")
      End If
   End If
End Sub


PS: in der Realität wird man vermutlich keine MsgBox verwenden, weil sie immer vom Benutzer bestätigt werden muss, damit der nachfolgende Code fortgesetzt wird.