Autor Thema: Agent funktioniert nicht  (Gelesen 3186 mal)

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Agent funktioniert nicht
« am: 12.06.08 - 10:34:31 »
Hallo Leute,
habe schon viel gesucht und auch viel gelesen aber irgendwie nicht das richtige gefunden.
Also:
Habe einen Agenten geschrieben. Wenn man in der Maske "Eingabe" das Feld ErrinerungDatum füllt, dann soll an diesem Tag automatisch eine E-Mail an den Autor gesendet werden.
Bei der Dokumentenauswahl habe ich also alle Masken des Typs "Eingabe" eingetragen und folgenden Code zusammen gebastelt.

Code
Sub Initialize
	Dim uiws As New notesuiworkspace	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim senddoc As NotesDocument
	Dim rtItem As NotesRichTextItem
	
	Dim strSubject As String
	Dim strDocName As String
	Dim strBody As Variant
	Dim strEmpfaenger As String
	
	Dim datum As Notesdatetime
	Dim strDatum As String
	Dim tmp As Variant
	
	Set db = session.Currentdatabase	
	Set doc = uiws.Currentdocument.Document
	Set senddoc = New NotesDocument(db)
	
	Set datum= New notesdatetime (Today)
	strDatum = Format(Day(datum.Dateonly),"00") & "." & Format(Month(datum.Dateonly),"00") & "." & Format(Year(datum.Dateonly),"0000")
	tmp = doc.GetItemValue("ErinnerungDatum")
	strDocName = doc.GetItemValue("Dokumentname")(0) 
	
	If tmp(0) = strdatum Then
		
		Set rtitem = New NotesRichTextItem( senddoc, "Body" )
		strEmpfaenger = doc.GetItemValue("Autor")(0)  
		With senddoc
			.Form = "Memo"
			.SendTo = doc.GetItemValue("Autor")(0)
			.SendFrom = "Test@Test.de"
			.Principal = "Test@Test.de"
			.DisplaySent ="Test"
			.Subject = "Automatische Erinnerung - " + strDocName
		End With			
		strBody = "Autmatische Erinnerung! Folgen Sie dem Link um zum Dokument zu gelangen" & Chr(13) & Chr(13)
		Call rtitem.AppendText(strBody)
		Call rtItem.AppendDocLink(doc, doc.UniversalID)
		'senden
		Call senddoc.send(False)	
	End If
End Sub

Nur leider passiert nichts wenn ich den Agenten ausführe. Habe es auch mit Formelsprache probiert, allerdings weiß ich dort nicht, wie ich die Felder SendFrom, Principal usw. ausfüllen kann. Deshalb wollte ich es mit LS probieren aber irgendwie passiert halt gar nichts. Dabei ist zu sagen, dass der Code so in der Maske selber einbandfrei funktioniert, nur im Agenten irgendwie nicht. Kann es sein, dass ich das doc aders setzen muss?

Kann vll. jemand helfen???

Vielen Dank im voraus
« Letzte Änderung: 12.06.08 - 10:36:04 von DannyCrown »
MfG Daniel O0

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Agent funktioniert nicht
« Antwort #1 am: 12.06.08 - 10:41:22 »
1) "ErinnerungDatum" ist hoffentlich ein Datums- und kein Textfeld (Forumssuche für die Begründung, warum das schlecht wäre)

2) Wenn "ErinnerungDatum" ein Datumsfeld ist, wird der Vergleich mit einem String "If tmp(0) = strdatum Then" nicht klappen.

3) Du liest das den Datumswert aus dem aktuell im UI geöffneten Dokument aus, ich habe aber eher den Eindruck, dass Du einen zeitgesteuerten Agent willst, der einmal in der Nacht läuft und die Mails verschickt. Da bist Du mit "Set doc = uiws.Currentdocument.Document" am Holzweg und willst Dir eher notesView.GetAllDocumentsByKey bzw. notesView.FTSearch ansehen
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Agent funktioniert nicht
« Antwort #2 am: 12.06.08 - 10:43:22 »
und bau noch ein prints ein und unbedingt eine Fehlerbehandlung.
Dann siehst Du was klappt und was nicht klappt.

Dann wird auch die meldung "Agent funktioniert" nicht ein wenig genauer ;-)

Noch ein paar Fragen:
Wie soll der Agent gestartet werden?
Wo soll er laufen?
....
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Re: Agent funktioniert nicht
« Antwort #3 am: 12.06.08 - 10:52:18 »
also als erstes, ja ErinnerungDatum ist ein Datumsfeld.
Deine Intention war schon ganz richtig, der Agent soll einmal früh morgens gestartet werden und dann überprüfen, ob das Erinnerungsdatum mit dem heutigen Datum übereinstimmt außerdem soll der Agent auf dem Server laufen.
Danke für die schnelle Hilfe. Dann werd ich mir mal notesView.GetAllDocumentsByKey bzw. notesView.FTSearch ansehen.
MfG Daniel O0

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Agent funktioniert nicht
« Antwort #4 am: 12.06.08 - 11:04:37 »
Zitat
soll einmal früh morgens gestartet werden

Wie soll er gestartet werden?

Ich denke mal periodisch enmal am Tag

Dann entferne aus dem Script alle UI-Objekte .

Den Datumsvergleich kannst Du auch einfacher machen:

Code
		
	If doc.GetItemValue("ErinnerungDatum")(0) >= Date Then
..

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent funktioniert nicht
« Antwort #5 am: 12.06.08 - 11:07:59 »
Dieser ganze Teil ist Unfug - Du kannst Du nicht einen String mit einem variant vom Typ Date/Time vergleichen!

Code
Set datum= New notesdatetime (Today)
	strDatum = Format(Day(datum.Dateonly),"00") & "." & Format(Month(datum.Dateonly),"00") & "." & Format(Year(datum.Dateonly),"0000")
	tmp = doc.GetItemValue("ErinnerungDatum")
	strDocName = doc.GetItemValue("Dokumentname")(0) 
	
	If tmp(0) = strdatum Then

Es reicht ein schlichtes
If doc.ErinnerungsDatum (0) = Today then ...

Und wie Dirk schon schrieb - UI-Klassen sind in einem scheduled Agent unzulässig.

Bernhard

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Agent funktioniert nicht
« Antwort #6 am: 12.06.08 - 11:37:12 »
aber das mit dem Datumsvergleich habe ich doch auch beschrieben  :'(
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent funktioniert nicht
« Antwort #7 am: 12.06.08 - 11:40:50 »
Dabei hast Du aber offen gelassen, was "Date" ist  ;)

Bernhard

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Re: Agent funktioniert nicht
« Antwort #8 am: 12.06.08 - 11:45:02 »
oh, danke!
Hab sehr wenig Ahnung von Agenten, aber es ist richtig, dass der periodisch einmal am morgen durchlaufen werden soll.
MfG Daniel O0

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Re: Agent funktioniert nicht
« Antwort #9 am: 12.06.08 - 13:12:11 »
mh, kann mir vll. nochmal jemand helfen bei der getDocumentByKey? kriege das nämlich irgendwie nicht hin.

Also hab jetzt mal einfach ne Ansicht erstellt in der alle Dokumente der Form "Eingang" drin sind und da gibt es eine Spalte in der die Nummern angezeigt werden. Nur weiß ich jetzt nicht wirklich, wie ich die Ansicht bei getDocumentByKey anwenden muss. Hier mal was, was ich ganz einfach mal probiert habe:

Code
Dim dc As NotesDocumentCollection
	Dim vw As NotesView
	Dim arr(4) As Integer
	Dim i As Integer
	For i=0 To 4
		arr(i)=i+1
	Next
	Set vw = db.GetView("vwNeueDokumente")
	Set dc = vw.GetAllDocumentsByKey(arr)
	Set doc = dc.GetFirstDocument
	
	Print "Deklaration fertig"
	Print "dc.Count = " & dc.Count
	If dc.Count>0 Then

