Der Agent läuft aif dem Server CN=Server4/O=MyDomain/C=COM in der Datenbank names.nsf. :)
Mit "session.CurrentDatabase.Server" sollte "CN=Server4/O=MyDomain/C=COM" zurückgegeben werden. :-:
Aus der Hilfe:
Read-only. The name of the server where a database resides.
Defined in
NotesDatabase
Data type
String
Syntax
To get: serverName$ = notesDatabase.Server
Usage
If the database is on a workstation, the property returns an empty string ("").
The database does not need to be open to use this property.
Ich bin auf den Server CN=Server4/O=MyDomain/C=COM in der names.nsf.
Wenn ICH mit meinem Notes-Client eine Notes_Datenbank auf einem Server öffne und eine Aktion in einer Ansicht aufrufe, bekomme ich den SERVER-Namen zurück.
Hier der Test-Code:
Sub Click(Source As Button)
Dim sess As New NotesSession
Msgbox sess.CurrentDatabase.Server , , "Test"
End Sub
Die Msgbox gibt mir den Servernamen zurück!!!
Hier mein Code:
Dim session As New NotesSession
Dim Currentdb As NotesDatabase
Dim db As NotesDatabase
Dim view As NotesView
Dim entry As NotesViewEntry
Dim vc As NotesViewEntryCollection
Dim doc As NotesDocument
Dim item As NotesItem
Dim item1 As NotesItem
'aktuelle Servername ermitteln
' CurrentServer = session.CurrentDatabase.Server 'auskommentiert "" wird zurückgegeben
CurrentServer = session.CurrentDatabase.parent.username 'Nothilfe
'log schreiben
fileNumber% = Freefile
Open "C:\temp\class.log" For Output As #1
Print #1, "Agent Start: " + Now()
Print #1, "CurrentServer: " + CurrentServer
'Variablen setzen
Set Currentdb = session.CurrentDatabase
Set view = Currentdb.getView("vwUMSCheck")
Set vc = view.AllEntries
Set entry = vc.GetFirstEntry()
'Für alle Entries der Ansicht
While Not (entry Is Nothing)
Set doc = entry.Document
If doc.Mailserver(0) = CurrentServer Then
Set db = New NotesDatabase("",doc.mailFile(0)+".nsf")
If Not db.IsOpen Then
On Error Goto fehler
Call db.open("",doc.mailFile(0)+".nsf")
End If
Set notesNoteCollection = db.CreateNoteCollection(False)
Call notesNoteCollection.SelectAllDesignElements( True )
Call notesNoteCollection.BuildCollection
'log
Print #1, "Scaning: " + doc.MailFile(0)
Print #1, Cstr(notesNoteCollection.Count) + " elements "
'Für alle DesignElements
nid = notesNoteCollection.GetFirstNoteID( )
For i = 1 To notesNoteCollection.Count
Set doc = db.GetDocumentByID(nid)
Set item = doc.getfirstitem("$Class")
If Not (item Is Nothing) Then
'log
Set item1 = doc.getfirstitem("$TITLE")
strItem = item1.Text
Print #1, "$Class found in: " + stritem
'HIER kommt später das Löschen der Inhalt von $Class
End If
nid = notesNoteCollection.GetNextNoteId(nid)
Next i
End If
weiter:
Set entry = vc.GetNextEntry(entry)
Wend
Close #1
Exit Sub
fehler:
Print #1, "FEHLER: " + doc.MailFile(0) + " könnte nicht geöffnet werden!"
Goto weiter
End Sub
Wie schon geschrieben der Agent wird auf dem Server gestartet aus der Menü Aktionen in der Datenbank names.nsf.
Ihr könnt sehen dass ich momentan folgende Nothilfe benütze:
CurrentServer = session.CurrentDatabase.parent.username
"zufällig" ist mein CurrentUser der Server selbst aber ich hätte es lieber Wasserdicht
@MadMetzger: ich will kein Eintrag in der Form: CurrentServer = "CN=Server4/O=MyDomain/C=COM"
@dirk_2909: ich bin local so dass dein code gibt ein "" zurück
@alle: danke für die mithilfe
So...
Habe auf einem SERVER eine Test-DB erstellt. Dort ist ein Agent ( "Manuell aus dem Menü Aktionen" - Laufziel keins) erstellt. Code s.o. .....
Dort bekomme ich den Servernamen zurück........
Wenn Du in einer LOKALEN DB den Agenten startest, ist Server = "" ( logisch ).
Du willst in Deinem Script den Wert im Feld "MailServer" mit dem Namen des Servers vergleichen, auf den Dein Agent aufgerufen wird.....
Das kannst Du mit session.CurrentDataBase.Server und/oder
Dim session As New NotesSession
Dim agent As NotesAgent
Dim server As String
Set agent = session.CurrentAgent
server = agent.ServerName
Gem. Deinen wiedersprüchlichen Angaben gibt es den SERVER-Namen zurück...
Wie schon geschrieben der Agent wird auf dem Server gestartet aus der Menü Aktionen in der Datenbank names.nsf.