Hallo Zusammen,
ich muss den Thread leider wiederbeleben. Folgender Sachverhalt.
Infos zur CSV-Datei:
- kommt jeden Monat neu und kann im Aufbau und Formatierung nicht geändert werden
- enthält mehrere Kartennr, zu jeder gibt es ca. 25 Zeilen
- jede dieser Zeile enthält die Kartennr, einen Eurobetrag und einige das Wort "Rechnungsbetrag"
Infos zur DB:
- enthält Kartenr, die nur einmal vorkommen
Aufgabe des Agenten:
- gucken, ob die Kartennr in der CSV, auch in der DB auftaucht
- wenn ja, sollen die jeweiligen Eurobeträge (die nicht an der gleichen stelle Stehen) der Zeilen mit "Rechnungsbetrag" addiert und der entsprechenden Kartennr zugeordnet werden
Das ist der Agent:
Sub Initialize
Dim uiws As New NotesUIWorkspace
Dim session As New notessession
Dim db As notesdatabase
Dim doc As notesdocument
Dim view As NotesView
Dim filenr As Integer
Dim filename As Variant
Dim inputstr As String
Dim delimiter As String
Dim array As Variant
Dim euroarray As Variant
Dim eurobtr As Double
Set db = session.currentdatabase
Set view = db.GetView ("abgleich")
filenr% = Freefile()
filename = uiws.OpenFileDialog(True, "CSV-Datei auswählen", "CSV Files|*.CSV", "C:\!zeug!")
delimiter = ";"
Open filename(0) For Input As filenr%
Line Input #1, inputstr$
Do While Not Eof(filenr%)
Line Input #1, inputstr$
array = Split(Replace(inputstr$ ,Chr(34),""),delimiter)
euroarray = Replace(Right(inputstr$,10) ,";","")
If Not Isempty(array) Then
If Instr(inputstr$,"Rechnungsbetrag") Then
Set doc = view.GetDocumentByKey(array(2))
If Not doc Is Nothing Then
eurobtr = eurobtr + Cdbl(euroarray)
Call doc.ReplaceItemValue("euros", eurobtr)
Call doc.Save(True,True)
End If
End If
End If
Loop
Close filenr%
End Sub
Die Ansicht nach dem Ausführen des Agenten:
03747706 11,17
16049486 24,14
24910325 74,17
43409699 154,36
55423754 203,82
So sollte sie aber aussehen:
03747706 11,17
16049486 12,97
24910325 50,03
43409699 80,19
55423754 49,46
Zu der Kartennr 43409699 gibt es zwei Zeilen mit "Rechnugsbetrag". Die erste enthält den Eurobetrag 79,45, die zweite 0,74, macht zusammen 80,19.
Wie muss der Code aussehen, um das gewünschte Ergebnis zu erhalten?
Matthias