Autor Thema: 2 Probleme beim einlesen von CSV-Datei  (Gelesen 2780 mal)

john doh

  • Gast
2 Probleme beim einlesen von CSV-Datei
« am: 02.07.08 - 15:17:35 »
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!
« Letzte Änderung: 03.07.08 - 09:56:44 von john doh »

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #1 am: 02.07.08 - 15:22:02 »
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.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Driri

  • Gast
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #2 am: 02.07.08 - 15:25:40 »
Zu 1)

Du müßtest vor dieser Zeile hier

Zitat
Set doc = view.GetDocumentByKey(knrar)

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 ?


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #3 am: 02.07.08 - 15:26:50 »
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.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #4 am: 02.07.08 - 15:32:51 »
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, 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.
Die Kartennummer muss also in der ersten sortierten Spalte stehen (auch wenn das die vierte Spalte der View ist).
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #5 am: 02.07.08 - 15:35:24 »
Das ist schon klar, Martin - aber er will das ja dann unsortiert haben. Aber das hast Du ja schon bestätigt.

Bernhard

john doh

  • Gast
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #6 am: 02.07.08 - 15:53:59 »
Danke für die schnellen Antworten.

zu 1.
Wenn der Agent so ausgeführt wird, schreibt er mir doch die komplette CSV in ein Array. Richtig? Ich möchte aber, dass er mir nur die Zeilen reinschreibt mit dem Wert "Rechnungsbetrag". Wie bekomme ich das hin?

Zu 2.
Fieldarray(0) wird doch durch den Befehl "GetDocumentByKey" mit der ersten sortieren Spalte verglichen. Richtig? Welcher Befehl veranlasst Fieldarray(0) sich mit der z.B. 4. Spalte zu vergleichen?

Habt etwas Nachsicht mit mir, ich bringe mir Lotus Script seid 1 1/2 Wochen selber bei.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #7 am: 02.07.08 - 15:57:03 »
Zu 1) Liest Du auch, was man Dir antwortet?

2) Es bleibt bei der Methode GetDocumentByKey und der Tatsache, dass der Wert in der ersten sortierten Spalte gesucht wird. Egal, ob das die erste oder die vierte ist.

Und der Name fehlt immer noch. Mit john doh mag ich mich nicht unterhalten.

Bernhard

Offline WernerMo

  • @Notes Preisträger
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.050
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #8 am: 02.07.08 - 16:05:33 »
Hallo

@Bernhard, da muss ich Dich leider korrigieren:
Und der Name fehlt immer noch. Mit john doh mag ich mich nicht unterhalten.

Mathias hat (wie von Dir empfohlen) seinen Vornamen mit "MfG" in den Footer.


@Matthias, dann musst Du eben die Ansicht für Deine Zwecke umbauen.

Gruß Werner
Gruß Werner
  o                                                  o   
 /@\  Nächster @Notes-Stammtisch  /@\  online Sept. 2020?
_/_\__________________________/_\_ Details folgen.

john doh

  • Gast
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #9 am: 02.07.08 - 16:17:31 »
@Bernhard

Ja, ich lese mir alle Antworten durch, nur wie ich schon schrieb, bin ich totaler Anfänger was Script angeht. Und um ehrlich zu sein, weiß ich nicht wirklich, wie  ich die Vorschläge zu meinem ersten Problem einbinden soll.
Das zweite Problem ist gelöst, vielen Dank an alle, hatte das mit der ersten Spalte falsch verstanden.

Knicks
Matthias

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #10 am: 02.07.08 - 16:20:40 »
Die Logik musst Du schon selbst einbringen, Matthias, aber was Du brauchst, ist ein

If Instr (InputStr$, "Rechnungsbetrag") > 0 Then

HTH,
Bernhard

john doh

  • Gast
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #11 am: 03.07.08 - 09:31:06 »
ES FUNKTIONIERT (nicht das ich jemals dran gezweifelt hätte).  ;D

Danke für die schnelle Hilfe!
Danke für die Aufmerksamkeit!
Danke für die Geduld!
Danke für das herzliche Aufnehmen im Forum!  ;D
Danke für die Blumen!

Aber jetzt mal ernsthaft, vielen Dank an alle, Ihr habt mir sehr weitergeholfen.

Alle Anforderungen an den Agenten sind erfüllt und mein Chef ist zufrieden.

Entschuldigt vielmals meinen schlechten Start im Forum.

Matthias
« Letzte Änderung: 03.07.08 - 09:56:18 von john doh »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: 2 Probleme beim einlesen von CSV-Datei
« Antwort #12 am: 03.07.08 - 16:41:05 »
Entschuldigt vielmals meinen schlechten Start im Forum.

Hallo Matthias,

dafür gibt es überhaupt keinen Grund - alles passt doch (incl. Deiner dankenswerten Rückmerldung).

In diesem Sinne: Gerne wieder (wenn wir helfen können).

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz