Hallo,
wir haben eine Einkauf-Datenbank mit den
- Kostenstelle-Budget-Dokumenten (ein paar Hundert)
- Ticket-Bestell-Dokumenten (ein paar Tausend).
In jedem Ticket wird die zugehörige Kostenstelle-Nummer manuell eingetragen.
Sowie auch die Beträge für Angebote, Rechnungen u.ä.
In jedem Budget-Dokument werden die summierten Beträge für Angebote, Rechnungen u.ä. täglich per Agenten aktualisiert.
Dieser Agent läuft alle Budget-Dokumente in der Ansicht "view" sowie alle Tickets in der Ansicht "view1" durch, was auch prima funktioniert nur etwas zu lange dauert, so dass DDM meckert...
Könnte man das Verfahren erheblich verbessern bzw. wie ?
Gruß
Leo
' Anfang der großen Schleife über alle Budget-Dokumente in view
Set doc = view.GetFirstDocument ' das erste aller Budget-Dokumente
While Not doc Is Nothing ' Schleife bis alle Budget-Dokumente abgearbeitet sind
MyKey = doc.GetItemValue("JbNummer")(0) ' die JAHR-Budget-Nummer im Budget-Dokument ermitteln
Set doc2 = view1.GetFirstDocument ' das erste aller Ticket-Dokumente in view1
While Not doc2 Is Nothing ' Schleife bis alle Tickets abgearbeitet sind
' Überpüfung ob die gleiche JAHR und KOSTENSTELLE-Budget-Nummer wie im Budget-Dokument.
If MyKey = Cstr (doc2.GetItemValue("JnumK")(0) ) Then
tmp1 = tmp1 + doc2.GetItemValue("wBer_2")(0) ' Werte im Feld wBer_2 aller Tickets werden summiert
tmp2 = tmp2 + doc2.GetItemValue("wBer_3")(0) ' Werte im Feld wBer_3 aller Tickets werden summiert
tmp3 = tmp3 + doc2.GetItemValue("wBer_5")(0) ' Werte im Feld wBer_5 aller Tickets werden summiert
tmp4 = tmp4 + doc2.GetItemValue("wBer_6")(0) ' Werte im Feld wBer_6 aller Tickets werden summiert
'30.07.2012 wenn alle Tickets zu diesem K.Budget abgearbeitet sind,
'dann keine weiteren Tickets in View1 überprüfen
If Not view1.GetNextDocument(doc2) Is Nothing Then
If MyKey <> CStr (view1.GetNextDocument(doc2).GetItemValue("JnumK")(0)) Then
GoTo SpeichernK
End If
End If
End If
Set doc2 = view1.GetNextDocument(doc2) ' das nächste Ticket in der Ansicht view1 wird angesprochen
Wend
SpeichernK:
' (Falls was geändert) Eintragen der ermitelten Summen ins Budget-Dokument und Speichern
If CStr(tmp1) <> CStr(doc.GetItemValue("Ber_2")(0)) Or CStr(tmp2) <> CStr(doc.GetItemValue("Ber_3")(0)) Or _
CStr(tmp3) <> CStr(doc.GetItemValue("Ber_5")(0)) Or CStr(tmp4) <> CStr(doc.GetItemValue("Ber_6")(0)) Then
If CStr(tmp1) <> CStr(doc.GetItemValue("Ber_2")(0)) Then '30.07.2012
Set item = doc.ReplaceItemValue ( "Ber_2", tmp1 )
End If
If CStr(tmp2) <> CStr(doc.GetItemValue("Ber_3")(0)) Then '30.07.2012
Set item = doc.ReplaceItemValue ( "Ber_3", tmp2 )
End If
If CStr(tmp3) <> CStr(doc.GetItemValue("Ber_5")(0)) Then '30.07.2012
Set item = doc.ReplaceItemValue ( "Ber_5", tmp3 )
End If
If CStr(tmp4) <> CStr(doc.GetItemValue("Ber_6")(0)) Then '30.07.2012
Set item = doc.ReplaceItemValue ( "Ber_6", tmp4 )
End If
Set item = doc.ReplaceItemValue ( "WannBer", Now ) ' Eintragen der Zeit der Aktualisierung ins Budget-Dokument
Call doc.Save( False, True )
End If '30.07.2012
' Setzen Variablen auf 0
tmp1 = 0
tmp2 = 0
tmp3 = 0
tmp4 = 0
' Ende der großen Schleife über alle Budget-Dokumente in view
Set doc = view.GetNextDocument(doc) ' das nächste Budget-Dokument in der Ansicht wird angesprochen
Wend