Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Christopher am 24.05.02 - 07:41:31
-
Hallo Leute,
ich habe folgenden Agenten programmiert. Wo mit ich überprüfen will ob es Nutzer mit diesem Namen in einer anderen DB schon gibt. Der Agente funktioniert auch wenn ich ein Dokument makiere ;D wenn ich mehrere Dokumente habe haut das nicht mehr so hin. Ich denke ich habe irgendwo noch einen Logik Fehler bin aber zur Zeit Blind 8) und seh es nicht
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim view As NotesView
Dim collection As NotesDocumentCollection
Set session = New notessession
Set db=session.currentdatabase
Set collection=db.UnprocessedDocuments
Set doc=collection.GetFirstDocument
For i=1 To collection.count
vname=doc.Firstname(0)
nname=doc.LastName(0)
gname=vname + nname
server = "ZKOMZMILDBW"
dbfile = "orgdb.nsf"
'OrgDB öffnen
Set db = New NotesDatabase( server, dbfile )
Set view = db.GetView( "($Users)" )
Set doc = view.GetDocumentByKey( gname )
If Not (doc Is Nothing) Then
'Felder übernehmen
Set db=session.currentdatabase
Set doc=collection.GetFirstDocument
doc.TName="1"
doc.Save True,False
Msgbox "Es gibt schon einen Nutzer mit dem Namen " + gname + " handelt es sich um die selbe Person?"
Else
Set db=session.currentdatabase
Set doc=collection.GetFirstDocument
'Msgbox"Kein Dokument im Verzeichnis BW gefunden!"
doc.TName="0"
doc.Save True,False
End If
Set doc=collection.GetNextDocument(doc)
Next
End Sub
-
Moin,
Set doc=collection.GetFirstDocument ?? Und das bei jedem Document der Collection ??
Muss es nicht heissen
Set doc=collection.GetNthDocument (i%) ??
-
Hi Christopher,
Du nimmst die Variable doc meines Erachtens für zwei verschiedene Dinge. Einmal in der Schleife, in der du die markierten Dokumente bearbeitest und einmal bei der Suche in einer Ansicht.
Axel
-
Hallo Eknori alter Hase ;D ,
Du hattest recht. Bin halt noch nich so fit in Script.
Danke Axel ich habe mal doc2 gesetzt ich weiß aber nicht ob das unbedingt erforderlich ist?
Laut Debuger wird doc2 nicht belegt.
Viele Grüße
Christopher
-
Das Script sieht jetzt so aus:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As notesDocument
Dim view As NotesView
Dim collection As NotesDocumentCollection
Set session = New notessession
Set db=session.currentdatabase
Set collection=db.UnprocessedDocuments
Set doc=collection.GetFirstDocument
For i=1 To collection.count
vname=doc.Firstname(0)
nname=doc.LastName(0)
gname=vname + nname
server = "ZKOMZMILDBW"
dbfile = "orgdb.nsf"
'OrgDB öffnen
Set db = New NotesDatabase( server, dbfile )
Set view = db.GetView( "($Users)" )
Set doc2 = view.GetDocumentByKey( gname )
If Not (doc2 Is Nothing) Then
'Felder übernehmen
Set db=session.currentdatabase
Set doc=collection.GetNthDocument (i)
doc.TName="1"
doc.Save True,False
Msgbox "Es gibt schon einen Nutzer mit dem Namen " + gname + " handelt es sich um die selbe Person?"
Else
Set db=session.currentdatabase
Set doc=collection.GetNthDocument (i)
'Msgbox"Kein Dokument im Verzeichnis BW gefunden!"
doc.TName="0"
doc.Save True,False
End If
Set doc = collection.GetNextDocument(doc)
Next
End Sub
-
Mal nachgefragt wozu brauchst Du den Agenten ??? ??? Will ja dazulernen ;D
Silke 8) ???
-
hi christopher,
du greifst auf 2 verschiedene db's zu, dann mußt du auch 2 verschiedene variablen deklarieren.
das ist dasselbe wie mit den "doc".
mfg
kwalli
-
Mit ein bißchen Phantasie wußte ich, was Du vorhast. Hast aber einiges doppelt gemoppelt.
So würde es glaube ich besser aussehen:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As notesDocument
Dim view As NotesView
Dim collection As NotesDocumentCollection
Set session = New notessession
Set db=session.currentdatabase
Set collection=db.UnprocessedDocuments
server = "ZKOMZMILDBW"
dbfile = "orgdb.nsf"
Set db2 = New NotesDatabase( server, dbfile )
For i=1 To collection.count
Set doc=collection.GetNthDocument (i)
vname=doc.Firstname(0)
nname=doc.LastName(0)
gname=vname + nname
Set view = db2.GetView( "($Users)" )
Set doc2 = view.GetDocumentByKey( gname )
If Not (doc2 Is Nothing) Then
'Felder übernehmen
doc.TName="1"
Msgbox "Es gibt schon einen Nutzer mit dem Namen " + gname + " handelt es sich um die selbe Person?"
Else
doc.TName="0"
Msgbox"Kein Dokument im Verzeichnis BW gefunden!"
End If
doc.Save True,False
Next
End Sub
-
Hallo Silke,
ich erstelle gerade eine DB für die Administatoren die neu Nutzer anfordern. Für jeden neuen Nutzer wird ein Dokument erfaßt. Bevor der Admin die Anforderung an mich sendet soll er vorher einen Namenstest machen.
Wenn es den Nutzer schon in unserer OrgDB gib bekommt er eine Meldung. Die Werte TName werden als Symbol in der Ansicht angezeigt. Grün für OK rot für nicht OK.
Wenn die Dokument bei mir sind exportiere ich per Script die Dokumente in eine Textdatei für die Registratur. Registrier die Nutzer überprüfe die Angaben in den Dokumenten und anschließen wird per Agent die Angaben Tel. Fax usw ins Verzeichnis bzw die OrgDB übernommen.
@Firse
danke für die Optimierung des Cod. Werde es gleich mal ausprobieren.
-
Aha danke jetzt habe ich es glaube ich :-[
Werde es gleich in meine KN-DB übernehmen ;)
silke 8)
-
Hallo!
Fast vergessen: Zwischen dem vname und nname muß wohl auch noch ein " ".
Sprich
gname=vname + " " + nname
Gruß aus Friesland
-
Ja Du hast recht ist aber nicht unbedingt in der Ansicht User erforderlich. (siehe Verseichnis)
Wenn Du eine Adress ohne Vornamen hast muß Du wiede die leerzeichen entfernen.