Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Alperen15 am 06.10.10 - 11:02:00

Titel: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 11:02:00
Hallo alle zusammen.....Ich habe ein paar csv Dateien. Jede Datei hat paar Zeilen( kundennummer, name usw.... )Ich habe eine Teilmaske erstellt mit den Felder die automatisch befüllt werden sollen. Eine Ansicht habe ich mir auch erstellt...Kundennummer, name usw...

Mein Agent den ich erstellt habe soll eine Datei öffnen den ersten Datensatz lesen dann die Kundennummer in der Ansicht suchen und falls die Kundennummer existier in der Ansicht das Dokument öffnen, die Felder befüllen und nächsten Datensatz lesen....was simples für euch aber für mich eine Herausforderung... bei set doc = doc.getfirstDocument bekomme ich schon eine Fehlermeldung, wahrscheinlich habe ich ncoh mehr....ich würde mcih echt freuen wenn ich paar Infos bekommen könnte

Sub Initialize
   
   Dim session As New  NotesSession
   Dim db As NotesDatabase   
   Dim dc As NotesDocumentCollection
   Dim view As NotesView
   Dim doc As NotesDocument   
   Dim item As NotesItem
   Dim filenum As Integer, iZaehler As Integer, pos As Integer     
   Dim filename As String
   Dim i As String
   Dim cTrenn As String, cText As String, cDate As String, cError As String, cAusgabe As String
   Dim cSelection As String
   Dim dtCutOff As New NotesDateTime("31.12.1900")
   Dim lDate As Long
   Dim cpathName As String
   Dim cFilename As String
   Dim Pathname As String
   Dim PathFileName As String
   Dim csvFilename As String
   Dim kundennummer As String
   Dim oNeuDoc As NotesDocument
   
   Set db=session.CurrentDatabase
   Set view = db.GetView ("vwKundeKur" )
   Set oHeute = New NotesDateTime(Now)                     ' *** Akt. Datum   
   
   pathName$ = "E:\TestKUR\Label\*"
   cFilename$ = Dir$(pathName$ & "*.csv", 0)
   
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   
   Do While cFilename$ <> ""
      If  Isempty(cFilename$) Then
         Exit Sub
      End If    
      PathFileName = "E:\TestKUR\Label\" & cFilename$
      
      i = i + cTrenn
      iZaehler = iZaehler + 1      
      'lese erste zeile
      fileNum% = Freefile()
      Open PathFileName For Input As filenum  
      Seek filenum,1  
      Line Input #filenum, i
      
      Call ReadFields(i)                                    ' *** neuer Datensatz lesen         
      
      kundennummer = cImString(1)            'Kundennummer zwischenspeicher
      
      cSelection = "FORM = ""maKundenetikett"" & doc.fdCustNo = kundennummer"
      Set dc = db.Search ( cSelection , dtCutOff , 0 )   
      
      ' **** Wenn Kundennummer in der Ansicht = Kundennummer aus der csv Datei dann... ***********
      Set doc = doc.GetFirstDocument()
      If Not doc Is Nothing Then
         Call FillFields(doc,i)      
         On Error Goto ErrorPrint
         Call doc.save(False,True)      
      End If
      
      cFilename$ = Dir$()
   Loop
   
EndeGut:
   Close filenum
   Print cText
   Goto EndeAlles
ErrorPrint:  
   Resume Next
   Print cError
EndeFileOpen:
   Goto EndeAlles
EndeAlles:
   Exit Sub
End Sub
Titel: Re: csv Datei importieren
Beitrag von: klaussal am 06.10.10 - 11:07:24
Zitat
set doc = doc.getfirstDocument bekomme ich schon eine Fehlermeldung

muss wohl heissen   .. = namedeinerview.getfirst...

Vielleicht solltest du hier mit getdocumentbykey arbeiten.
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 11:09:56
meinst du Set doc = vwKundeKur.getfirstdocument() ??
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 11:11:52
a ja jetzt hab ichs moment mal debuggen wies jetzt aussieht
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 13:49:16
also jetzt habe ich es mal so....ich mache es Schritt für Schritt wies sich auch für einen Anfänger gehört. Momentan liest der Agent alle Datensatz in der Datei stumpf durch. Laut debugger stimmt es auch so weit. Jetzt möchte ich in meine Ansicht die ich erstellt habe. Er soll den Kundennummer von der Datei nehmen schauen ob es die Kundennummer auch in der Ansicht gibt. Wenn ja dann fülle die Felder von der Datei in das Dokument.

