Domino 9 und frühere Versionen > ND6: Entwicklung

Beim einlesen von CSV-Datei Zeilen addieren

<< < (4/6) > >>

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