summe über recordset

  • VB6

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

    summe über recordset

    hallo,

    wie bilde ich über einen recordset am elegantesten die summe??? bisher habe ich eine for...next schleife:

    for i = 1 to rst.recordcount
    summe = summe + rs!umsatz
    rs.movenext
    next i

    rs.movefirst

    gibt es eine bessere methode???

    gruss

    franky

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

    Du könntest eine SQL Abfrage losschicken, die dir die Summe zurückgibt. Ich weiß aber nicht, ob das in MS SQL funktioniert. Aber so würde es gehen:

    select sum(umsatz) as umsatz from deinetabelle
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    hallo,

    ich habe in vb6 den recordset definiert (zugriff auf eine abfrage). die ergebnisse verarbeite ich zu einem bericht. am berichtsfuss steht die summe (umatz; anzahl...). da ich aber auch den prozentualen anteil vom gesamtumsatz brauche, muss ich schon zu anfang den gesamtumsatz ermitteln.

    gruss

    franky
    Hallo Franky,

    ja ..... und
    Mit meinen Fragen wollte ich erreichen, dass ich verstehe, was du vorhast, aber das Gegenteil ist passiert.

    Du schreibst von VB6, du schreibst von einem Bericht (Chrystal Report oder ein Access-Bericht), einer Abfrage (SQL oder Access?).
    Wird der Bericht in Access-VBA erstellt, besteht er schon. Möchtest du wissen, was du in ein zu berechnendes Feld des Berichts eintragen sollst?

    Mache deine Fragestellung ein wenig transparenter und dann kann man dir evtl. helfen.

    Gruß Markus
    Hallo Franky,

    ich habe dir mal was rausgesucht:

    Zahl ist das Feld welches aufsummiert wird
    Tabelle01 der Name der Tabelle
    db7.mdb die Datenbank aud die zugegriffen wird

    Private Sub Command1_Click()
    MsgBox altDSum("Zahl", "Tabelle01", "C:\Eigene Dateien\db7.mdb")
    End Sub

    Public Function altDSum(strFd As String, strTb As String, strFl As String) As Variant
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strSQL As String
    Set cnn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    strSQL = "SELECT Sum ([" & strFd & "]) AS SumCounter " & _
    "FROM [" & strTb & "];"
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strFl
    rs.Open strSQL, cnn, adOpenStatic
    altDSum = rs![SumCounter]
    End Function

    Diese Function greift direkt auf eine Db zu, du kannst ja das Recordset-Objekt entsprechend anpassen. Hier wird mit ADO (bitte einbinden) nicht mit DAO gearbeitet!

    Ich hoffe, das hilft dir. Diese Function ist bestimmt bedeutend schneller als irgendeine Schleife.

    Gruß Markus