Dim session As New  NotesSession
   Dim db As NotesDatabase   
   Dim dc As NotesDocumentCollection
   Dim view As NotesView
   Dim doc As NotesDocument   
   Dim item As NotesItem
   Dim filenum As Integer, iZaehler As Integer, pos As Integer     
   Dim filename As String
   Dim i As String
   Dim cTrenn As String, cText As String, cDate As String, cError As String, cAusgabe As String
   Dim cSelection As String
   Dim dtCutOff As New NotesDateTime("31.12.1900")
   Dim lDate As Long
   Dim cpathName As String
   Dim cFilename As String
   Dim Pathname As String
   Dim PathFileName As String
   Dim csvFilename As String
   Dim kundennummer As String
   Dim oNeuDoc As NotesDocument
   
   Set db=session.CurrentDatabase
   Set view = db.GetView ("vwKundeKur" )
   Set oHeute = New NotesDateTime(Now)                     ' *** Akt. Datum   
   
   pathName$ = "E:\TestKUR\Label\*"
   cFilename$ = Dir$(pathName$ & "*.csv", 0)
   
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   
   If  Isempty(cFilename$) Then
   Exit Sub
   End If     
   PathFileName = "E:\TestKUR\Label\" & cFilename$
   
           
      'lese erste zeile
   fileNum% = Freefile()
   Open PathFileName For Input As filenum   
   Seek filenum,1   
   
   Do Until Eof (filenum)
      Line Input #filenum, i
      If i <> "" Then
         i = i + cTrenn
         iZaehler = iZaehler + 1
         Call ReadFields(i)                                    ' *** neuer Datensatz lesen
      End If
         
      
      ' **** Wenn Kundennummer in der Ansicht = Kundennummer aus der csv Datei dann... ***********
      
   Loop
   
EndeGut:
   Close filenum
   Print cText
   Goto EndeAlles
ErrorPrint:   
   Resume Next
   Print cError
EndeFileOpen:
   Goto EndeAlles
EndeAlles:
   Exit Sub
End Sub

Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 13:50:41
unzwar habe ich möchte ich eine selektion machen. Also erstmal den kundennummer zwischenspeichern dann die selektion. Die Funktioniert aber nicht ....

kundennummer = cImString(1)            'Kundennummer zwischenspeicher
      
      cSelection = "FORM = ""maKundenetikett"" & doc.fdCustNo = kundennummer"
      Set dc = db.Search ( cSelection , dtCutOff , 0 )   
Titel: Re: csv Datei importieren
Beitrag von: klaussal am 06.10.10 - 13:57:27
Siehe #1.
Titel: Re: csv Datei importieren
Beitrag von: m3 am 06.10.10 - 13:58:57
Lass Dir mal cSelection ausgeben oder schau sie dir im Debugger an. Ich kann mit nicht vorstellen, dass es sich dabei um einen gültigen Suchausdruck handelt. ;)
Zumindest kann ich mir nicht vorstellen, dass Du ein Feld Namens "doc.fdCustNo" hast.  ;D
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 14:14:11
so jetzt sieht die Selektion so aus

cSelection = "FORM = ""maKundenetikett"" & fdCustNo = kundennummer"
Set dc = db.Search ( cSelection , Nothing , 0 )   
      
      Set doc = dc.GetFirstDocument      
      Call FillFields(doc,i)

zumindest komme ich jetzt in die Funktion Fillfieds aber in der ersten Zeile haut es mich schon wieder weg mit der Meldung:  Object variable not set ....andere Funktionen von anderen Agent sehen genau so aus

Function FillFields (doc As NotesDocument , i As String)
   
   
   ' Zuweisung der Feldinhalte
   Dim heute As NotesDateTime
   Set heute = New NotesDateTime( "Today" )
   
   Dim menge As Long
   Dim datetime As NotesDateTime
   Dim datestring As String
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim vdoc As NotesDocument
   Dim key As String
   Dim User As String
   Dim oDate As String
   
   'Call doc.ReplaceItemValue("fdKdNr", cImString(1))                                    'Kundennummer
   Call doc.ReplaceItemValue("fdKdName", cImString(2))                              'Kundenname
   Call doc.ReplaceItemValue("fdAuftragsNr", cImString(3))                             'Auftragsnummer
   Call doc.ReplaceItemValue("fdAuftrPos", cImString(4))                              'Auftragsposition
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 14:17:32
Warum in aller Welt benutzt Du niemals den Debugger?? Dort ist sofort zu sehen, warum das nicht funktioniert und nicht funktionieren kann!

Du haust uns hier dauernd neue Code-Schnipsel vor und erwartest, dass wir diese lesen und analysieren (und den Kopf schütteln, weil schlicht simple Logik fehlt), aber bist nicht bereit, erstmal den Debugger zu bemühen.

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 14:27:16
LAUT DEBUGGER bin ich HIER WEG und ich weiss nicht warum

--> Call doc.ReplaceItemValue("fdKdName", cImString(2))                              'Kundenname

anscheinend waren hier welche nie Anfänger....
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 14:32:40
Hier waren ALLE mal Anfänger. Aber auch ein Anfänger muss *denken*. Und Du solltest mal nachdenken, warum hier "Object variable not set" angemeckert wird!

Das einzige Object in Zeile ist "doc". Und dieser Spur folgst Du jetzt im Debugger - und wenn Du damit die eigentliche Fehlerstelle nicht findest, dann bist Du garantiert irgendwo anders begabt - aber nicht für die Programmierung.

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: klaussal am 06.10.10 - 14:52:46
Tipp: Option declare sollte immer gesetzt sein.
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 14:54:48
Klaus, das hat aber diesmal mit dem aktuellen Problem nichts zu tun.

Ich würde im aktuellen Kontext (und nicht nur in dem, sondern generell!) den Tipp geben: Verwende niemals ein Objekt, ohne es geprüft zu haben! NIEMALS!!

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 14:57:01
wenn ich bloss wüsste was Ihr meint....
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 14:59:59
@Klaus
Danke für dein tipp aber Option declar ist schon gesetzt
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 15:03:03
wenn ich bloss wüsste was Ihr meint....

Meinst Du nicht, es ist an der Zeit, dass mit Deinem Arbeitgeber zu besprechen? Er kann Dich doch nicht für etwas einsetzen, wofür Du auch noch nicht ansatzweise fit bist. Die richtige Personalauswahl bzw. das Vorbereiten des Personals auf Aufgabenstellungen können und wollen wir Deinem Unternehmen nicht in unserer freien Zeit abnehmen.

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: m3 am 06.10.10 - 15:07:50
OK, letzter Versuch, ev. liest Du ja diesen Text:

Du bist schon viel früher weg. Und zwar beim dbSearch. Oder bist Du der Meinung, dass
Code
FORM = "maKundenetikett" & fdCustNo = kundennummer
sowohl ein gültiger Suchausdruck für ein dbSearch ist, als auch das Ergebnis zurückliefert, das Du willst?

Meine Vermutung ist, dass dbSearch eine leere Collection zurückliefert. Und da Du auf diesen Fall offensichtlich nichts abprüfst, haut es Dich dann in dem Moment auf die Schnauze, in dem Du auf das erste (nicht vorgandene) Dokument der leeren Collection zugreifen willst.

Wenn Dir das jetzt noch immer nicht hilft, kann ich mich nur Bernhard anschließen.
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 15:19:51
Martin, dass ist natürlich die perfekt beschriebene Vorgeschichte des Dilemmas. Ich sehe den Zweck von AtNotes daran, genau diese Denke zu vermitteln, weil das nächste Posting schon absolut vorhersehbar ist, wenn wir hier nur die mehr oder weniger ganz fertigen Lösungen liefern.
Und im Code stecken ja noch viel mehr Tretminen ...

Wenn man mit den Hinweisen, die bis jetzt geliefert wurden (vor allem den prinzipiellen!!), immer noch nicht weiter kommt, dann sollte man sich einfach eine andere Aufgabe suchen.

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 06.10.10 - 15:56:03
so mein fehler war in der selection...... danke wegen den anderen fehler kümmer ich mich selber drum keine lust auf solche aussagen.
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 06.10.10 - 16:43:23
so mein fehler war in der selection...
Das sagten wir ja bereits - und zwar in zwei Etappen des Threads! Das hätte Dir auch der Debugger gesagt, womit der Thread an sich obsolet geworden wäre.

