Werte aus spalten addiern und in anderer Spalte anzeigen

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

Es gibt 57 Antworten in diesem Thema. Der letzte Beitrag () ist von echnaton.

    Werte aus spalten addiern und in anderer Spalte anzeigen

    Hallo
    Ich als Neuling in VB habe mal eine Grundsatzfrage zum Typ. Dataset
    Ich möchte gerne die Spalte 4+5+6 im Datadidview addieren und in der Spalte 7 angezeigt bekommen.
    Wo wird die Berechnung ausgeführt Bindingsource,Tableadapter oder gar im Dataset selbst?
    Oder sollte man im Detailview gleich die Werte der Textboxen addieren und dann speichern?
    es gäbe da noch eine Möglichkeit "Expression" aber da weiss ich überhaupt nicht wies gehn soll. Wäre aber Interessant....
    Ich möchte gleich von Anfang an alles einigermaßen richtig machen.
    Es ist nicht einfach, einmal etwas falsch gelerntes wieder aus dem Kopf zu bekommen
    Die werte sind alle vom Typ "C2" als Währung (Double)
    gespeichert wird in einer Access DB
    Hab mir die 4 Filmchen vom Raderfinder schon angesehen. Den ersten verstehe ich so halbwegs. die 3 anderen noch nicht
    Gruß Sabine

    Ich glaub ich hab ein déjà-vu. Wie in Deinem ersten Thread schon beantwortet, käme sowas in die DataTable als Extraspalte, versehen mit einer Expression. Ein Beispiel:

    Arikelpreis und Versandkosten sind einzelne Spalten(werte) und die Spalte Gesamtkosten wird mit der Expression "Arikelpreis+Versandkosten" versehen. Dadurch wird die Spalte auch automatisch im tDS als ReadOnly gesetzt (kann man zwar ändern, ergibt aber selten Sinn). Durch die Expression werden die Gesamtkosten automatisch berechnet und ggf. im DGV angezeigt, falls gewünscht. Weitere, manuelle Berechnungen sind nicht notwendig.
    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 für die Antwort. Ist sehr Hilfreich

    PS Wie du dich vielleicht erinnerst, oder schau bitte nach.
    Es ist auf diese Frage keine Antwort gekommen. nur auf den ersten Teil de Frage (Es waren ja 2) da ging es um die Summe einer Spalte

    Solte ich mich da täuschen dann bitte "Sorry"
    Gruß
    Sabine
    So, habs grad probiert. Leider Funktioniert es nicht.
    Fehlermeldung:

    Die Spaltenzuordnung von SourceColumn 'Aus_Kaufpreis_Gesamt' ist fehlgeschlagen, da die DataColumn 'Aus_Kaufpreis_Gesamt' ist berechnete Spalte ist.



    Bei füllung des Tableadapters kommt die Fehlermeldung
    Weiss da jemand eine Lösung ??
    MFG
    Sabine
    Argh, da war irgendein Problem mit ColumnExpressions und TableAdapter (nämlich genau das von Dir benannte). Vielleicht weiß jemand wie @ErfinderDesRades weiter. Ich glaube, dass es sich dann mit den Expressions erledigt hat. Aber vielleicht gibt es ja einen Weg. Für mich ist aber heute erstmal Feierabend. :sleeping:
    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.
    so, hab nun 2 Tage sämtliche Foren durchforstet auch Google weiss nicht weiter...
    Das mit Expression scheint absolut nicht zu klappen
    auch hab ich keine andere Möglichkeit gefunden, nicht mal im "Detailview" lassen sich die Werte der
    Textboxen addieren da ja gebunden.
    wo zum Teufel lassen sich diese Werte addiern ?????????
    MFG
    SA
    Habe leider kein Access und Co (momentan) zur Verfügung. Probier mal folgendes: Nimm mal die Expression aus der berechneten Spalte raus und auch das ReadOnly und probier es im Code Behind: Im tDS-Designer ein Doppelklick auf Deine DataTable und Du kommst in die vb-Datei, und zwar in den DeineDataTableRowChanging-EventHandler. Ok, der kann am Ende gelöscht werden, aber von dort gehst Du in den DeineDataTableRowChanged-EventHandler und trägst ein:

    VB.NET-Quellcode

    1. e.Row.DeineSummenspalte = e.Row.DeineErstsummandspalte + e.Row.DeineZweitsummandspalte

    also z.B.

    VB.NET-Quellcode

    1. e.Row.TotalSumInEuros = e.Row.ItemValueInEuros + e.Row.DeliveryValueInEuros

    So wird bei jeder Änderung der eine Wert immer neu berechnet, aber eben nicht fest im tDS bzw. in der DataTable selber festgelegt. Dann sollte auch Access wieder Ruhe geben. Hoffe ich zumindest :whistling:
    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.
    ohh Danke
    Werde ich gleich testen. Bin schon am Haareausraufen
    Mich ärgert es unheimlich wenn ich vor einem Problem stehe aber nicht mehr weiterkomme
    und nach so viel lesen wiess man hinterher überhaupt nix mehr
    vielen Dank
    Ich werd es mitteilen obs klappt



    Hallo
    Der Button BEANWORTEN ist verschwunden, deshalb auf diesem Weg
    Es hat leider nicht funktioniert

    Hab es zweimal getestet. beim ersten mal wurde ich angemeckert das in spalte "DBNull" steht (war auch tatsächlich der Fall.
    Habs händisch geändert und Zahlen eingetragen.
    Beim 2. mal dann diese Fehlermeldung



    MFG
    SA
    und beim 2 mal

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

    Wenn Dein letzter Beitrag weniger als 30(?) Minuten her ist, kannst Du nur bearbeiten, aber nicht nochmal antworten.

    Kann es sein, dass Du den Code im falschen EventHandler hast? Wie geschrieben, nicht ...RowChanging, sondern es muss in die ...RowChanged-Prozedur
    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.

    VaporiZed schrieb:

    Nimm mal die Expression aus der berechneten Spalte raus und auch das ReadOnly und probier es im Code Behind:
    => ReadOnly-Eigenschaft auf False setzen
    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.

    echnaton schrieb:

    Die Spaltenzuordnung von SourceColumn 'Aus_Kaufpreis_Gesamt' ist fehlgeschlagen, da die DataColumn 'Aus_Kaufpreis_Gesamt' ist berechnete Spalte ist.
    hmm - Die Lösung liegt doch auf der Hand (oder übersehe ich was?):
    Der TableAdapter darf keinesfalls versuchen, Werte in die berechnete Spalte zu laden.
    Wie konnte das überhaupt passieren, dass er das versucht?
    Was ist das für eine misteriöse Spalte In der Db, die er auf die berechnete des Datasets zu mappen versucht? Berechnete Werte haben inne Db nix verloren!

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

    naja es ist ja noch keine berechnete Spalte. aber es sollte eine werden.
    Ich wollte lediglich das der User 3 textboxen ausfüllt mit zahlen (Währung) und die addierte Summe in der 4 Textbox angezeigt wird.
    Das Problem dabei ist, diese Boxen sind bestandteil des Detailview und dort lässt sich auch nix berechnen
    also hab ich Im DGV versucht--Fehlanzeige
    Auch in der Bindungssource war es mir nicht möglich
    wo kann man denn so etwas berechnen??
    Ja, Expression wär eine schicke Lösung aber auch das hat nicht funktioniert
    siehe post weiter oben
    man kann dort sehr viel anstellen aber bei mir ging das nur innerhalb einer Spalte.
    Ich konnte nicht die Summe aus 3 spalten addieren un in der 4 Spalte anzeigen lassen

    Aber da haste Recht, Ich mach da bestimmt was falsch. Was, da grübel ich schon ein paar Tage drüber
    MFG
    SA

    echnaton schrieb:

    das gibt "StackOverflowException" leider
    Da ruft sich eine Prozedur rekursiv selbst auf.
    Das solltrest Du mit nem Haltepunkt drinne ganz fix aufklären können: Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!