Berechnetes Feld in Dataset wird nicht in Echtzeit aktualisiert

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Panter.

    Berechnetes Feld in Dataset wird nicht in Echtzeit aktualisiert

    Hallo zusammen

    Ich programmiere immer noch an einem Zeiterfassungsprogramm. Der Umfang ist nun wirklich viel höher als anfangs gedacht.

    Ich habe in meinen Datasetdesinger unter anderem die Tabelle Mitarbeiter und diese hat die Felder AZeit_Mo, AZeit_Di, AZeit_Do, AZeit_Fr., da wir Teilzeitmitarbeiter haben, welche halt an den verschiedenen Tagen unterschiedlich arbeiten. Nun habe ich zusätzlich im Datasetdesinger ein berechnendes Feld eingefügt, also unter Expression die Formel AZeit_Mo + AZeit_Di.... eingegeben, damit ich die Wochenarbeitszeit sofort ermitteln kann.

    In der Form wird aber das Feld nur berechnet, nachdem die Daten gespeichert sind. Gibt es irgendeine Einstellung, dass wenn ich im Feld A_Zeit_Mo den Wert ändere, sofort auch das berechnete Feld neu berechnet wird?

    Nachtrag: Ich habe auch in Datagridview ein Feld, dass ich auch noch zusätzlich in einer Comobox ist. Diese 2 Felder sind manchmal auch nicht synchron.

    Besten Dank
    Hallo ErfinderDesRades

    Besten Dank für deine Antwort. Da werde ich wohl testen müssen, bei welchem Ereignis ich genau diesen Befehl verwende. Spontan denke ich an TextChanged(sender As Object, e As EventArgs). Bin ich da richtig? oder gibt es ein besseres Ereignis. Ich dachte auch, ob es nicht irgend eine Einstellung gibt, die das erzwingt. Irgendwie finde ich es sehr aufwendig.

    Kann ich eigentlich über das Sender herausfinden, ob ein Benutzer die Daten ändert oder ob z.B. durch Datensatzwechsel die Daten geändert wurden?

    lg Panter

    Panter schrieb:

    bei welchem Ereignis ich genau diesen Befehl verwende.
    Jo - probiers aus. Mit Texten oder Zahlen könnte es gehen.
    Aber zB bei Datumsen wirds schwierig, weil während des Tippens ist das "Datum" ja noch unvollständig, und kann nicht comitted werden.
    Musst du wirklich bei jedem Tastendruck die Expression neu ausgewertet haben?

    Panter schrieb:

    Kann ich eigentlich über das Sender herausfinden, ob ein Benutzer die Daten ändert oder ob z.B. durch Datensatzwechsel die Daten geändert wurden?
    Ein Datensatz-Wechsel ändert keine Daten.
    Hallo

    Hat gut funktioniert, sieht jetzt so aus...

    Besten Dank

    VB.NET-Quellcode

    1. Sub TotaleRechnen(sender As Object, e As EventArgs) Handles AZeit_MoTextBox.Validated, AZeit_MiTextBox.Validated, AZeit_DiTextBox.Validated, VZeit_MoTextBox.Validated, VZeit_MiTextBox.Validated, VZeit_FrTextBox.Validated, VZeit_DoTextBox.Validated, VZeit_DiTextBox.Validated, AZeit_FrTextBox.Validated, AZeit_DoTextBox.Validated
    2. Me.Mitarbeiter_ZeitachseBindingSource.EndEdit()
    3. End Sub