... wegen den anderen fehler kümmer ich mich selber drum keine lust auf solche aussagen.
Nun stellt sich die Frage, was Du in Zukunft von der AtNotes-Community überhaupt noch erwartest bzw. überhaupt noch erwarten kannst:
Wenn ich Deine obige, vor Rechtschreib-, Grammatik- und Ausdruckfehlern strotzende Pöbelei lese, dann kann ich nur davon ausgehen, dass wir Deine Arbeit machen sollen, Du aber nicht selber an Dir arbeiten willst.

Abschliessend also: Glückwunsch zum Eigentor!
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 07.10.10 - 14:03:15
naja ich habe mir mal den ablauf skizziert wie ich es ja haben möchte durch die skizze ist mir einiges klar geworden. also Datei wird geöffnet und Satz für Satz gelesen (funkioniert) kundennummer ist mein key. Mit diesem Key gehe ich in meine ansicht und suche mir die Kundennummer raus bis ich ihn gefunden habe. WEnn ich ihn gefunden werden die felder befüllt.
(Nein Ihr sollt nicht meine Arbeit tun ;-) ich brauche zwar etwas länger bis ich verstehe was ihr meint, aber wenn ich es verstanden habe hilft es mir auch) und die Funktion FillFieds komme ich garnet der debugger läuft einfach durch liest alle sätze dann springt er raus...

