Domino 9 und frühere Versionen > ND6: Entwicklung
2 Probleme beim einlesen von CSV-Datei
john doh:
Hallo,
ich mach es kurz. Ich habe eine Datenbank "test.nsf". Enthalten ist eine Maske "testmaske", mit den Textfeldern "kartennr", "betr", "status", "puffer". Der Agent heißt "okay", er wird über einen Button aufgerufen und das ist sein Code:
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 fileNum As Integer
Dim fileName As Variant
Dim InputStr As String
Dim delimiter As String
Dim FieldArray As Variant
Dim knrar As String
Dim pufferar As String
Dim statusrar As String
Set db = session.currentdatabase
Set view = db.GetView ("testview")
fileNum% = Freefile()
fileName = uiws.OpenFileDialog(True, "CSV-Datei auswählen", "CSV Files|*.CSV", "C:\")
delimiter = ";"
Open fileName(0) For Input As fileNum%
Line Input #1, InputStr$
Do While Not Eof(fileNum%)
Line Input #1, InputStr$
FieldArray = Split(InputStr$,delimiter)
knrar = Replace(FieldArray(0) ,Chr(34),"")
statusar = Replace(FieldArray(1) ,Chr(34),"")
pufferar = Replace(FieldArray(2) ,Chr(34),"")
If Not Isempty(FieldArray) Then
Set doc = view.GetDocumentByKey(knrar)
If Not doc Is Nothing Then
Call doc.ReplaceItemValue("status", statusar)
Call doc.ReplaceItemValue("puffer", pufferar)
Call doc.Save(True,True)
End If
End If
Loop
Close fileNum%
End Sub
Das ist der Inhalt der CSV-Datei:
"15";"Rechnungsbetrag";15,99
"15";"";
"15";"";5,99
"12";"";2,99
"12";"";
"12";"Rechnungsbetrag";12,99
"10";"";10,99
"10";"Rechnungsbetrag";20,99
"10";"";
Und so sieht die Ansicht "testview" nach Aufrufen des Agenten aus:
kartennr betr status puffer
10 11,99
11 12,99
12 13,99 Rechnungsbetrag 12,99
13 14,99
14 15,99
15 16,99 5,99
16 17,99
17 18,99
18 19,99
19 20,99
19 20,99
Soweit klappt alles, ich hab da "nur" noch zwei Probleme.
1. Momentan liest mir der Agent alle Zeilen der CSV ein. Ich möchte aber, dass er mir nur die Zeilen einliest, mit dem Wert "Rechnungsbetrag".
2. Momentan bin ich in der Ansicht "testview" darauf angewiesen, dass die Kartennr sortiert in der 1. Spalte stehen. Ich möchte aber, dass sie z.B. in der 4. Spalte unsortiert sind.
Hab gerade erst mit Lotus Script angefangen und brauche jetzt HILFE.
Danke!
m3:
Wunderschöne Erklärung.
1) Und Du scheiterst jetzt woran? Wie lautet Deine konkrete Frage?
2) Was hat eine View mit dem Import der Daten zu tun? Das mit dem View geht nicht anders, wie Du der Designer-Hilfe zum Thema "GetDocumentByKey" entnehmen kannst.
Driri:
Zu 1)
Du müßtest vor dieser Zeile hier
--- Zitat --- Set doc = view.GetDocumentByKey(knrar)
--- Ende Zitat ---
noch eine Prüfung einbauen, ob der statusar = "Rechnungsbetrag" ist. Also einfach noch eine If-Bedinung vorher einfügen.
Zu 2)
Die Frage habe ich nicht verstanden. Was meinst Du genau ?
koehlerbv:
Zu 1) Du möchtest Dir die LS-Function "Instr" anschauen.
Zu 2) Hier hat Martin nicht Recht - Du verwendest ja GetDocumentByKey (Achtung - hier fehlt der Parameter 'exactmatch'!!). Nur - wenn Du das verwendest, muss auch die View entsprechend sortiert sein.
Dein Problem 2) verstehe ich allerdings überhaupt nicht - mach' Dir eben eine zweite View nach Deinem Gusto.
Bernhard
PS: Ein ansprechbarer Name ist hier eigentlich Usus und bestimmt durchaus das Antwortverhalten der Hilfswilligen.
m3:
--- Zitat von: koehlerbv am 02.07.08 - 15:26:50 ---Zu 2) Hier hat Martin nicht Recht - Du verwendest ja GetDocumentByKey (Achtung - hier fehlt der Parameter 'exactmatch'!!). Nur - wenn Du das verwendest, muss auch die View entsprechend sortiert sein.
Dein Problem 2) verstehe ich allerdings überhaupt nicht - mach' Dir eben eine zweite View nach Deinem Gusto.
--- Ende Zitat ---
Bernhard, da sagt die Designer-Hilfe aber etwas anderes:
--- Zitat ---GetDocumentByKey finds a document based on its column values within a view. You create an array of keys, where each key corresponds to a value in a sorted column in the view.
...
For the GetAllDocumentsByKey method to work, you must have at least one sorted column for each key.
--- Ende Zitat ---
Die Kartennummer muss also in der ersten sortierten Spalte stehen (auch wenn das die vierte Spalte der View ist).
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln