Neuigkeiten:

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

Mobiles Hauptmenü

Summenfeld im Endlosformular wird nicht korrekt aktualisiert und ausgelesen

Begonnen von tragger, Juli 30, 2014, 19:56:49

⏪ vorheriges - nächstes ⏩

tragger

Liebe Experten,

ich habe mal wieder ein kleines Problem, bei dem ich hier die geschätzte Hilfe benötige.

Ich habe ein Endlosformular erstellt, dass gefiltert geöffnet wird. Hier soll im Formularfuß die Summe des Formularfeldes "GezahlteBewertungsreserve" gebildet werden. Dieses passiert auch im Feld "SummeBewertung" durch "=Summe([GezahlteBewertungsreserve])".

Nun gebe ich in der gefilterten Ansicht im Feld "GezahlteBewertungsreserve" für alle angezeigten Datensätze einen Wert ein.

Nun soll mittels Button cmdStart der jeweilige Wert übernommen werden und die Summe mit einer Zahl in "vardoublemarker1" verglichen werden. Der dort enthaltene Betrag stimmt auch.

Nun ergibt sich mit der Ausführung folgender Prozedur ein Problem:

Private Sub cmdStart_Click()
    Me.Requery
    MsgBox "1" & Me.SummeBewertung & "2" & vardoublemarker1
    If Me.SummeBewertung <> vardoublemarker1 Then
        MsgBox "Es wurde eine Gesamtbewertungsreserve " _
        & "von " & vardoublemarker1 & " € angegeben. Diese " _
        & "weicht von den einzelnen Anteilen um " & Me.SummeBewertung - vardoublemarker1 & " € ab.", 64
    Else
        DoCmd.Close acForm, Me.Name
    End If
End Sub


1. Habe ich alles ohne das Me.Requery ausgeführt. Dann fehlt mir aber jedes Mal in der Summe der Wert des letzten Datensatzes.
2. In der angegebenen Form ist das Summenfeld immer leer...
3. Wenn ich im VB-Editor das Schritt für Schritt so ausführen lasse, funktioniert es, da er dann komischerweise dass Summenfeld füllt...

Wie kann ich hier eine Lösung herbeiführen?

Me.SummeBewertung.Requery funktioniert leider auch nicht.....

Ich danke bereits vorab für die Mühe...

Tragger

MaggieMay

Hi.Dann fehlt mir aber jedes Mal in der Summe der Wert des letzten Datensatzes.Dann speichere den Datensatz vor der Prüfung mitMe.Dirty = Falseund verzichte auf das Requery.
Freundliche Grüße
MaggieMay

tragger

Hey MaggieMay,

vielen Dank für deine schnelle Antwort. Das bringt mich folgendermaßen weiter, ist aber leider noch nicht die Lösung.

1. Habe ich das Me.Requery durch Me.Dirty=false ersetzt. Nun ist es so, dass beim Anklicken des Button der Fehler angezeigt wird und er das nicht zusammengerechnet hat. Es fehlt weiter der letzte Datensatz in der Summe. Wenn ich den Button danach erneut drücke, funktioniert es.

2. Habe ich nun die Eigenschaft noch an der Stelle
Private Sub GezahlteBewertungsreserve_LostFocus()
    Me.Dirty = False
End Sub

angebracht. Das bedeutet nun, dass ich aus der letzten Zeile mit Tab herausgehen muss und nicht über "Enter" den Button direkt auslösen kann. Nach dem heraustabben ist die Summe korrekt, bei Enter leider nicht...

Also brauche ich noch mehr Hilfe... ;)

tragger

Okay, total bescheuert...

Ich habe es nun hinbekommen, indem ich eine Zeitverzögerung einbaue...

Hier der Code für Interessierte:

Public Function Wait(MilliSekunden As Double)
    Dim I As Double, Ende As Double
    Ende = Timer + (MilliSekunden / 1000)
    Do While I < Ende
      DoEvents
      I = Timer
    Loop
End Function


Private Sub cmdStart_Click()
    Me.Dirty = False
    Wait (1000)
    If Me.SummeBewertung <> vardoublemarker1 Then
        MsgBox "Es wurde eine Gesamtbewertungsreserve " _
        & "von " & vardoublemarker1 & " € angegeben. Diese " _
        & "weicht von den einzelnen Anteilen um " & Me.SummeBewertung - vardoublemarker1 & " € ab.", 64
    Else
        DoCmd.Close acForm, Me.Name
    End If
End Sub


Vielen Dank trotzdem für die Hilfe...

MaggieMay

Hi,

anstelle von einer Zeitverzögerung via Timer etc. könnte auch der Befehl DoEvents helfen.
Freundliche Grüße
MaggieMay

tragger

Hey MaggieMay,

habe es gerade noch mal getestet. Das funktioniert leider nicht... :( Also werde ich beim Timer eben bleiben