Do Until Eof (filenum)                                 
      Line Input #filenum, i
      If i = "" Then
         Goto EndeAlles         
      End If
      
      i = i + cTrenn
      iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      
      ' **********  Einlesen des csv - Datensatzes  **************************
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      
      kundennummer = cImString(1)                      '*** Kundennummer zwischenspeichern
      ' ************* Document Selection - Alle Documente in der DB werden nach Kundennummer durchsucht - Anführungszeichen der Selection beachten !
      cSelection = "FORM = ""maKundenetikett"" & fdCustNo =  """+kundennummer+""""
      Set dc = db.Search ( cSelection , dtCutOff , 0 )      
      ' **************
      
      Set doc = view.getFirstDocument
      If kundennummer <> doc.fdCustNo(0) Then
         Set doc = view.GetNextDocument(doc)      
      Else   
         Call FillFields(doc,i)  
         Call doc.save(False,True)   
      End If
NextEntry:         
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 07.10.10 - 14:06:16
ich glaube das ist doppelt gemopellt weil ich habe die selektion zum einen die If-Abfrage sieht nach wiederspruch aus, weil wenn ich selektiere ist die If Abfrage überflüssig....stimmts?!?

 cSelection = "FORM = ""maKundenetikett"" & fdCustNo =  """+kundennummer+""""
      Set dc = db.Search ( cSelection , dtCutOff , 0 )     
      ' **************
     
      Set doc = view.getFirstDocument
      If kundennummer <> doc.fdCustNo(0) Then
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 07.10.10 - 14:44:15
.
Titel: Re: csv Datei importieren
Beitrag von: Axel am 07.10.10 - 15:27:53
ich glaube das ist doppelt gemopellt weil ich habe die selektion zum einen die If-Abfrage sieht nach wiederspruch aus, weil wenn ich selektiere ist die If Abfrage überflüssig....stimmts?!?

... und das Ganze bedeutet in verständlichem Deutsch was?


Ich habe jetzt zwar nicht den ganzen Thread durchgearbeitet, dazu fehlt mir momentan die Zeit, aber folgendes ist mit aufgefallen.

Du durchsuchst deine Datenbank mit db.Search nach einer bestimmten Kundennummer und erhälts dann das Ergebnis in einer NotesDocumentCollection.

Set dc = db.Search ( cSelection , dtCutOff , 0 ) 

Aber zum evt. Einslesen holst du dir das erste Dokument einer Ansicht.

Set doc = view.getFirstDocument

Das kann irgend eins sein und dann wunderst du dich, dass er FillFields nicht ausführt.

Das Ganze passt hinten und vorne nicht zusammen.

Ganz grob muss das so aussehen:
...
Set dc = db.Search ( cSelection , dtCutOff , 0 )
If dc.Count > 0 then  'Nachfolgender Code nur ausführen wenn min. ein Dok. gefunden wurde
  Set doc = dc.GetFirstDocument
  While Not (doc Is Nothing)
    Call FillFields(doc,i)   
    Call doc.save(False,True)
    Set doc = dc.GetNextDocument(doc)
  Wend
End If
...

Das Ganze erhebt aber keinen Anspruch auf Vollständigkeit und soll und kann nur als Denkanstoss dienen.

Axel
Titel: Re: csv Datei importieren
Beitrag von: ascabg am 07.10.10 - 15:33:48
Hallo,

Auch noch etwas von meiner Seite.

Wenn es nur um die in der betreffenden Ansicht dargestellten Dokumente geht, warum dann mit dem Db.Search arbeiten.

Man koennten die Ansicht doch auch nach der Kundennummer sortieren und anschliessend mit
view.GetAllDocumentsByKey() arbeiten.

Ich glaube auch, dass diese Option bereits vorher schon mal angesprochen wurde und aus meiner Sicht kristallisiert sich immer mehr heraus, dass diese Variante hier sehr gut hineinpassen wuerde.

Andreas
Titel: Re: csv Datei importieren
Beitrag von: klaussal am 07.10.10 - 15:51:28
Zitat
Ich glaube auch, dass diese Option bereits vorher schon mal angesprochen wurde und aus meiner Sicht kristallisiert sich immer mehr heraus, dass diese Variante hier sehr gut hineinpassen wuerde.

Danke für die Blumen  :)

Siehe #1.
Titel: Re: csv Datei importieren
Beitrag von: koehlerbv am 07.10.10 - 16:06:46
Danke für die Blumen  :)

Siehe #1.

Ich habe eher Mitleid, Klaus - mit Dir und vielen anderen: Es gibt hier so viele Dinge, die bereits mehrfach in diesem und auch in den Vorgänger-Threads genannt wurden, aber bisher einfach ignoriert werden.
Der immanent wichtige Debugger wurde ja auch schon so oft genannt, aber bisher noch immer nicht richtig benutzt. Fast alle Fragen dieses Threads hätten sich sonst von selbst erledigt.

Bernhard
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 08.10.10 - 09:57:45
Guten morgen und vielen Dank. momentan sieht es so aus ich habe zwei schleifen gemacht. Die 1.Schleife liest alle Zeilen in der Datei durch. Beim lesen wird die Kundennumemr abgespeichert. Dann gehe ich in meine Ansicht nehme das erste dokument und speicher mir davon die Kundennummer ab. Dann kommt die 2.Schleife ins Spiel....vergleiche mir die beiden Kundennummer falls sie identlisch sein sollten, dann fülleFelder. Ansonsten öffne das nächste doukement speicher die kundennumer ab und vergleiche solange bist sie identisch sind
 
Das Problem ist meine do while abfrage und if abfrage(sind widersprüchlich) wo nach könnte ich denn die do while abfrage machen?

Open PathFileName For Input As filenum       
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do Until Eof (filenum)                                 
      Line Input #filenum, i
      If i = "" Then
         Goto EndeAlles         
      End If
      
      i = i + cTrenn
      iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      
      ' **********  Einlesen des csv - Datensatzes  **************************
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      
      kundennummer = cImString(1)                      '*** Kundennummer zwischenspeichern
      ' ************* Document Selection - Alle Documente in der DB werden nach Kundennummer durchsucht - Anführungszeichen der Selection beachten !
      'cSelection = "FORM = ""maKundenetikett"" & fdCustNo =  """+kundennummer+""""
      'Set dc = db.Search ( cSelection , dtCutOff , 0 )      
      ' **************
      
      Set doc2 = view.getFirstDocument
      tmpKundennr = doc2.fdCustNo(0)
      
      Do While kundennummer <> tmpKundennr
         If kundennummer = tmpKundennr Then

            Call FillFields(doc,i)   
            Call doc.save(False,True)
            Goto NextEntry
         End If
         Set doc2 = view.GetNextDocument(doc2)
         tmpKundennr = doc2.fdCustNo(0)
      Loop
      
NextEntry:         
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
Titel: Re: csv Datei importieren
Beitrag von: Axel am 08.10.10 - 10:04:13
Ich geb's auf. Wenn du nicht liest was man dir schreibt und die Vorschläge ansatzweise umsetzt, dann ist dir nicht zu helfen.

Axel 
Titel: Re: csv Datei importieren
Beitrag von: m3 am 08.10.10 - 10:05:28
*plonk*
Titel: Re: csv Datei importieren
Beitrag von: Alperen15 am 08.10.10 - 11:41:30
beim ersten lauf ist mein kundennummer befüllt aber mein key nicht fällt euch da beim ersten blick was auf, was ich übersehen habe?

Open PathFileName For Input As filenum       
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do Until Eof (filenum)                                 
      Line Input #filenum, i
      If i = "" Then
         Goto EndeAlles         
      End If
      
      i = i + cTrenn
      iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      
      ' **********  Einlesen des csv - Datensatzes  **************************
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      
      kundennummer = cImString(1)                      '*** Kundennummer zwischenspeichern
      
      Set vdoc = view.GetDocumentByKey(kundennummer) <-------vdoc ist laut debugger leer
      While Not(vdoc Is Nothing)
         Call FillFields(vdoc,i)   
         Call vdoc.save(False,True)
         Set vdoc = dc.GetNextDocument(vdoc)
         kundennummer = cImString(1)
         Set vdoc = view.GetDocumentByKey(kundennummer)
         Goto NextEntry
      Wend

NextEntry:         
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
Titel: Re: csv Datei importieren
Beitrag von: klaussal am 08.10.10 - 11:50:57
Also ich geb's auch dran:

warum 2xmal getdocumentbykey ?

Wenn vdoc leer ist, dann gibt's den Kunden wohl nicht.

Anscheinend fehlt Dir wirklich jegliches Verständnis für das, was da abgeht.
Titel: Re: csv Datei importieren
Beitrag von: ascabg am 08.10.10 - 12:06:04
Hallo,

Und die Ansicht, in der gesucht wird ist auch nach der Kundennummer sortiert!
Und was passiert, wenn die Kundennummer mehrfach vorkommt?


Andreas
Titel: Re: csv Datei importieren
Beitrag von: Peter Klett am 08.10.10 - 12:39:14
Mein einziger Beitrag zu diesem Thema ist ein gut gemeinter Rat:

Mach Dir Gedanken darüber, was Du von dem Script erwartest. Schreib es Dir evtl. sogar im Klartext auf (Lese Datensatz, Teile Datensatz in Felder auf, Hole Kundendokument usw.).

Stell Dir dabei vor, Du wärst Notes und müsstest das selber machen. Eine Ansicht ist dann ein Ordner (der gute alte von Leitz), ein Dokument ist ein Blatt Papier.

Wenn Du dann einen Ablauf hast, der in der analogen Welt funktionieren würde, dann versuchst Du diesen Ablauf mit Script zu übersetzen. Wenn es nicht analog funktioniert, kann es digital auch nicht klappen.

Es macht m.E. überhaupt keinen Sinn, ein Script von irgendwoher zu nehmen, ohne den Sinn des Scripts verstanden zu haben, und  dann da solange dran rumzuprockeln (oder sich Code-Brocken von uns zuwerfen zu lassen) bis dann irgendetwas scheinbar mehr oder weniger geklappt haben könnte, müsste oder wollte. Du musst verstehen was dort abläuft. Du steuerst Notes, und nicht umgekehrt.

Wenn ich das Script sehe, das Du zuletzt gepostet hast, erkenne ich nur, dass Du nicht weißt, was abläuft. Hier eine Klartextdarstellung Deiner Befehle (Ausschnitt):

Merke die Kundennummer
Suche Dokument in der Ansicht anhand der Kundennummer
Ändere die Felder
Speichere das Dokument
Suche das nächste Dokument in irgendeiner Collection
Merke die Kundennummer
Suche Dokument in der Ansicht anhand der Kundennummer
Nimm den nächsten Datensatz

Stell Dir vor, Du bekommst diese Arbeitsanweisung von Deinem Chef, Du würdest ihm wohl einen Vogel zeigen. Notes macht das Dir gegenüber auch, aber auf eine andere Weise.

Wie gesagt, mehr schreibe ich nicht zu diesem Thema.