Autor Thema: Import txt - Doppelte Dokumente vermeiden  (Gelesen 3302 mal)

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Import txt - Doppelte Dokumente vermeiden
« am: 21.08.08 - 17:47:01 »
Hallöchen.
Wohl zum x-ten Mal, komme aber nicht weiter. (auch nicht durch die Suche bzw.Hilfe)
 -> Import und Doppelte Doks vermeiden.

Führe täglich einen Import einer txt-Datei durch und erstelle daraus Dokumente.
Das funzt auch bis dato. Nun soll das Script aber vorher noch prüfen, ob ein bestimmtes Dok (durch einen Wert indentifizierbar) schon existiert.

Hier das Import Script:

Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Set db = session.currentdatabase
   Set profdoc = db.getprofiledocument("(Config)")
   Dateipfad = profdoc.Dateipfad(0)
   fileNum = Freefile()
   
 ' Trennzeichen
   delimiter = "#"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$    
      Do While Not Eof(fileNum%)
     ' Zeile für Zeile einlesen
         Line Input #1,  InputStr$ 
         FieldArray = Split(InputStr$,delimiter)
         Call CreateDocument(db, FieldArray)
         
      Loop
   Else
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
   Exit Sub
   
End Sub


Sub CreateDocument(db As notesdatabase, FieldArray As Variant)
   Dim doc As New notesdocument(db)
   
   doc.Form = "New"
   doc.Feldname1 = FieldArray(0)
   doc.Feldname2 = FieldArray(1)
   doc.Feldname3 = FieldArray(2)
   
   Call doc.save(1,0)
   
End Sub


Natürlich hilt mir da die GetDocumentByKey Methode weiter, kann sie aber nicht richtig einbauen bzw. vergesse wohl was. Sie muss wohl vor das Call CreateDocument(db, FieldArray), aber nur wie????? :-:

Bitte um Eure Hilfe.

Schöne Grüße Jason
Gruß Jason

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #1 am: 21.08.08 - 17:50:18 »
Ansicht mit Key erstellen, versuchen das Dokumet zu holen via
view.getDocumentByKey(....
wenn das klappt Wert schon vorhanden, wenn nicht Dokument neu anlegen.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #2 am: 21.08.08 - 18:04:37 »
Ansicht mit Key erstellen, versuchen das Dokumet zu holen via
view.getDocumentByKey(....
wenn das klappt Wert schon vorhanden, wenn nicht Dokument neu anlegen.

Gracie für die schnelle Antwort. Aber so weit war ich schon. Ich weiß ja nur nicht wo ich es einbauen soll und was noch fehlt.
Reicht "set view", "Set doc" und  "If Not (doc Is Nothing) Then" aus?

Set view = db.GetView ("Alle Dokumente")

If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
   Line Input #1,  InputStr$         
FieldArray = Split(InputStr$,delimiter, -1, 0)
      If Not Isempty(FieldArray) Then
         Set doc = view.GetDocumentByKey(Name)
         If Not (doc Is Nothing) Then
            Call CreateDocument(db, FieldArray)
            End If         
         End If
      Loop
   Else
Gruß Jason

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #3 am: 21.08.08 - 19:46:56 »
Not doc Is Nothing
bedeutet doc (Wert) ist vorhanden
doc is nothing
bedeutet doc (Wert) ist nicht vorhanden
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #4 am: 22.08.08 - 08:14:52 »
Ok  8) stimmt.
Hab ich geändert und erhalte "Invalid key value typ".
 :-: :-:
Gruß Jason

klaussal

  • Gast
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #5 am: 22.08.08 - 08:17:29 »
Wie ist "Name" gefüllt, was ist das für ein Feldtyp, stimmt der mit dem Key in der Ansicht überein, was sagt der Debugger ?

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #6 am: 22.08.08 - 08:42:33 »
Wie ist "Name" gefüllt, was ist das für ein Feldtyp, stimmt der mit dem Key in der Ansicht überein, was sagt der Debugger ?

Das Feld Name ist ein Textfeld, bearbeitbar, und ist in der Ansicht in der ersten Spalte, die sortiert ist angegeben.
Der Debugger:

alles i.o. bis aus Set doc = view.GetDocumentByKey(Name)
da bricht er ab
Gruß Jason

klaussal

  • Gast
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #7 am: 22.08.08 - 08:49:42 »
Zitat
da bricht er ab

Mit welcher FM ?

Meine Glaskugel schläft leider noch......

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #8 am: 22.08.08 - 09:14:29 »
Ist wahrscheinlich zu banal, finde aber in Deinem Code nirgends die Var. Name??

Boris

klaussal

  • Gast
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #9 am: 22.08.08 - 09:18:05 »
.... und wie die gesetzt wird.....

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #10 am: 22.08.08 - 09:52:42 »
Zitat
da bricht er ab

Mit welcher FM ?

Meine Glaskugel schläft leider noch......

Hab ich geändert und erhalte "Invalid key value typ".  !!!!  s.o.
 
Ist wahrscheinlich zu banal, finde aber in Deinem Code nirgends die Var. Name??
 8) >:D ::)    hab grad Dim Name As String ergänzt   :love:

Er importiert jetzt die Sätze, aber leider immer noch doppelt und dreifach

Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim Name As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Dim view As NotesView
   
   Set db = session.currentdatabase
   Set profdoc = db.getprofiledocument("(Konfiguration)")
   Dateipfad = profdoc.Dateipfad(0)
   fileNum = Freefile()
   Set view = db.GetView ("Alle Dokumente")
   
'Trennzeichen
   delimiter = "#"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey( Name )
            If doc Is Nothing Then
               Call CreateDocument(db, FieldArray)
            End If         
         End If
      Loop
   Else
      
      
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
   Exit Sub
   
Sub CreateDocument(db As notesdatabase, FieldArray As Variant)
   Dim doc As New notesdocument(db)
   
   doc.Form = "Neuer Eintrag"
   doc.Name = FieldArray(0)
   doc.Name2 = FieldArray(1)
   doc.Vorname3 = FieldArray(2)
   
   Call doc.save(1,0)
   
End Sub


End Sub
« Letzte Änderung: 22.08.08 - 09:57:36 von lotus blue »
Gruß Jason

Driri

  • Gast
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #11 am: 22.08.08 - 10:03:07 »
Zitat
Set doc = view.GetDocumentByKey( Name )

Das wird dir solange Nothing liefern, bis Du der Variable "Name" auch einen Inhalt schenkst.

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #12 am: 22.08.08 - 10:04:20 »
Schön und gut das Du nun Dim Name... eingebaut hast bleibt weiterhin die Frage wie Du Name setzt???
Den Name musst Du doch vorher aus irgendeinem doc z.b auslesen??

Boris

klaussal

  • Gast
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #13 am: 22.08.08 - 10:04:58 »
Wo wird Name gefüllt ?

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #14 am: 22.08.08 - 10:12:34 »
Um es deutlicher zu machen:

Name = FieldArray(Stelle wo an der der Key steht)

Dann sollte es gehen
« Letzte Änderung: 22.08.08 - 10:20:21 von tks »
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #15 am: 22.08.08 - 10:15:55 »
Um es deutlicher zu machen:

Name = FieldArray(Stelle an der der Key steht)

Dann sollte es gehen

EDIT: kleine redaktionelle Änderung. Deutsche Sprach, schwere Sprach

Oh Mann! Und dann noch "zitieren" statt "editieren" gedrückt. Hoffentlich ist bald WE.
« Letzte Änderung: 22.08.08 - 10:19:28 von tks »
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Import txt - Doppelte Dokumente vermeiden
« Antwort #16 am: 22.08.08 - 10:47:16 »
Klingt logisch. Danke Euch allen.  :love: :love: :love:

Es funzt, dann muss es wohl so jetzt passen  ;D

Hier das fertige Script:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim VsNr As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Dim view As NotesView
   
   Set db = session.currentdatabase
   Set profdoc = db.getprofiledocument("(Konfiguration)")
   Dateipfad = profdoc.Dateipfad(0)
   fileNum = Freefile()
   Set view = db.GetView ("Alle Dokumente")
   
'Trennzeichen
   delimiter = "#"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(fieldarray(0))
            If doc Is Nothing Then
               Call CreateDocument(db, FieldArray)
            End If         
         End If
      Loop
   Else
      
      
      Messagebox "olalallalal   Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
   Exit Sub
   
End Sub


Sub CreateDocument(db As notesdatabase, FieldArray As Variant)
   Dim doc As New notesdocument(db)
   
   doc.Form = "Neu"
   doc.Name = FieldArray(0)
   doc.Name2 = FieldArray(1)
   doc.Vorname = FieldArray(2)
   
   Call doc.save(1,0)
   
End Sub
Gruß Jason

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz