Domino 9 und frühere Versionen > ND6: Entwicklung
Frage zu IsActivatable und GetAgent
Sabine:
Hallo,
ich habe einen Agenten geschrieben (Aufruf über die Menüleiste), der alle Maildatenbanken, auf einem bestimmten Server in einem bestimmten Verzeichnis liegen, durchforstet. Die Informationen, die er sich dort holt schreibe ich in meine DB wo der Agent läuft. Ich hole mir beispielsweise den Namen (xyz.nsf) und die Größe, dass klappt auch wunderbar, aber wenn ich aus den Mail-DB'en auslesen möchte, ob der OutOfOffice Agent aktiviert ist oder nicht, dann funktioniert das nicht.
Denn ich habe den Agenten nicht im Zugriff! Woran könnte das liegen?
Die Pfade vom Server, den Namen des Agenten und andere Angaben habe ich in meinem Profildokument gemacht. Zugriff habe ich auch auf alle Datenbanken, daran kann es nicht liegen.
Hier mein Agent:
--- Code: ---Sub Initialize
'Dieser Agent liest alle Namen der (Mail-) Datenbanken aus dem
'im Profildokument angegebenen Server und Verzeichnis heraus
'On Error Resume Next
Dim session As New NotesSession
Dim server As Variant
Dim verzeichnis As Variant
Dim agent As NotesAgent
Dim agentname As Variant
Dim stragentname As String
'Derzeitige Datenbank
Dim dbCurrent As NotesDatabase
Set dbCurrent = session.CurrentDatabase
'Profildokument
Dim pdoc As NotesDocument
Set pdoc = dbCurrent.GetProfileDocument("profil")
server = pdoc.GetItemValue( "Setup_Server_OoO" )
verzeichnis = pdoc.GetItemValue( "Setup_Verzeichnis_OoO" )
agentname = pdoc.GetItemValue( "Setup_AgentName" )
'Zuvor die alten Maildokumente löschen
Call Loeschen()
'Maildatenbanken
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim size As Double
Dim dbdir As New NotesDbDirectory(server(0))
Set db = dbdir.GetFirstDatabase(DATABASE)
While Not (db Is Nothing)
If Instr(db.FilePath, verzeichnis(0)) Then
If Not ( db.IsOpen ) Then
Call db.Open( "", "" )
End If
Set doc = dbCurrent.CreateDocument
stragentname = agentname(0)
Set agent = db.GetAgent(stragentname) '!!!!!! hier hat er den Agenten nicht!!! Da liegt sicherlich das Problem :-(
If agent.IsActivatable Then
doc.Merkmal = "OoO aktiv"
Else
doc.Merkmal = "OoO inaktiv"
End If
doc.Form = "Import"
doc.Maildatenbank = db.FileName
doc.Groesse = db.Size
Call doc.Save( True, True )
End If
Set db = dbdir.GetNextDatabase
Wend
End Sub
--- Ende Code ---
Dankeschön :)
Gruß Sabine
Tode:
Hast Du mindestens Designer- Rechte auf alle Mail- Datenbanken aller Benutzer ? wenn nicht, dann geht das so nicht, dann musst DU mit einem Server- basierten Agenten und "Run on behalf of" oder signatur mit dem Server arbeiten...
Tode
Sabine:
Hallo Tode,
die Datenbank läuft zunächst auf einem Testserver, wo nur 5 Testmaildatenbanken drauf stehen. Auf diese habe ich Zugriff als Manager. Daran kann es nicht liegen, da ich zuvor auch ein db.open ausgeführt habe und das Ergebnis auch auf True sich gesetzt hat. Habe die DB im vollen Zugriff :-(...
Gruß Sabine
Tode:
Dann kann ich mir nur noch vorstellen, dass Du in Deinem Profil- Dokument den Namen des Agenten falsch geschrieben hast...
Was anderes kann es fast nicht sein, das Script ist ja ziemlich einfach (unter anderem fehlt ein ErrorHandling...
Tode
Glombi:
Was sagt denn der Debugger zu stragentname?
Steht dort wirklich "OutOfOffice" drin?
Statt
If agent.IsActivatable Then
möchtest Du doch eher
If agent.IsEnabled Then
aufrufem, oder? Du willst doch wissen, ob der Agent aktiv ist,
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln