Hallo,
habe Probleme bei der Summierung von Datensätzen.
Habe in einer Datenbank folgende Tabellen: "Modelle", "ArtikelVerbrauch", "Zeahlerstand"
Die Tabellen "ArtikelVerbrauch" und "Zeahlerstand" sind der Tabelle "Modelle" untergeordnet.
Die Tabelle "Modelle" bestimmt lediglich das Feld "ID" den Index über dem Summiert werden soll.
In der Tabelle "ArtikelVerbrauch" werden verbaut Teile eingetragen. Neben der Bezeichnung und der Art.-Nr. gibt es die Felder "VerbautAm", "VBM" und "Preis".
Das Feld "VerbautAm" zeigt das Datum an dem der Artikel verbaut wurde
Das Feld "VBM" besteht aus einem string das entweder mit "J", "N", "F" oder "A" belegt ist. (Gruppierung der Artikel z.B Verbrauchsmaterial = "J" , Ersatzteile = "N")
Das Feld "Preis" zeigt den Preis vom Artikel
In der Tabelle "Zaehlerstand" werden in unregelmäsigen Abständen Zählerstände der Modelle eingetragen, dabei wird ein Zeitraum in den Datumsfeldern "Von" und "Bis" festgelegt .
Ich möchte erreichen, dass beim Eintragen der Zählerstände die Kosten der jeweiligen Gruppen ( "J" , "N" usw.) für den Zeitraum zwischen "Von" und "Bis" summiert werden, und in die jeweiligen Felder (z.B.: "KostenVBM" , "KostenErsatz" ), die sich in der Tabelle "Zaehlerstand" befinden, eingetragen werden.
Die Summierung der einzelnen Gruppen funktioniert, dies nutze ich bereits als gesamtübersicht der Kosten, ich weiss nur nicht wie ich sage, dass die Gruppe nur summiert wird wenn das Feld "VerbautAm" >= "Von" aber <= "Bis" ist.
Was muss ich tun damit dies auch berücksichtigt wird. Ich hoffe jemand kann mir helfen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | Private Sub mtbl5_Changed( ByVal ChangedAspect As OrgDbServer31.OrgDbTableChangedEnum)
Dim objSumResult() As OrgDbServer31.SumResult
Dim sMasterId As String
Dim sCondition As String
Dim i As Long
Dim sDatumVerbautAm As Date
Dim sDatumVon As Date
Dim sDatumBis As Date
If Tools.TableChangedFlagIsSet(ChangedAspect, ORGDB_TC_CONTENT) Then
With Database.Tables( "CNKD_Zaehlerstand" )
sMasterId = .Fields( "IDmodelle" ).value
sCondition = "CNKD_ArtikelVerbrauch->IDmodelle = " "" & sMasterId & "" ""
sDatumVerbautAm = Database.Tables( "CNKD_ArtikelVerbrauch" ).Fields( "BestelltAm" ).value
sDatumVon = .Fields( "Von" ).value
sDatumBis = .Fields( "Bis" ).value
objSumResult = Database.Tables( "CNKD_ArtikelVerbrauch" ).Sum( "CNKD_ArtikelVerbrauch->Preis" , "CNKD_ArtikelVerbrauch->VBM" , sCondition)
For i = 1 To UBound(objSumResult)
If sDatumVerbautAm >= sDatumVon And sDatumVerbautAm <= sDatumBis And objSumResult(i).Group = "J" Then
.Fields( "KostenVBM" ).value = objSumResult(i)
ElseIf sDatumVerbautAm >= sDatumVon And sDatumVerbautAm <= sDatumBis And objSumResult(i).Group = "J" Then
.Fields( "KostenErsatz" ).value = objSumResult(i).Sum
End If
Next i
.Write ORGDB_NAV_NOEVENTS
End With
End If
End Sub
|
|