Autor Thema: Dokumente vergleichen und ausgeben (FtSerach)  (Gelesen 11602 mal)

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Dokumente vergleichen und ausgeben (FtSerach)
« am: 29.09.04 - 09:38:37 »
Hallo Ihr Lieben,

bin jetzt mal dabei mich in Lotus Script einzuarbeiten.
Das Probelm ist nach wie vor, Datensätze aus dem persönlichen Adressbuch manuell zu markieren und diese in eine Stammdatenbank zu exportieren.
Dabei soll geprüft werden, ob es diesen Namen bereits in der Stammdatenbank gibt.

Als erstes versuche ich die FTsearch methode umd ein bestimmtes Feld zu vergleichen.
Allerdings ging das nicht. Ich kann nur ein bestimmtes Wort vergleichen. Möchte aber z.B. das Feld LastName als Query nehmen.

Als nächstes möchte ich die Ergebnisse in einer Art Pickliste ausgeben lassen.
(Wie wenn ich eine Mail schreibe und nach Eingabe des Empfängers mir eine Liste ausgegeben wird, wenn der Name mit mehreren Namen übereinstimmt)

Kann mir da jemand helfen?

Sub Initialize
   
   Dim session As New NotesSession
   Dim db As New NotesDatabase( "", "VIP.nsf" )
   Dim view As NotesView
   Dim Ftsearch As NotesDocumentCollection
   Dim j As Integer
   
   
   
   Set view = db.GetView("Kontakte Kat")
   j= view.FtSearch("Otto",0)
   Msgbox Cstr(j)
   
End Sub


Danke euch
Windows XP
Notes 6.5

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #1 am: 29.09.04 - 09:45:41 »
Für die FTSearch kannst Du einen beliebe Suchabfrage basteln im Stile von:

Field Lastname="Müller"
oder
Field Lastname="Müller" AND Field Firstname="Otto"

gruss umi
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Driri

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #2 am: 29.09.04 - 09:49:01 »
Oder Du nimmst statt FTSearch einfach db.Search. Der Vorteil dabei ist, daß Du die Treffer direkt in eine DocumentCollection bekommst.

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #3 am: 29.09.04 - 09:49:23 »
Hallo Umi,

danke erstmal für die schnelle Antwort
Ich möchte keinen bestimmten Namen angeben, sondern will, dass das Feld LastName vom markierten Dokument verglichen werden soll, mit der Stammdatenbank
Windows XP
Notes 6.5

Driri

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #4 am: 29.09.04 - 09:54:27 »
Dann nimm NotesDatabase.Search.

Zieh dir aus dem aktuellen Dokument das Suchkriterium raus und gib es für die Suche mit an.
Du erhälst dann eine DocumentCollection und kannst mit DocumentCollection.Count z.B. prüfen, wieviele Treffer gefunden wurden.

Glombi

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #5 am: 29.09.04 - 10:02:54 »
So sollte das in etwa aussehen:

set dc = targetdb.Search( |Nachname = "| + doc.LastName(0) + |"| )


targetdb = Deine Adressdatenbank
doc = das Dokument im pers. NAB
Nachname = Feldname in Deiner Adressdatenbank

Andreas

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #6 am: 29.09.04 - 10:13:41 »
Sub Initialize
   
   
   Dim targetdb As New NotesDatabase( "", "VIP.nsf" )
   Dim doc As NotesDocument
   
   
   Set doc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |"| )
   
   
   
End Sub


So hat es nicht geklappt. Was ist falsch?
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #7 am: 29.09.04 - 10:21:40 »
Da fehlen so circa 20 Zeilen Code drum herum. Ich wollte ja nur einen Ansatz geben und nicht den kompletten Code.

set doc  =
 muss
set dc =
heissen, da db.Search eine NotesDocumentCollection liefert.

Andreas

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #8 am: 29.09.04 - 11:18:38 »
Was ist denn hier dran falsch?


                Dim s As New NotesSession
   Dim targetdb As New NotesDatabase( "", "VIP.nsf" )
   Dim doc As NotesDocument
   Dim dc As NotesDocumentCollection
   
   
   Set dc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |"|,dateTime,0 )
   Set doc = dc.GetFirstDocument
   
   While Not (doc Is Nothing)
      Set doc = dc.GetNextDocument(doc)
   Wend
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #9 am: 29.09.04 - 11:30:15 »
Ich schiebe noch mal an...

Dim s As New NotesSession
dim db as NotesDatabse
Dim targetdb As New NotesDatabase( "", "VIP.nsf" )
Dim dc As NotesDocumentCollection
Dim checkdc As NotesDocumentCollection
Dim doc As NotesDocument

dim found as integer

set db = s.CurrentDatabase
set checkdc = db.UnprocessedDocuments
set doc = checkdc.GetFirstDocument
do while not doc is nothing   

found = false
   
   Set dc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |"|,Nothing,0 )
if dc.Count > 0 then
found = true
'Hier gibt es einen Treffer:

else
' Kein Treffer: Dok. kann kopiert werden

end if

loop   'do while not doc is nothing



doc sind die Dokumente in Deinem pers. Adressbuch. Der Code sollte dann in einem Agenten sein. der über alle gewählten Dokumente geht.

Verwende doch mal den Debugger, da siehst Du. wann es einen Fehler gibt und welche Objekte nicht gesetzt sind.
Dann vertiefe Dich mal in die Beschreibung der Klassen in der Designer Hilfe und schau Dir auch mal die Beispiele dort an. Das ist eigentlich eine gute Basis für die Einarbeitung in Script.

Andreas

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #10 am: 29.09.04 - 13:25:28 »
hierbei stürzt mein Notes ab.
Habs mir auch im Debugger angeguckt.
Scheint eine Endlosschleife zu sein
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #11 am: 29.09.04 - 15:28:47 »
Yoo, vor dem
Loop
fehlt ein
set doc = checkdc.GetNextDocument(doc)

 ;D

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #12 am: 29.09.04 - 17:06:38 »
Dim s As New NotesSession
dim db as NotesDatabse
Dim targetdb As New NotesDatabase( "", "VIP.nsf" )
Dim dc As NotesDocumentCollection
Dim checkdc As NotesDocumentCollection
Dim doc As NotesDocument

dim found as integer

set db = s.CurrentDatabase
set checkdc = db.UnprocessedDocuments
set doc = checkdc.GetFirstDocument
do while not doc is nothing   

found = false
   
   Set dc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |"|,Nothing,0 )
if dc.Count > 0 then
found = true
'Hier gibt es einen Treffer:

else
' Kein Treffer: Dok. kann kopiert werden

end if

loop   'do while not doc is nothing



/quote]

nach else hat noch was gefehlt:
Call doc.CopyTodatabase(targetdb)


Jetzt muss ich noch die Werte, die übereinstimmen in einer Picklist oder so ausgeben
mal schaun, ob ich das ansatzweise hinkriege...

dankeschön
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #13 am: 29.09.04 - 17:27:06 »
hierbei stürzt mein Notes ab.
Habs mir auch im Debugger angeguckt.
Scheint eine Endlosschleife zu sein

Das ist dann kein Absturz, sondern (wie Glombi dann ja bestätigt hat) "'In Ewigkeit - Amen !', sprach die Endlosschleife."

By the way: Dein Vorgehen, nur auf den Lastname zu gehen, halte ich für kritisch. Du solltest die NotesDatabase.Search-Formel noch etwas erweitern.

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #14 am: 30.09.04 - 10:40:35 »
Hallo,

habe jetzt mein Script:
Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim targetdb As New NotesDatabase( "", "VIP.nsf" )
   Dim dc As NotesDocumentCollection
   Dim checkdc As NotesDocumentCollection
   Dim doc As NotesDocument
   
   Dim found As Integer
   
   Set db = s.CurrentDatabase
   Set checkdc = db.UnprocessedDocuments
   Set doc = checkdc.GetFirstDocument
   Do While Not doc Is Nothing   
      
      found = False
      
      'Prüfe Nachname
      Set dc = targetdb.Search( |LastName = "| + doc.LastName(0) + |"|,Nothing,0 )
      
          'Wenn Übereinstimmung dann prüfe Vorname      
      If dc.Count > 0 Then
         Set dc = targetdb.Search( |FirstName = "| + doc.FirstName(0) + |"|,Nothing,0 )
         
         If dc.Count > 0 Then
                 'Hier gibt es einen Treffer:            
            found = True
            
         Else
                   ' Kein Treffer: Dok. kann kopiert werden
            Call doc.CopyTodatabase(targetdb)
            
         End If
      Else
         Call doc.CopyTodatabase(targetdb)
         
      End If
      Set doc = checkdc.GetNextDocument(doc)
      
      Loop   'do while not doc is nothing
End Sub



Was empfehlt ihr mir, wenn ich die übereinstimmenden Namen in einer Art Picklist wiedergeben will?
Wie wenn ihr im Empfängermail einen Namen reinschreibt und dir eine Liste mit übereinstimmenden namen gezeigt wird, wenn es mehr al einen gibt)

Danke
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #15 am: 30.09.04 - 11:34:12 »
ich suhe schon die ganze zeit nach dieser Ausgabe nach eingabe in das "An" Feld in einer Mail
Sobald ich MUE eingebe werden mir alle Müllers in eienr liste ausgegeben und ich kann eines davon wählen.
Wo fidne ich diese Funktion?

danke Euch
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #16 am: 30.09.04 - 15:08:52 »
Das ist aber ein heftiger Denkfehler:
Code
'Prüfe Nachname
      Set dc = targetdb.Search( |LastName = "| + doc.LastName(0) + |"|,Nothing,0 )
      
          'Wenn Übereinstimmung dann prüfe Vorname      
      If dc.Count > 0 Then
         Set dc = targetdb.Search( |FirstName = "| + doc.FirstName(0) + |"|,Nothing,0 )
         
         If dc.Count > 0 Then
                 'Hier gibt es einen Treffer:            
            found = True

Gesucht wird zuerst nach "Müller". Wird ein Müller (oder mehrere) gefunden, wird nochmal gesucht - nach "Otto". Gefunden wird dann "Otto Waalkes", "Otto Rehagel", "Otto Motor", "Otto Mane" und so weiter. Nicht besonders hilfreich, das Ergebnis ...

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #17 am: 30.09.04 - 16:20:29 »
ouu
Tatsache
Das war aber ein gewaltiger Denkfehler
hmmm...
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #18 am: 01.10.04 - 08:48:41 »
hmm,
ich weiß nicht, wie ich es mit der Suche für den Vornamen machen soll.

Es muss ja auf die Ergebnisse der Nachnamen durchgeführt werden.

Kann mir da jemand helfen?
Windows XP
Notes 6.5

Driri

  • Gast
Re: Dokumente vergleichen und ausgeben (FtSerach)
« Antwort #19 am: 01.10.04 - 09:12:09 »
Erweiter doch einfach das Suchkriterium :

Set dc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |"| & |Firstname ="| + doc.FirstName(0) + |"|,Nothing,0 )

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz