Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Christopher am 24.05.02 - 07:41:31

Titel: Frage zu Script!
Beitrag 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

Titel: Re: Frage zu Script!
Beitrag von: eknori (retired) am 24.05.02 - 07:59:05
Moin,

Set doc=collection.GetFirstDocument  ?? Und das bei jedem Document der Collection ??

Muss es nicht  heissen

Set doc=collection.GetNthDocument (i%) ??

Titel: Re: Frage zu Script!
Beitrag von: Axel am 24.05.02 - 08:14:05
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







Titel: Re: Frage zu Script!
Beitrag von: Christopher am 24.05.02 - 11:06:06
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
Titel: Re: Frage zu Script!
Beitrag von: Christopher am 24.05.02 - 11:13:13
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
Titel: Re: Frage zu Script!
Beitrag von: Silke am 24.05.02 - 11:33:28
Mal nachgefragt    wozu brauchst Du den Agenten ??? ??? Will ja dazulernen ;D

Silke  8) ???
Titel: Re: Frage zu Script!
Beitrag von: kwalli am 24.05.02 - 12:02:23
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
Titel: Re: Frage zu Script!
Beitrag von: Friese am 24.05.02 - 12:19:07
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
Titel: Re: Frage zu Script!
Beitrag von: Christopher am 24.05.02 - 12:28:56
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.
Titel: Re: Frage zu Script!
Beitrag von: Silke am 24.05.02 - 12:31:34
Aha danke  jetzt habe ich es glaube ich :-[


Werde es gleich in meine KN-DB übernehmen ;)

silke  8)
Titel: Re: Frage zu Script!
Beitrag von: Friese am 24.05.02 - 12:35:17
Hallo!

Fast vergessen: Zwischen dem vname und nname muß wohl auch noch ein " ".

Sprich

gname=vname + " " + nname  

Gruß aus Friesland
Titel: Re: Frage zu Script!
Beitrag von: Christopher am 24.05.02 - 12:47:09
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.