none
Laufende Summe im DataRepeater II RRS feed

  • Frage


  • Hallo,

    bezogen auf meine letzte Anfrage mit selben Titel, wüßte ich gerne, ob mir jemand
    die nachfolgenden Zeilen (So hatte ich sie mal in Access geschrieben) für den
    Visual Basic Abfrage-Generator umschreiben kann, bzw. mir sagen kann, ob dieses
    überhaupt möglich ist?


    SELECT Gesamtumsatz.ID AS ID1, DSum("Betrag","Gesamtumsatz","[ID]<=" & [ID1]) AS Saldo
    FROM Gesamtumsatz
    WHERE (((Gesamtumsatz.Auftragskonto)=4711))
    GROUP BY Gesamtumsatz.ID;




    Für Eure Hilfe wäre ich dankbar!

    Steffen
    Montag, 20. Juli 2009 21:13

Antworten

  • Hallo Steffen,

    in "richtigem" SQL - DSUM sollte man auch in Access dafür eher meiden, wäre das eine Unterabfrage:
    SELECT
        g.ID AS ID1,
        (SELECT Sum(Betrag) FROM Gesamtumsatz AS gs WHERE gs.ID <= g.ID) AS Saldo
    FROM Gesamtumsatz AS g
    WHERE g.Auftragskonto = 4711
    GROUP BY g.ID;
    
    Was die Frage I + II zum DataRepeater angeht:
    Verwendest Du für die Daten Linq To SQL wie ich anhand einer anderen Frage von Dir vermute?
    Denn für die Beantwortung der Kernfrage:
    • Wie implementiere ich eine laufende Summe?
    ist die Datenquelle schon von größerer Bedeutung.

    Skizziere wie Deine Tabelle Gesamtumsatz aussieht bzw.
    welche Art von Daten Du dort anzeigen möchtest.

    Gruß Elmar

    • Als Antwort markiert Steffen01 Dienstag, 21. Juli 2009 07:35
    Montag, 20. Juli 2009 21:40

Alle Antworten

  • Hallo Steffen,

    in "richtigem" SQL - DSUM sollte man auch in Access dafür eher meiden, wäre das eine Unterabfrage:
    SELECT
        g.ID AS ID1,
        (SELECT Sum(Betrag) FROM Gesamtumsatz AS gs WHERE gs.ID <= g.ID) AS Saldo
    FROM Gesamtumsatz AS g
    WHERE g.Auftragskonto = 4711
    GROUP BY g.ID;
    
    Was die Frage I + II zum DataRepeater angeht:
    Verwendest Du für die Daten Linq To SQL wie ich anhand einer anderen Frage von Dir vermute?
    Denn für die Beantwortung der Kernfrage:
    • Wie implementiere ich eine laufende Summe?
    ist die Datenquelle schon von größerer Bedeutung.

    Skizziere wie Deine Tabelle Gesamtumsatz aussieht bzw.
    welche Art von Daten Du dort anzeigen möchtest.

    Gruß Elmar

    • Als Antwort markiert Steffen01 Dienstag, 21. Juli 2009 07:35
    Montag, 20. Juli 2009 21:40
  • Hallo Elmar,


    kurz zu meinem eigentlichem Anliegen.

    Als zertifizierter Anwendungsentwickler für SAP Software (ABAP, MySQL) und zertifizierter Programmierer der Software Sage KHK (Access), beides Anwendungen im kaufmännischen Bereich, habe ich es eher mit der Programmierung "alter Schule" zu tun.
    Nun wird es an der Zeit, dass ich mit der Zeit gehe und beschäftige mich privat mit Visual Studio  um die verschiedenen Tools, Datentypen, Datenzugriffsmöglichenkeiten usw. kennenzulernen.

    Dazu verwende ich eine einfache Tabelle: ID,   Auftragskonto , Valutadatum, Buchungsdatum, Begünstigter, Verwendungszweck, Betrag, Saldo, Gebucht(bit), Erledigt(bit), also Informationen wie ich sie auf jedem Kontoauszug vorfinde. Mein kleines "Projekt" erfasst die Posten verschiedener
    Konten per Textfile (.csv, online abgerufen) und gibt sie verschiedentlich, experimentellerweise im DataRepeater,DataGridView uvm. wieder.
    Dabei möchte ich die verschiedenen Möglichkeiten der Datenanbindungen und Verwaltung kennen lernen.

    Vielen Dank für Deine Lösung!


    Gruß Steffen


    P.S Es ist LINQ to SQL
    Dienstag, 21. Juli 2009 08:31

  • Hallo Elmar,

    Dein Lösungsvorschlag ist nun den Erfordernissen entsprechend erweitert und angepasst.

    Die Gruppierung der Haupt-Abfrage musste verworfen werden, da sie weitere Angaben zu Aggregat- bzw.  Gruppenzugehörigkeit
    von hinzugefügten Bedingungen erforderlich machte und ausserdem zu Dublikaten in der Ausgabeliste führte.
    Hier nun die Abfrage die meinen Erfordernissen entspricht.



    SELECT        Auftragskonto, Valutadatum, Betrag,
                                 (SELECT        SUM(Betrag) AS Summe
                                   FROM            Gesamtumsatz AS Gesamtumsatz1
                                   WHERE        (Valutadatum <= Gesamtumsatz.Valutadatum) AND (ID <= Gesamtumsatz.ID)
                                   AND (Auftragskonto = @Auftragskonto) AND (Bank = 1) AND (Gebucht = 1) 
                                   AND (Erledigt = 0)) AS Saldo
    FROM            Gesamtumsatz
    WHERE        (Valutadatum >= @DatumVon AND Valutadatum < @DatumBis)
    ORDER BY Bank DESC, Valutadatum, ID


    Gruß

    Steffen
    Donnerstag, 23. Juli 2009 11:21