in Textboxen errechnete Werte werden nicht ins DataSet übernommen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von DerSmurf.

    in Textboxen errechnete Werte werden nicht ins DataSet übernommen

    Guten Abend

    Ich komme mit meinem Projekt sehr gut voran :)
    Nun habe ich aber wieder eine Sache, bei der ich nicht weiterkomme...

    Ich habe eine Artikelverwaltung gemacht, indem ich mittels Helpers von @ErfinderDesRades Einträge hinzufüge und bearbeite (EditNew - und EditCurrent).
    Nun habe ich aber das Problem, dass die Werte aus Textboxen, die ich nicht reinschreibe, sondern errechnen lasse, beim Klick auf speichern nicht ins DataSet übernommen werde. Die entsprechende Spalte im DataSet bleibt einfach leer.
    Weil ich mich schwer tue, das zu beschreiben, habe ich gleich ein Beispielprojekt angehängt.

    In der dortigen "Form2" wird der Wert der Textbox "SP2Textbox" durch das TextChange Event der SP1Textbox errechnet.
    Nach einem Klick auf speichern wird aber der Wert von SP2Textbox nicht ins DataSet übernommen.
    Der Wert wird nur übernommen, wenn ich manuell da einen Wert reinschreibe.

    Warum ist das so?
    Und müsste ich dann diesen Wert "manuel" in meine DataSet schreiben?
    Also doppeldirect cast und aktuelleAuswahl.SP2 = SP2Textbox.text.
    Oder komme ich da irgendwie drumherum?
    Dateien
    • WindowsApp1.zip

      (38,25 kB, 74 mal heruntergeladen, zuletzt: )
    • HelpersSmallEd.zip

      (219,83 kB, 65 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()

    Das liegt daran, dass die Einstellung für die 2. TextBox falsch ist. Da steht der Aktualisierungsmodus bei dem einfachen DataBinding auf OnValidation. Es gibt 2 Möglichkeiten:
    • Du änderst das auf OnPropertyChanged, dann werden die Daten bei jeder Änderung ins tDS geschrieben
    • Du schreibst in den Speicherbuttoncode noch vor dem Festlegen des DialogResults rein: Me.ValidateChildren. Dann greift die Einstellung OnValidation
    • 3. von 2 Varianten: Die 2. TextBox betreten und wieder verlassen. Löst auch das Validationereignis aus. Ist aber codetechnisch unschön und auch nicht vom User abverlangbar.
    btw: Du hast schon wieder vergessen, die Helpers in Dein Testprojekt einzuarbeiten :( . Na wurscht. Das Problem sollte erstmal gelöst sein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke.
    Ich habs jetzt mit Me.ValidateChildren() gelöst und als Edit das Helpersprojekt in meinem Eröffnugnspost angehängt (wegen Vollständigkeit und so).
    Vielleicht meldet sich ja der Ersteller dieser Helpers zu Wort, weil er eine andere Lösung hat.
    Dann braucher das Projekt nicht auf seiner Platte suchen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()

    Nein, ich glaube mit einer berechneten Spalte im DataSet komme ich nicht weiter / bzw. wäre dies in meinem Fall schlechter.
    Es geht mir um die Werte:
    ListenEK / Rabatt / Einkaufspreis/ Marge / Mwst. / Verkaufspreis

    Gebe ich z.B. ListenEK und Rabatt ein, errechnet sich der Einkaufspreis.
    Bei Einkaufspreis, Verkaufspreis und Marge und Mwst. ist es genauso.
    Ändere ich den VK, ändert sich die Marge.
    Ändere ich die Marke, ändert sich der VK.
    Ändere ich die Steuer, ändert sich die Marge.

    Dies klappt natürlich nur mit entsprechenden Bedingungen, damit sich nicht der Wert ändert, den ich gerade manuell ändere.