Hallo allerseits,
ich lese hier schon seit einiger Zeit mit und habe auch schon häufig meine Lösungen gefunden. Nun bin ich jedoch bei einem Problem wo ich so nicht weiter komme. Ich hoffe das mir jemand den (hoffentlich einfachen) Fehler aufzeigen kann.
Es geht um einen Script-Agenten (Lotus) der Dokumente an User verteilt (beim ausführen an den User der Ihn ausführt).
Soll: er soll nur 1 Dokument zuteilen.
Ist: er teilt 3 Dokumente zu.
Was mache ich falsch ??? ( Script siehe unten )
Vielen Dank schon mal im voraus - Gruß uka.
Das Script:
Option Public
Sub Initialize
REM Dieser Agent schreibt in ein Leserfeld und ins Agentenfeld der Kundenadresse den Usernamen der ausführenden Person
Dim sess As New notessession
Dim db As notesdatabase
Dim vw As notesview
Dim doc As notesdocument
Dim user As String
REM ********************************************************* Erweiterung für manuelle Zuteilung ****************************
Dim konfvw As notesview
Dim konfdoc As notesdocument
REM ********************************************************* ENDE Erweiterung für manuelle Zuteilung ****************************
REM Objekte zuweisen
Set db = sess.currentdatabase
Set vw = db.getview("zuteilen")
Set doc = vw.Getnthdocument(1)
REM ***************************************************** Erweiterung für manuelle Adresszuteilung **********************************
Set konfvw = db.getview("Konfiguration")
Set konfdoc = konfvw.getfirstdocument()
REM Finden des Konfigurationsdokuments in dieser DB
If Not(konfdoc Is Nothing) Then
REM Prüfen, ob manuelle Zuteilung aktiviert wurde
If konfdoc.zuteilung(0) = "Ja" Then Exit Sub
End If
REM ********************************************************* ENDE Erweiterung für manuelle Zuteilung ****************************
REM Solange doc objekt vorhanden sind und noch keine zuteilung von einem Datensatz vorgenommen wurde
While Not(doc Is Nothing)And(boolmark = False)
REM Versuchen backend in leserfeld usernamen zu schreiben
user = sess.username
If (doc.agent(0)<> "NICHT ZUGETEILT") Then
Call vw.refresh()
boolmark = False
Else
Call doc.replaceitemvalue("Agent",user)
REM Versuchen Dokument zu speichern
boolmark = doc.save(False,False)
End If
If (boolmark = False) Then
Set doc = vw.Getnthdocument(1)
End If
Wend
End Sub
Edit:
Wenn ich anstelle des vw.Getnthdocument(1) nun vw.Getfirstdocument() einsetze, ist es der gleiche Effekt.
Hallo,
erst einmal danke für die Antworten, die ich jetzt mal durchgehe:
@klauss
1. Der Debugger läuft ohne Fehler oder falsche Anzeigen durch (nur mit den Inhalten von einem Dokument).
2. Durchaus, wenn das Dokument dann einem Bearbeiter zugeteilt wurde, verschwindet es aus der Ansicht "zuteilen".
@m3 und Glombi
1. Dieses Script arbeitet (mit dieses Problemen) schon seit Jahren im Unternehmen. Die Performance-Frage ist hier eher vernachlässigbar, da wir einen Server(oversized) nur für diese Art von Datenbanken haben ... welcher insgesamt von 5-6 Leuten am Tag genutzt wird (Domino 8.5.2, 2x Xeon 6-Kerner, 16GB Ram).
2. Ich habe es nun mit deinem Tipp probiert, jedoch muss ich gestehen das ich bis auf Fehlermeldungen nichts mit dem Umschreiben erreiche. Dazu muss ich sagen, ich habe kaum Erfahrung mit LotusScript - nur das was ich mir ableiten kann und was die Hilfe hergibt.
Kannst du mir vielleicht noch einen Tipp geben, wie ich das Script evtl. umschreiben kann?
Dank & Gruß
Edit:
So zum Beispiel diese Script-Version:
- teilt nur noch 1 Dokument zu
- hat jedoch 2x Type Mismatch ( doc = collcetion.getfirstentry )
- holt immer das gleiche Dokument hoch
Option Public
Sub Initialize
REM Dieser Agent schreibt in ein Leserfeld und ins Agentenfeld der Kundenadresse den Usernamen der ausführenden Person
REM wird aufgerufen vom Agent (anrufenCall)
Dim sess As New notessession
Dim db As notesdatabase
Dim vw As notesview
Dim doc As notesdocument
Dim user As String
Dim collection As NotesViewEntryCollection
REM ********************************************************* Erweiterung für manuelle Zuteilung ****************************
Dim konfvw As notesview
Dim konfdoc As notesdocument
REM ********************************************************* ENDE Erweiterung für manuelle Zuteilung ****************************
REM Objekte zuweisen
Set db = sess.currentdatabase
Set vw = db.getview("zuteilen")
Set collection = vw.Allentries
Set doc = collection.getfirstentry
REM ***************************************************** Erweiterung für manuelle Adresszuteilung **********************************
Set konfvw = db.getview("Konfiguration")
Set konfdoc = konfvw.getfirstdocument()
REM Finden des Konfigurationsdokuments in dieser DB
If Not(konfdoc Is Nothing) Then
REM Prüfen, ob manuelle Zuteilung aktiviert wurde
If konfdoc.zuteilung(0) = "Ja" Then Exit Sub
End If
REM ********************************************************* ENDE Erweiterung für manuelle Zuteilung ****************************
REM Solange doc objekt vorhanden sind und noch keine zuteilung von einem Datensatz vorgenommen wurde
If Not doc.form(0) = "Kunde" Then Exit Sub
While Not(doc Is Nothing)And(boolmark = False)
REM Versuchen backend in leserfeld usernamen zu schreiben
user = sess.username
If (doc.agent(0)<> "NICHT ZUGETEILT") Then
Call vw.Refresh()
Set doc = collection.getfirstentry
boolmark = False
Else
Call doc.replaceitemvalue("Agent",user)
REM Versuchen Dokument zu speichern
boolmark = doc.save(False,False)
End If
Wend
End Sub