allerdings gibt dc.Count 0 zurück, findet also keine Dokumente. Hab bestimmt wieder irgendne dummen Fehler gemacht  :D
Also, ich hoffe auf eure Hilfe.
Nochmals besten Dank für eure Mühe!
MfG Daniel O0

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Agent funktioniert nicht
« Antwort #10 am: 12.06.08 - 13:31:44 »
arr ist ein Array von Zahlen, dies wird bei vw.GetAllDocumentsByKey(arr) nicht funktionieren.

Beschreibe doch mal mit Worten, welche Dokument in welcher Ansicht angefasst werden sollen.
Gruß
Dirk

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Re: Agent funktioniert nicht
« Antwort #11 am: 12.06.08 - 13:42:47 »
Habs schon gelöst  ;D  O0

Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim senddoc As NotesDocument
	Dim rtItem As NotesRichTextItem
	
	Dim strSubject As String
	Dim strDocName As String
	Dim strBody As Variant
	Dim strEmpfaenger As String
	
	Set db = session.Currentdatabase	
	Set senddoc = New NotesDocument(db)	
	
	Dim dc As NotesDocumentCollection
	Dim vw As NotesView
	Set vw = db.GetView("vwNeueDokumente")
	Dim vc As NotesViewEntryCollection
	Dim entry As NotesViewEntry
	Set vc = vw.AllEntries
	Set entry = vc.GetFirstEntry()
	While Not (entry Is Nothing)
		Set doc = entry.Document
		If doc.GetItemValue("ErinnerungDatum")(0) = Today Then			
			Set rtitem = New NotesRichTextItem( senddoc, "Body" )
			strEmpfaenger = doc.GetItemValue("Autor")(0) 
			strDocname = doc.GetItemValue("Dokumentname")(0)
			With senddoc
				.Form = "Memo"
				.SendTo = doc.GetItemValue("Autor")(0)
				.SendFrom = "Test@Test.de"
				.Principal = "Test@Test.de"
				.DisplaySent ="Test"
				.Subject = "AgentLS - Automatische Erinnerung - " + strDocName
			End With			
			strBody = "Autmatische Erinnerung! Folgen Sie dem Link um zum Dokument zu gelangen" & Chr(13) & Chr(13)
			Call rtitem.AppendText(strBody)
			Call rtItem.AppendDocLink(doc, doc.UniversalID)
			Call senddoc.send(False)
		End If
		Set entry = vc.GetNextEntry(entry)
	Wend
End Sub

Allerdings startet mein Agent noch nicht so wie gewünscht, aber immerhin macht er jetzt was wenn ich ihn ausführe und sogar das, was er soll  O0
Nur, wenn ich ihn periodisch einstelle, dann startet er den Agenten nicht.
Hier mal meine Einstellungen:

Auslösen: durch Zeitplan
Zeitplan: täglich
Agent startet um: 13:45 Uhr
MfG Daniel O0

Driri

  • Gast
Re: Agent funktioniert nicht
« Antwort #12 am: 12.06.08 - 13:47:24 »
Der Agent ist aber aktiviert, oder ? Also Häkchen ist gesetzt ?

Sonst schau doch mal auf der Serverconsole mit "tell amgr sched" nach, ob der Agent da auftaucht.

Offline DannyCrown

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Männlich
  • Use Kill with care - Designer Hilfe
Re: Agent funktioniert nicht
« Antwort #13 am: 12.06.08 - 13:59:07 »
ja, Häkchen ist gesetzt, aber glaube auf die Serverkonsle komme ich so nicht drauf, bin nur ein armer kleiner Azubi  ;D O0 O0 O0
Aber trotzdem Danke!;-)

Also hat sich erledigt, hab nicht dran gedacht das die DB auf nem Testserver liegt und der kannte die Adresse halt nicht wo die Email hingeschickt werden sollte. Also alles klappt!

Vielen Dank nochmals für euer Bemühen.
« Letzte Änderung: 18.06.08 - 15:19:07 von DannyCrown »
MfG Daniel O0

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz