Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mgubler am 04.03.09 - 18:28:15

Titel: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 04.03.09 - 18:28:15
Hallo zusammen,

ich habe nachfolgenden Agenten geschrieben der Daten zwischen zwei Datenbanken abgleichen soll.
Er schaut nach ob neue Tickets über die Datenbank A geschrieben wurden und gleicht die Daten dann mit Datenbank B ab.
Sollte vom Prinzip funktionieren, denke ich...
Tut es aber leider nicht.
Und ich erkenne den Fehler nicht.

Laut Agent-Log ist es ein unbekannter Fehler.
Es gibt auch keine Ausgabe auf der console.

Ich hoffe mir kann jemand von euch helfen?!?



Code
Sub Initialize
	Dim session As New NotesSession
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String
	Dim collection As NotesDocumentCollection
	Dim ViewCollection As NotesViewEntryCollection
	Dim ViewEntry As NotesViewEntry
	
	Dim SupportView As NotesView
	Dim TicketView As NotesView
	
	Dim TicketDoc As NotesDocument
	Dim SupportDoc As NotesDocument
	
	Dim SupportID As String
	Dim TicketID As String
	
	
	Set SupportDB = session.CurrentDatabase
	Set SupportView = SupportDB.GetView("(v_ReqNumber)")	
	Set SupportDoc = SupportView.GetFirstDocument
	
	iCounter = SupportView.AllEntries.Count
	Print iCounter + " Tickets zum abgleich mit der Ticket-DB in der Support-DB gefunden"
	
	Set TicketDB = session.GetDatabase("Notes","troubticket.nsf",False)
	Set TicketView = TicketDB.GetView("(v_ReqNumber)")
	
	On Error Goto ErrHandler
	
	iCounterX = 0
	While Not (SupportDoc Is Nothing)
		SupportID = SupportDoc.ReqNumber(0)
		selection = |@Contains( ReqNumber; "| + SupportID+ |" )|
		Print "Suche in der Ticket-DB nach dem Ticket " + SupportID
		Set collection = TicketDB.Search( selection, dateTime, 0 )		
		Set TicketDoc = collection.GetFirstDocument()
		
		If (TicketDoc Is Nothing) Then
			Print "Ticket " + SupportID + " wurde nicht in der Ticket-DB gefunden! Nächstes Dokument (" + iCounterX + " / "+iCounter+")"
			Goto EndeIf
		End If
		
		While Not TicketDoc Is Nothing
			TicketID = TicketDoc.ReqNumber(0)
			If (SupportID = TicketID) Then
				tmpString=TicketDoc.GetItemValue("solution")
				Call SupportDoc.ReplaceItemValue("solution", tmpString)
				
				tmpString=TicketDoc.GetItemValue("tx_usercomment")
				Call SupportDoc.ReplaceItemValue("tx_usercomment", tmpString)
				
				tmpString=TicketDoc.GetItemValue("Status")
				Call SupportDoc.ReplaceItemValue("Status", tmpString)
				
				tmpString=TicketDoc.GetItemValue("supporter")
				Call SupportDoc.ReplaceItemValue("supporter",tmpString)
				
				Call SupportDoc.Save(True, True)				
				Goto EndeIf
			End If			
		Wend
EndeIf:	
		Set SupportDoc = SupportView.GetNextDocument(SupportDoc)
		iCounterX = iCounterX +1
	Wend
	
	Print "Alle Tickets (" + iCounterX +" / " + iCounter + ") bearbeitet. ENDE"
ErrHandler:                 ' Error-handling routine
	Print "Error " & Err & " at line number " &Erl
	Resume Next
Ende:
End Sub
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: s_Old am 04.03.09 - 19:23:58
An welcher Stelle haut´s ihn denn aus den Latschen -> sollte das nicht durch die Fehlerbehandlung ersichtlich sein: DEBUGGER!
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 04.03.09 - 19:49:43
Das ist es ja.
Lasse ich den Debugger laufen und starte den Agent über das Menü gibt es keine Probleme.
Ich weiß es also nicht, wo das Problem liegt =(
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: flaite am 04.03.09 - 20:15:38
Zitat
Das ist es ja.
Lasse ich den Debugger laufen und starte den Agent über das Menü gibt es keine Probleme.
Ich weiß es also nicht, wo das Problem liegt =(
Wie läßt du den Agenten sonst starten? Zeitgesteuert oder so.
Schau auf die Serverkonsole  oder ins Log.nsf. Da könnten sich Meldungen finden.
Vielleicht fehlen dem Server irgendwelche Rechte. Z.B. auf die Ticket-Datenbank.

Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: koehlerbv am 04.03.09 - 21:14:10
... Tut es aber leider nicht ...
... Laut Agent-Log ist es ein unbekannter Fehler ...

Na, das sind alle tolle Hinweise, die Du für die hilfebereite Community bereit stellst.

Aus Deinen unklaren Angaben postuliere ich jetzt mal:
- Der Agent tut, was er soll, wenn er über den Client ausgeführt wird.
- Er tut nicht, wenn er scheduled läuft.

Du instantiierst da alle mögliche Objekte, ohne deren Verfügbarkeit zu prüfen: Das ist schon mal extrem schlecht. Allein, wenn Du das mal protokollieren würdest, kämst Du auch erheblich näher an die Stelle heran, die den Fehler wirft.

Wenn Du nähere Informationen hast, die nur Du beibringen kannst, dann wirst Du vermutlich schon selbst den Fehler finden, ansonsten gibt es hier schnelle Hilfe.

Bernhard
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 07:07:52
Guten Morgen,

ich habe mal das Logging erweitert.
Nun erhalte ich folgenden Fehler: Unknown trigger and search type; agent may be corrupt.

Beide Datenbanken sind mit der Server-ID signiert.
Der Agent läuft "on behalf of" Notes.
Die Security habe ich schon von 0 auf 2 gestellt
Somit sind Zugriffsrechte ausgeschlossen, denke ich.

Zumal es einen anderen Agenten gibt, der läuft mit denselben Rechten, nur ohne behalf of mit Security 0.
Er kopiert Dokumente von A nach B.
Dieser scheduled Agent läuft ohne Probleme.

Im Agent-Log wird mir auch keine Fehlerzeile angezeigt.

Hier nochmals der komplette Code:

Code
Sub Initialize
	Dim session As New NotesSession
	Dim agentLog As New NotesLog("Agent log")
	
	Call agentLog.OpenAgentLog
	Call agentLog.LogAction( "Variablendeklaration")
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String
	Dim collection As NotesDocumentCollection
	Dim ViewCollection As NotesViewEntryCollection
	Dim ViewEntry As NotesViewEntry
	
	Dim SupportView As NotesView
	Dim TicketView As NotesView
	
	Dim TicketDoc As NotesDocument
	Dim SupportDoc As NotesDocument
	
	Dim SupportID As String
	Dim TicketID As String
	
	Call agentLog.LogAction( "SupportDB zuweisen")
	Set SupportDB = session.CurrentDatabase
	Call agentLog.LogAction( "View aus der Support DB holen")
	Set SupportView = SupportDB.GetView("(v_ReqNumber)")	
	Call agentLog.LogAction( "Erstes Dok der View aus der Support DB holen")	
	Set SupportDoc = SupportView.GetFirstDocument
	
	Call agentLog.LogAction( "Max Count der View")
	iCounter = SupportView.AllEntries.Count
	Print iCounter + " Tickets zum abgleich mit der Ticket-DB in der Support-DB gefunden"
	
	Call agentLog.LogAction( "Ticket-DB holen")
	Set TicketDB = session.GetDatabase("Maria_Notes","it-troubticket.nsf",False)
	Call agentLog.LogAction( "View aus der Ticket-DB holen")	
	Set TicketView = TicketDB.GetView("(v_ReqNumber)")
	
	On Error Goto ErrHandler
	
	iCounterX = 0
	Call agentLog.LogAction( "Solange SupportDocs vorhanden sind (WEND Eintritt)")
	While Not (SupportDoc Is Nothing)
		Call agentLog.LogAction( "Support-ID holen")
		SupportID = SupportDoc.ReqNumber(0)
		Call agentLog.LogAction( "Support-ID: " + SupoortID)
		Call agentLog.LogAction( "Selektion zusammensetzen")
		selection = |@Contains( ReqNumber; "| + SupportID+ |" )|
		Print "Suche in der Ticket-DB nach dem Ticket " + SupportID
		
		Call agentLog.LogAction( "Collection bilden indem Selection in der TicketDB gesucht wird")
		Set collection = TicketDB.Search( selection, dateTime, 0 )		
		Call agentLog.LogAction( "Erstes (und einziges) Dokument aus der Collection holen")
		Set TicketDoc = collection.GetFirstDocument()
		
		Call agentLog.LogAction( "Prüfung ob Dokument in TicketDB vorhanden")
		If (TicketDoc Is Nothing) Then
			Call agentLog.LogAction( "Ticket mit der Support-ID " + SupportID + " in der TIcketDB nicht gefunden!")
			Print "Ticket " + SupportID + " wurde nicht in der Ticket-DB gefunden! Nächstes Dokument (" + iCounterX + " / "+iCounter+")"
			Call agentLog.LogAction( "Nächstes Dokument nehmen")
			Goto EndeIf
		End If
		
		Call agentLog.LogAction( "While TicketDoc is not nothing")
		While Not TicketDoc Is Nothing
			Call agentLog.LogAction( "Ticket-ID holen")
			TicketID = TicketDoc.ReqNumber(0)
			Call agentLog.LogAction( "Ticket-ID mit Support-ID vergleichen")
			If (SupportID = TicketID) Then
				Call agentLog.LogAction( "Ticket-ID == Support-ID")
				Call agentLog.LogAction( "Solution holen")
				tmpString=TicketDoc.GetItemValue("solution")
				Call agentLog.LogAction( "Solution in Dok schreiben")
				Call SupportDoc.ReplaceItemValue("solution", tmpString)
				
				Call agentLog.LogAction( "Kommentar für den Benutzer holen")
				tmpString=TicketDoc.GetItemValue("tx_usercomment")
				Call agentLog.LogAction( "Kommentar für den Benutzer schreiben")
				Call SupportDoc.ReplaceItemValue("tx_usercomment", tmpString)
				
				Call agentLog.LogAction( "Status holen")
				tmpString=TicketDoc.GetItemValue("Status")
				Call agentLog.LogAction( "Status schreiben")
				Call SupportDoc.ReplaceItemValue("Status", tmpString)
				
				Call agentLog.LogAction( "Supporter holen")
				tmpString=TicketDoc.GetItemValue("supporter")
				Call agentLog.LogAction( "Supporter schreiben")
				Call SupportDoc.ReplaceItemValue("supporter",tmpString)
				
				Call agentLog.LogAction( "Dok speichern")
				Call SupportDoc.Save(True, True)				
				Goto EndeIf
			End If			
		Wend
EndeIf:	
		Call agentLog.LogAction( "Nächstes SupportDoc")
		Set SupportDoc = SupportView.GetNextDocument(SupportDoc)
		iCounterX = iCounterX +1
	Wend
	
	Print "Alle Tickets (" + iCounterX +" / " + iCounter + ") bearbeitet. ENDE"
ErrHandler:                 ' Error-handling routine
	Call agentLog.LogAction( "Fehler in Zeile " & Erl)
	Print "Error " & Err & " at line number " &Erl
	Resume Next
Ende:
	Call agentLog.Close
End Sub
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DAU-in am 05.03.09 - 07:43:20
Was ist denn als Ziel des Agenten eingestellt?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 08:03:52
Als Ziel ist "All Documents" eingestellt. Aber auch none oder "changed Documents" ndert meines Erachtens nichts daran!
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: ata am 05.03.09 - 08:21:50
Code
Der Agent läuft "on behalf of" Notes.

??? Wer ist "Notes" - wozu das - das macht man, wenn man die ID eines bestimmten Users für die Ausführung verwenden will. Ist das so?

Toni
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 08:34:31
Notes ist der Name unseres Servers. Den habe ich angegeben weil er sebst die meisten Rechte hat
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: ata am 05.03.09 - 09:27:28
... und der heißt tatsächlich nur "Notes"?

Toni
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 09:42:49
Nein, "Maria_Notes". Ich habe das gerade mal angepasst!War mein Fehler! Aber trotz allem laeuft es nicht
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: ata am 05.03.09 - 14:31:39
... kein hierarchischer Name???

Toni
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 15:05:22
Doch, hatte es nur weg gelassen: Maria_Notes/Maria-Hilf GmbH.  Das ist er komplett. Bislang habe ich nur immer "Maria_Notes" eingegeben. Die Datenbanken hat er trotz allem gefunden!
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 05.03.09 - 15:27:15
Schön das wir jetzt wissen wo Du Arbeitest...


Kontrollier bitte nochmal, wer die DB signiert hat.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 15:36:55
Die Datenbank habe ich mit der Server-ID signieren lassen.
Der Server selbst hat ja die meisten Rechte.
Ich habe im Agentlog.nsf auch keine Fehlereinträge stehen...
Und das obwohl die angelegt werden sollten!
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 05.03.09 - 15:44:13
Der Agent muss erstmal starten, bevor er etwas tun kann.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 15:48:21
wenn ich mir den nachfolgenden code anschaue, dann passt das doch:

Code
Sub Initialize
	Dim session As New NotesSession
	Dim agentLog As New NotesLog("Agent log")
	
	Call agentLog.OpenAgentLog
	Call agentLog.LogAction( "Variablendeklaration")
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String

Zuerst sage ich Ihm das er das Agent Log öffnen soll und dann das er dort reinschreiben soll...
Oder sehe ich das falsch?!?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 05.03.09 - 15:54:32
Was habe ich gesagt? Der Agent startet ganrnicht erst!!

Die Laufbedingungen des Agenten dürften nicht stimmen.

Also:

Wie soll der Agent aufgerufen werden?

Ein kleines Beispiel (http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/ae3be013ec2c4b0285256b0b006e252a?OpenDocument)

So ich mach jetzt Feierabend...
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 05.03.09 - 15:56:17
Der Agent soll alle 15 Minuten laufen.
Er kann im Prinzip auf alle Dokumente in der DB zugreifen, da der Rest ja über eine View und eine Collection gemacht wird.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 05.03.09 - 15:59:14
Also hast Du durch Zeitplan -> mehrmals am Tag eigestellt und einen Zeitplan eingerichtet?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 11:06:55
Hallo,

sorry das ich erst jetzt antworte.
Ich hatte erst jetzt wieder Zeit um mich dem Problem zu widmen.

Genau, ich habe gesagt, der Agent soll mehrfach am Tag laufen (zum Test alle 5 Minuten).
Das AgentLog zeigt mir an, dass der, sofern manuell gestartet ohne Probleme durchläuft, nur sobald ich den Agenten scheduled laufen lasse, bricht er ohne erkennbaren Fehler ab.
Ich habe das Script schon so geändert das es mir schrittweise Log-Einträge erzeugt.
Nur schein irgendwas in der DIM-Region nicht zu stimmen, denn schon der erste Eintrag wird nicht ins Log geschrieben.

Ergo muss ich irgendwas ansprechen was es im Scheduled-Mode nicht gibt.
Nur habe ich ehrlich gesagt, leider keine Ahnung, wie ich das Filtern soll.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 11:33:56
Wie wäre es, wenn Du

On Error Goto...

als allererstes, also vor allem anderen stellen würdest? Und nicht erst mittendrin?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: dirk_2909 am 11.03.09 - 11:35:31
Hallo Marc,

hast Du evtl. UI-Klassen eingebunden?

(hoffe nicht ;-) )
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 12:43:09
Wenn der gepostete Code der Richtige ist, dann hat er keine UI-Klassen eingebunden.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 12:55:27
Hallo zusammen,

@Dirk_2909:
Nein, ich habe keine UI Klassen angesprochen.
Die werden ja in einem solchen Agenten nicht angesprochen bzw. erkannt.
Aber ich habe keine Ahnung wieso der Agent nicht läuft.
Ich hatte es auch schon mit PRINT Befehlen versucht aber wie gesagt, schon im DIM scheint alles scief zu gehen.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DAU-in am 11.03.09 - 13:00:33
Darf derjenige, der den Agenten signiert hat, scheduled Agents laufen lassen?
Und der Agent ist auch aktiviert?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 13:03:34
Ja, ich bin als Admin eingetragen und darf auch scheduled Agenten laufen lassen.
Und der Agent st auch enabled.

Dasselbe Phänomen habe ich ja auch, wenn der Agent bzw. die ganze Datenbank vom Server oder Administrator signiert wurde.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 13:13:23
Hast Du inzwischen den on error goto nach ganz oben verfrachtet?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 13:15:27
ja, habe ich. aber es ist noch immer kein output erfolgt.
ich habe die ganze zeit die console laufen.
im Log (rechte Maustasta auf dem Agenten) steht nur:

Started running agent 'a_Syncro' on 11.03.2009 13:09:28
Running on all documents in database: 34 total
Found 34 document(s) that match search criteria
ERROR: Unknown LotusScript Error.
Ran LotusScript code
Done running agent 'a_Syncro' on 11.03.2009 13:09:28


Aber auf der Console nichts!!!
Noch nicht mal ein einfaches Print geht!

 :-:
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: koehlerbv am 11.03.09 - 13:36:51
Bring mal diese Zeile
Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
syntaktisch in Ordnung - nur, um auf Nummer sicher zu gehen.

Bernhard
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 13:42:00
Äh, schau auch mal in der log.nsf nach, Bitte.

Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 13:57:02
@Bernhard:
Ich habe die Zeile nun wie folgt angepasst:
   Dim dateTime As New NotesDateTime("")
   dateTime.LocalTime = Datenumber(2000, 1, 1 )

@DerAndre:
In der log.nsf steht absolut nichts von diesem Agenten.

Aber warten wir mal die nächsten paar Minuten ab.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 14:27:51
Kannst Dir die Wartezeit ja damit (http://www-10.lotus.com/ldd/46dom.nsf/7e6c7e584a76331b85256a46006f083e/574c99ccb345839185256976004e811e?OpenDocument) vertreiben...
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 14:54:07
Kurzer Zwischenbericht:

Leider noch immer ohne Erfolg.
Weder gibt es einen Eintrag im agentlog.nsf oder im log.nsf

Also lag es auch nicht an dem Datetime, vermute ich.
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: WernerMo am 11.03.09 - 15:02:27
Hallo

kann es ein Rechteproblem sein?
Darf der Signierer des Agenten auf dem Server...?
Musste unter V6 der Signiere nicht auch den Server auf dem der Agent läuft als Homeserver eingetragen haben - oder wie war das unter 6?

Gruß Werner
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: koehlerbv am 11.03.09 - 15:03:55
Die Meldung im Agent-Protokoll bzw. das Fehlen von Aussagen im Log spricht mittlerweile gegen ein Rechteproblem. Der Agent läuft ja an und meldet dann "Unknown LotusScript Error" ...

Bernhard
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 11.03.09 - 15:26:19
Hm...

schonmal den Code in einen neuen Agenten kopiert und getestet?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 11.03.09 - 15:28:14
Die Rechts-Problematik hatte ich bereits ausgeschlossen, da ja auch der vom Admin signierte Agent Fehler produziert.

Ich bin gerade dabei den Agenten Zeile für Zeile neu zu schreiben!
Mal sehen wo der Fehler genau liegt.
Ich werde ihn dann hier veröffentlichen!
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 12.03.09 - 09:27:18
Guten Morgen zusammen!

Nachdem ich nun den Agenten Schritt für Schritt neu geschrieben habe funktioniert er.
Nachfolgend nun der aktuelle (funktionstüchtige) Code:

Code
Sub Initialize
	
	On Error Goto ErrHandler
	Dim session As New NotesSession
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	Dim TicketView As NotesView
	Dim SupportView As NotesView
	Dim MyAgent As NotesAgent
	Dim dateTime As New NotesDateTime("")
	Dim selection As String
	Dim collection As NotesDocumentCollection
	Dim TicketDoc As NotesDocument
	Dim SupportDoc As NotesDocument
	Dim SupportID As String
	Dim TicketID As String
	
	dateTime.LocalTime = Datenumber(2000, 1, 1)
	
	Set SupportDB = session.CurrentDatabase	
	Set MyAgent = session.CurrentAgent
	
	LogIt("Start des Agenten")
	
	Set SupportView = SupportDB.GetView("(v_ReqNumber)")
	iCounter = SupportView.AllEntries.Count
	LogIt(iCounter + " Dokumente zum Bearbeiten gefunden")
	LogIt("Hole erstes Dokument aus der SupportTracking Datenbank")
	Set SupportDoc = SupportView.GetFirstDocument
	
	LogIt( "Ticket-DB holen")
	Set TicketDB = session.GetDatabase("Maria_Notes","it-troubticket.nsf",False)
	LogIt( "View aus der Ticket-DB holen")	
	Set TicketView = TicketDB.GetView("(v_ReqNumber)")
	
	While Not (SupportDoc Is Nothing)
		LogIt( "Support-ID holen")
		SupportID = SupportDoc.ReqNumber(0)
		LogIt( "Support-ID: " + SupportID)
		LogIt( "Selektion zusammensetzen")
		selection = |@Contains( ReqNumber; "| + SupportID+ |" )|
		Print "Suche in der TroubelTicket-Datenbank Ticket " + SupportID
		
		LogIt( "Collection bilden indem Selection in der TroubleTicket-Datenbank gesucht wird")
		Set collection = TicketDB.Search( selection, dateTime, 0 )		
		LogIt( "Erstes (und einziges) Dokument aus der Collection holen")
		Set TicketDoc = collection.GetFirstDocument()
		
		LogIt( "Prüfung ob Dokument in TicketDB vorhanden")
		If (TicketDoc Is Nothing) Then
			LogIt( "Ticket mit der Support-ID " + SupportID + " in der TIcketDB nicht gefunden!")
			Print "Ticket " + SupportID + " wurde nicht in der Ticket-DB gefunden! Nächstes Dokument (" + iCounterX + " / "+iCounter+")"
			LogIt( "Nächstes Dokument nehmen")
			Goto EndeIf
		End If
		
		LogIt( "While TicketDoc is not nothing")
		While Not TicketDoc Is Nothing
			LogIt( "Ticket-ID holen")
			TicketID = TicketDoc.ReqNumber(0)
			LogIt( "Ticket-ID mit Support-ID vergleichen")
			If (SupportID = TicketID) Then
				LogIt( "Ticket-ID == Support-ID ("+ SupportID +")")
				LogIt( "Solution holen ("+ SupportID +")")
				tmpString=TicketDoc.GetItemValue("solution")
				LogIt( "Solution in Dok schreiben ("+ SupportID +")")
				Call SupportDoc.ReplaceItemValue("solution", tmpString)
				
				LogIt( "Kommentar für den Benutzer holen ("+ SupportID +")")
				tmpString=TicketDoc.GetItemValue("tx_usercomment")
				LogIt( "Kommentar für den Benutzer schreiben ("+ SupportID +")")
				Call SupportDoc.ReplaceItemValue("tx_usercomment", tmpString)
				
				LogIt( "Status holen ("+ SupportID +")")
				tmpString=TicketDoc.GetItemValue("Status")
				LogIt( "Status schreiben ("+ SupportID +")")
				Call SupportDoc.ReplaceItemValue("Status", tmpString)
				
				LogIt( "Supporter holen ("+ SupportID +")")
				tmpString=TicketDoc.GetItemValue("supporter")
				LogIt( "Supporter schreiben ("+ SupportID +")")
				Call SupportDoc.ReplaceItemValue("supporter",tmpString)
				
				LogIt( "Dok speichern ("+ SupportID +")")
				Call SupportDoc.Save(True, True)				
				Goto EndeIf
			End If			
		Wend
EndeIf:	
		LogIt( "Nächstes SupportDoc holen")
		Set SupportDoc = SupportView.GetNextDocument(SupportDoc)
		iCounterX = iCounterX +1
	Wend
	
	LogIt("Beenden des Agenten")	
	
ErrHandler:                 ' Error-handling routine
	If (Err <> 0) Then
		LogIt( "Fehler in Zeile " & Erl & " Fehler: " & Error$)
		Print "Error " & Error$ & " at line number " &Erl
		Exit Sub		
	End If
End Sub

Sub LogIt(strText)
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim currentLog As NotesLog
	Set db = session.CurrentDatabase
	Set agent = session.CurrentAgent
	Set currentLog = New NotesLog ( agent.Name + "-Agent in Datenbank " + db.Title + " auf " + db.Server )
	Call currentLog.OpenNotesLog( "Maria_Notes/Maria-Hilf GmbH", "agentlog.nsf" )
	currentLog.LogAction(strText)
	Print agent.Name & "  ||  " & strText
	Call currentLog.Close
End Sub


Wie man dem Code entnehmen kann, habe ich gar nicht so viel geändert!
Ich habe nur die folgenden Klassen ausgelassen:
 - NotesDirectory
 - NotesViewEntryCollection
 - NotesViewEntry

Ergo hat sich nicht so viel verändert; aber scheinbar genug um den Agenten am run zu hindern.

Trotz allem möchte ich mich an dieser Stelle für die tatkräftige Unterstützung der beteiligten Personen bedanken.

Gruß aus Krefeld =)
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: DerAndre am 12.03.09 - 09:30:18
Hast Du jetzt einen neuen Agenten genommen oder das ganze in dem alten neu Geschrieben?
Titel: Re: Agent funktioniert nicht ?!?
Beitrag von: mgubler am 12.03.09 - 09:35:48
Ich habe denselben Agenten nur umgeschrieben.
Alles unnötige raus und von neuem beginnen =)