Das Notes Forum
Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: MrMagoo am 12.08.03 - 13:48:02
-
Hallo,
ich habe einen Agenten, der 1a läuft wenn ich den manuell starte. Wenn der Agent aber periodisch auf dem Server laufen soll, ist der immer in derselben Sekunde fertig in der er startet und hat irgendwie nix gemacht. Woran kann das liegen ???
Danke
-
Hi MrMagoo,
nur mal ne Idee: Hat der Server evtl. keine Rechte auf der Datenbank, auf der Agent laufen soll?
Gruß Henning
-
Danke hennig,
doch hat Managerrechte
-
sagt das Serverlogfile irgendwas aus?
-
Ich gehe mal von einem Script-Agent aus, wie greifst du da auf das Datenbankobjekt zu ?
Bzw. : Fragst du das Datenbankobjekt irgendwie ab ?
Beispiel : Wenn Du den Namen des Objekts hast und irgendwie vergleichen willst, dann enthält db.FilePath je nach Ausführung lokal oder auf dem Server verschiedene Werte.
lokal :
db.FilePath -> "mail\bmusterm.nsf"
Server :
db.FilePath -> "NOTESSERVER!!mail\bmusterm.nsf"
-
Also das Protokoll sagt:
Agent 'XXX' wurde am 12.08.2003 14:45:52 gestartet
Bearbeitet alle Dokumente in der Datenbank: insgesamt 198
198 Dokumente gefunden, die die Suchkriterien erfüllen
LotusScript Code ausgeführt
Agent 'XXX' wurde am 12.08.2003 14:45:53 beendet
@Diri, ja ist ein Scriptagent.
spreche 2 Datenbanken an
Set db = session.CurrentDatabase 'auf der der Agent läuft
Set db1 = New NotesDatabase "server", "Verzeichnis\DB" ) 'die andere DB
-
Hi,
ich bin zwar nicht der Script-Gott, aber vielleicht findet sich was, wenn du mal das Script hier postest.
-
Hi MrMagoo,
demzufolge macht er doch irgendwas. Wie lange dauert die Ausführung des manuell gestarteten Agenten?
Wo sind die Unterschiede im LogFile?
Wie Driri schon sagte, am besten, du postest mal das Script.
Gruß Henning
-
Hi,
das
"Set db1 = New NotesDatabase "server", "Verzeichnis\DB" ) "
kann bei einem Hintergrundagenten nicht funktionieren.
veruchmal folgendes:
set db1 = New NotesDatabase("","")
call db1.Open("", "Verzeichnis\DB.nsf" )
if not db1.IsOpen then
print "Die Datenbank Verzeichnis\DB.nsf konnte nicht geöffnet werden!"
exit sub
end if
Die Print Meldung wird dann im log.nsf des Servers ausgegeben.
Du kannst Print Meldungen auch zum Debuggen ins Log schreiben lassen, damit Du sehen kannst, wie weit er kommt.
Hintergrundagenten können keine DBs auf anderen Servern öffnen (auch der gleiche Server nicht). Daher muss man bei db1.Open als Server = "" eingegeben.
Andreas
-
hm ging leider nicht, auch im serverlog hat er ne andere Meldung
AMgr: Agent ('Agentname' in 'Verzeichnis\DB) Fehlermeldung: Error creating product object
kann mir jemand helfen ???
-
Poste doch mal das Script hier, das sollte einfach sein als raten ;D
-
Hallo Maggoo,
arbeitest Du mit Datumsoperationen im Script ?
Wenn auf dem Server (Version) andere Datumskonventionen gelten als lokal am Client muß man das beim Handling von Zeit- / Datumswerten berücksichtigen.
Gruß Holcomb
-
@Holcomb:
ja mache ich, das könnte es sein.
hier mal ne abgespeckte Version des Scripts
Sub Initialize
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase 'CurrentDB
Dim db1 As NotesDatabase 'DB1
Dim doc As NotesDocument
Dim col As NotesDocumentCollection
Dim subj As Variant 'YES oder NO
'Collection bauen: alle Dokumente die in den letzten 7 Tagen geändert wurden
Set db = session.CurrentDatabase
Set col = db.Search(" (@Today -(modified) )/(60*60*24) =<7",Nothing,0)
Set doc = col.GetFirstDocument
While Not (doc Is Nothing)
subj = doc.GetItemValue( "CurrentDB_Feld" )
If subj(0) = "YES" Then
Set db1 = New NotesDatabase("", "" )
Call db1.Open( "", "Verzeichnis\DB1.nsf" )
If Not db1.IsOpen Then
Print "Die Datenbank Verzeichnis\DB1.nsf
konnte nicht geöffnet werden!"
Exit Sub
End If
...
Wend
End Sub
-
Also, habe jetzt so ziemlich jede Variante ausprobiert, sogar auf die Datumsgeschichte verzichtet.
Aber sobald das Ding periodisch laufen soll, sagt er immer, im log File
AMgr: Agent ('Agentname' in 'Verzeichnis\Datenbank.nsf') Fehlermeldung: Error creating product object
hilfe ??? ???
-
Hi,
das Problem ist, dass man in Servergestützten Agenten KEINE UI-Klassen wie bspw. Dim workspace As New NotesUIWorkspace
verwenden darf!
Also lösche die und versuche es erneut.
Alternativ kannst Du die, wenn die unbedingt benötigt werden, auch als Variant deklarieren.
Andreas
-
@glombi: danke, aber ich benutze keien uiKlassen
aber hier jetzt mal das gesamte Script
Sub Initialize
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim db1 As NotesDatabase
Dim doc As NotesDocument
Dim doc1 As NotesDocument
Dim docB As NotesDocument
Dim col As NotesDocumentCollection
Dim subj As Variant
Dim subj1 As Variant
Dim ID_DA As Variant
Dim ID_O As Variant
Dim ID_DN As Variant
Dim Doc_ID As String
Dim NeueID As String
Dim CopyD_ID As String
Dim View_selection1 As String
Set db = session.CurrentDatabase
Set col = db.AllDocuments
Set doc = col.GetFirstDocument
While Not (doc Is Nothing)
subj = doc.GetItemValue( "Feld1" )
subj1 = doc.GetItemValue( "Feld2" )
'Dokument nach bestimmten Bedingungen
If subj(0) = "YES" Then
If subj1(0)="1" Then
'DB2 öffnen, hier gibt es, glaube ich die Probleme
Set db1 = New NotesDatabase("", "" )
Call db1.Open("","DB2")
If Not db1.IsOpen Then
Print "Die Datenbank DB2 konnte nicht geöffnet werden!!!"
Exit Sub
End If
'Dokument in DB2 suchen
Set doc1 = db1.GetDocumentByUNID( doc.GetItemValue ("CopyD_ID")( 0 ))
Call doc1.ReplaceItemValue ( "Doc_Deleted",1)
Call doc1.Save(True, False)
'Neues dok erstellen
Set docB = New NotesDocument( db1 )
Call doc.CopyAllItems( docB, True )
'Werte in neuem Dok setzen
ID_O = doc.GetItemValue( "Doc_ID" )
docB.DocO_ID= ID_O
docB.View_selection1="Wert setzen"
Call docB.Save( True, True )
Call docB.ComputeWithForm(False,False)
Call docB.Save( True, True )
ID_DN= docB.GetItemValue( "Doc_ID" )
doc.CopyD_ID= ID_DN
Call doc.Save( True, True )
End If
End If
Set doc = col.GetNextDocument(doc)
Wend
End Sub
-
Yoo,
@glombi: danke, aber ich benutze keien uiKlassen
aber hier jetzt mal das gesamte Script
Sub Initialize
Dim workspace As New NotesUIWorkspace
Das "Dim" bezieht sich aber auf eine UI-Klasse!!!
Gruss ...
Hoshee
-
AaaaaaaaaaaaaaaaHHHHHHHHHHHH
ja danke, das war es,
jetzt deklariere ich in der ersten Zeile etwas was ich gar nicht brauche und des kostet mich schon ein paar Stunden :P
aber nu gehts ja