Domino 9 und frühere Versionen > ND6: Entwicklung
Beim einlesen von CSV-Datei Zeilen addieren
john doh:
@Driri
@Bernhard
Klappt wunderbar! Besten Dank!
john doh:
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
Thomas Schulte:
Es tut mir leid wenn ich jetzt gar garstig klinge.
Kauf dir jemanden ein der dir die Lösung schreibt.
Und dann noch jemand der dich ausbildet.
Oder am besten beides.
Driri:
Full ACK. Zumal Du meinen Hinweis, wie Du den Betrag am sinnvollsten ermittelst, nicht gelesen oder nicht verstanden hast. In euroarray kann u.U. so alles mögliche drinstehen.
john doh:
@ Driri
Tschuldigung, hatte vergessen zu erwähnen, dass die Eurobeträge nicht an der gleichen Stelle stehen. Und ich habe Deinen Hinweis gelesen, Die Beträge, die er mir ermittelt sind alle richtig. Nur er bildet mir die Summe mit allen Kartennr und nicht für jede einzeln.
@Thomas Schulte
Tut mir leid, wenn ich mich blöd anstelle, aber das sind meine ersten Gehversuche in Lotus Script. Ich hab es mir nicht ausgesucht. Ich tue das alles auf Bitten meines Chefs. Da ich auch noch was anderes zutun habe,als mich den ganzen Tag mit Script zubeschäftigen und mir keine wirklich gute deutschsprachige Dokumentation zum Thema Script bekannt ist, dachte ich mir "Wende ich mich mal ans Furom, vielleicht können die mir helfen.".
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln