Zwischensummen: Geht das auch einfacher?

15/05/2009 - 19:48 von Winfrid Pankoke | Report spam
In einem MSHFlexgrid soll zu jeder Charge die Summe der
Bewegungsmengen angezeigt werden.
Nun habe ich mir folgendermaßen 'geholfen', indem ich das Feld
'Neuer_IST_Bestand zwar mit
einlese, aber da das den gesamten IST-Bstand über alle Chargen
ausweist,
wird das in einer weitere Abfrage (RStmp) überschrieben und eben diese
Abfrage
aus RStmp ins MSHFlexgrid geschrieben (ohne den Wert zu speichern)



strSQL = "SELECT Beweg_Menge, Charge, Pruefnummer, Neuer_IST_Bestand
AS GesMenge " & _
"FROM Warenbewegung " & _
"WHERE RohstoffNr= " & FeldInhalt(Rs.Fields(0)) & " "
& _
"ORDER BY Charge;"

With RsW
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open strSQL, cn
End With


If Not RsW.EOF Then
RsW.MoveFirst

Do While Not RsW.EOF

' in feld1 steht die Charge aus RsW
strSQL = "SELECT SUM(Beweg_Menge) AS GesMenge " & _
"FROM Warenbewegung " & _
"WHERE Charge= '" & FeldInhalt(RsW.Fields(1))
& "' "

With RStmp
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open strSQL, cn
End With

' hier wird der Wert von Neuer_IST_Bestand
überschrieben, damit
' damit im Flexgrid eben die Summe der jeweiligen
Charge angezeigt wird.
If Not RStmp.EOF Then
RsW.Fields(3).Value = FeldInhalt(RStmp.Fields(0))
End If

RsW.MoveNext

Loop

End If

Set Flexgrid.DataSource=RsW

Naja, recht abenteuerlich, das ganze, aber 'es làuft', bin mir aber
sicher, màchtig
auf dem Schlauch zu stehen, nichts einfacheres gefunden zu haben.
Vielleicht hat ja jemand 'was auf der Pfanne', was die Sache
vereinfachen könnte,
jedenfalls schon mal besten Dank im voraus, ... und ... ein schönes
Wochenende !!!

Ach, übrigens:
VB6prof, Datenbank Jet4.0 mit ADO
 

Lesen sie die antworten

#1 Matthias Hübner
19/05/2009 - 09:00 | Warnen spam
Schon mal über "Group By" nachgedacht?

z.B.

"Select Charge, Sum(Menge) as S1 From Tabelle Group by Charge"

HTH

Winfrid Pankoke wrote:

In einem MSHFlexgrid soll zu jeder Charge die Summe der
Bewegungsmengen angezeigt werden.
Nun habe ich mir folgendermaßen 'geholfen', indem ich das Feld
'Neuer_IST_Bestand zwar mit
einlese, aber da das den gesamten IST-Bstand über alle Chargen
ausweist,
wird das in einer weitere Abfrage (RStmp) überschrieben und eben diese
Abfrage
aus RStmp ins MSHFlexgrid geschrieben (ohne den Wert zu speichern)



strSQL = "SELECT Beweg_Menge, Charge, Pruefnummer, Neuer_IST_Bestand
AS GesMenge " & _
"FROM Warenbewegung " & _
"WHERE RohstoffNr= " & FeldInhalt(Rs.Fields(0)) & " "
& _
"ORDER BY Charge;"

With RsW
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open strSQL, cn
End With


If Not RsW.EOF Then
RsW.MoveFirst

Do While Not RsW.EOF

' in feld1 steht die Charge aus RsW
strSQL = "SELECT SUM(Beweg_Menge) AS GesMenge " & _
"FROM Warenbewegung " & _
"WHERE Charge= '" & FeldInhalt(RsW.Fields(1))
& "' "

With RStmp
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open strSQL, cn
End With

' hier wird der Wert von Neuer_IST_Bestand
überschrieben, damit
' damit im Flexgrid eben die Summe der jeweiligen
Charge angezeigt wird.
If Not RStmp.EOF Then
RsW.Fields(3).Value = FeldInhalt(RStmp.Fields(0))
End If

RsW.MoveNext

Loop

End If

Set Flexgrid.DataSource=RsW

Naja, recht abenteuerlich, das ganze, aber 'es làuft', bin mir aber
sicher, màchtig
auf dem Schlauch zu stehen, nichts einfacheres gefunden zu haben.
Vielleicht hat ja jemand 'was auf der Pfanne', was die Sache
vereinfachen könnte,
jedenfalls schon mal besten Dank im voraus, ... und ... ein schönes
Wochenende !!!

Ach, übrigens:
VB6prof, Datenbank Jet4.0 mit ADO



Grüße

Ähnliche fragen