Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: Jensi am 28.01.08 - 09:58:48

Titel: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 28.01.08 - 09:58:48
Hallo zusammen,

kann ich einen Agenten schreiben, der eine Vertrag-Datenbank überwacht, und mir eine Email sendet, wenn z.B. ein Vertrag in dieser Datenbank ausläuft?
Wenn ja, wäre lieb wenn man den Code posten könnte...

Danke

Gruß Jens
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: klaussal am 28.01.08 - 10:04:08
Ja.

Zitat
Wenn ja, wäre lieb wenn man den Code posten könnte...

Wäre lieb, wenn du sagen würdest, was du zu bezahlen bereit wärest.....  ::)
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 28.01.08 - 10:23:16
Wäre lieb, wenn du sagen würdest, was du zu bezahlen bereit wärest.....  ::)
:o
Dann werd ich das wohl lieber selber versuchen...  ^-^
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: thoge am 28.01.08 - 10:31:19
Hallo Jens,

Zitat
kann ich einen Agenten schreiben, der eine Vertrag-Datenbank überwacht, und mir eine Email sendet, wenn z.B. ein Vertrag in dieser Datenbank ausläuft?

Ich denke ja, da wir das auch geschafft haben (eine Datenbank, in der Gewährleistungsfristen unterschiedlicher Länge überwacht werden und mit rechtzeitigem Vorlauf zum Ablauftermin eine Erinnerung an eine Gruppe von Mitarbeitern sendet)

Zitat
Wenn ja, wäre lieb wenn man den Code posten könnte...

Hier tue ich mich etwas schwer, da die Eingangsvorraussetzungen zu speziell sind.

Hier der Ablauf:

Der Agent schaut auf eine Ansicht, in der die Ablauftermine in der ersten Spalte dargestellt werden.

Dann werden diese Termine mit dem heutigen Datum plus dem geeigneten Vorlaufzeitraum verglichen.

Liegt das Ablaufdatum innerhalb dieses Zeitraumes, wird eine Erinnerungsmail generiert mit den notwendigen Daten und an die entsprechende Gruppe gesendet.

Hier gab es vor einiger Zeit einen Thread bzgl. des julianischen Kalenders. Hierbei werden die Datumswerte in einer Zahl dargestellt. Diese eignen sich hervorragend, um die von Dir gewünschte Funktion auch noch einigermaßen performant hinzubekommen.

HTH

Thomas
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 28.01.08 - 10:37:54
Hallo Thomas, das hört sich ja super an, ich denke daraus lässt sich etwas machen
Danke

Gruß Jens
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: shiraz am 28.01.08 - 16:10:04
hier findest du eine Datenbank mit dem Agent:

http://atnotes.de/index.php?topic=38567.msg250657#msg250657

Gruß
Christian
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 30.01.08 - 10:44:46
Ich habe mir die Mobilfunkf-DB runtergeladen...
Sehr nette DB!
Hab mir den Agenten da auch angeschaut, jedoch klappt dies bei mir nicht so wie es sollte...

Aber ich werde es heute nochmal in Angriff nehmen...
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 01.02.08 - 13:35:16
Hallo

ich habe folgendes Problem
Ich habe eine Datenbank
In dieser werden Garantien eingetragen
Ich habe dort u.a. ein Feld "kaufdatum" und ein feld "dauer"
"kaufdatum" = Typ Datum/Zeit
"dauer" = zahl

die dauer gibt die laufzeit in monaten an

jetzt habe ich ein feld "ablaufen", in dem dann eine formel rein sollte
bei einer ansicht habe ich dann dies feld als erste spatle gemacht.
jetzt sollte dort in dieser ersten spalte dann irgendwie gezeigt werden, das eine garantie abgelaufen ist...

ich hoffe ich habe es einigermaßen gut geschrieben was ich meine

gruß jens
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: m3 am 01.02.08 - 14:16:04
Und Deine Frage lautet?

P.S.: Meine Kristallkugel meint, dass Du ev. @Adjust brauchen könntest.

P.P.S: Für neue Fragen bitte einen neuen Fred aufmachen, sonst wirds unübersichtlich.
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: koehlerbv am 01.02.08 - 14:28:24
Zu klären wäre auch, wann / wie dieses Feld "abgelaufen" gefüllt werden soll.

Bernhard
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 01.02.08 - 14:47:14
Und Deine Frage lautet?
Vor lauter schreiben habe ich vollkommen die Frage vergessen...
Wie sollte diese Formel denn aussehen?
Vllt ein kleines Beispiel?

Zu klären wäre auch, wann / wie dieses Feld "abgelaufen" gefüllt werden soll.

Bernhard
Dieses Feld sollte irgendein Symbol, oder ähnliches zeigen, damit erkannbar ist, das diese Garantie abgelaufen ist

Gruß Jens
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: m3 am 01.02.08 - 14:52:11
Konzeptfrage:
Willst Du eine View mit einer @Today Formel (Performancefresser) oder einen täglichen Agenten?
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 01.02.08 - 14:54:54
Einen Agenten brauche ich nicht...

Da die Garantie nicht allzu wichtig ist, reicht es, wenn man ab und zu die Datenbank durchschaut und sieht, aha, da lief ne Garantie aus...
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: koehlerbv am 01.02.08 - 14:59:46
Dann brauchst Du auch kein Feld abgelaufen, wenn Du es gar nicht (per Agent) füllen willst. Für die Spalte brauchst Du @If und @Adjust, und sehr gute Beispiele stehen in der DesignerHelp.

Bernhard
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 01.02.08 - 15:01:33
Achso okay... Dann werde ich mein Glück versuchen...

Danke
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 11.02.08 - 16:16:21
Dann brauchst Du auch kein Feld abgelaufen, wenn Du es gar nicht (per Agent) füllen willst. Für die Spalte brauchst Du @If und @Adjust, und sehr gute Beispiele stehen in der DesignerHelp.

Bernhard

Hallo... Ich habe mir das nun angeschaut... aber komm nicht weiter...
Ich habe jetzt eine Spalte... aber ich komme nicht auf die Formel, wie muss die richtig lauten?

Logik ist ja:
Wenn Kaufdatum+Dauer > heute ist Dann "***", Sonst " "
klingt das logisch?

Gruß jens
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 11.02.08 - 16:21:59
Code
@If( @adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @today ; "***"; " " ) ;


Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 11.02.08 - 16:26:45
Code
@If( @adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @today ; "***"; " " ) ;


Hubert

Vielen Dank  :D
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 11.02.08 - 16:29:38
Code
@If( @adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @today ; "***"; " " ) ;


Hubert

Gibt es auch eine Möglichkeit, die ganze Zeile dann rot zu markieren, oder wäre das zu viel aufwand?
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 11.02.08 - 16:31:56
Such mal in der Designer-Hilfe nach

farbe and spalte

und entscheide dann selbst, ob dir das zu aufwendig ist.

Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 12.02.08 - 08:59:48
Such mal in der Designer-Hilfe nach

farbe and spalte

und entscheide dann selbst, ob dir das zu aufwendig ist.

Hubert

Das ist mir zu aufwendig...

aber andere Frage: ich hab jetzt diese formel genommen...
Code
@If( @Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) < @Today ; 120; @Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @Today;114;" ")

diese zeigt mir, ob etwas abgelaufen ist oder noch aktiv ist...
kann ich die formel auch umschreiben, das er mir zeigt, das in einem bestimmten zeitraum (3 monate vor ende) es abläuft...?
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 12.02.08 - 10:06:39
Ja,. indem du nicht mit @Today vergleichst, sondern z.B. mit

@Adjust( @Today; 0; 0; -120; ...


Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 12.02.08 - 10:20:09
Ja,. indem du nicht mit @Today vergleichst, sondern z.B. mit

@Adjust( @Today; 0; 0; -120; ...


Hubert

hm... könntest du mir evtl. den code schreiben? wäre echt voll nett
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 12.02.08 - 11:15:06
Wo bleibt denn dann der Lerneffekt? Hast du in der Designer Hilfe schon einmal bei @If und @Adjust nachgelesen?

Wie sieht dein nicht funktionierender Code aus?

Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 12.02.08 - 11:17:47
ich habe mir die hilfe schon oft durchgelesen, aber ich weiß nicht wie ich anfangen soll...
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 12.02.08 - 12:26:14
Also du hattest ja schon so etwas:

Code
@If( 
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) < @Today ; 120;
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @Today;114;
" ")

Die Formel besagt:
Wenn kaufdatum + dauer < heute -> 120
Wenn kaufdatum + dauer > heute -> 114
sonst " "

Du möchtest vermutlich haben:
Wenn
kaufdatum + dauer > heute -> "alles klar"
kaufdatum + dauer > heute - 30 -> "Warnhinweis"
sonst "abgelaufen"

heute - 30 drückt man wie folgt aus:

Code
@Adjust( @today; 0 ; 0 ; -30; 0 ; 0 ; 0 )


Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 12.02.08 - 13:55:48
@If(
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) > @Today ; 114;
@Adjust( kaufdatum; 0 ; dauer; 0 ; 0 ; 0 ; 0 ) < @Adjust( @Today; 0 ; 0 ; -30 ; 0 ; 0 ; 0 );120;115)

Wenn
kaufdatum + dauer > heute -> "alles klar"
kaufdatum + dauer > heute - 30 -> "Warnhinweis" sonst "abgelaufen"

Wenn ich dies so mache, macht er irgendetwas falsch...

Der unterste Eintrag ist richtig als "Rot" gekennzeichnet
Der Eintrag drüber ist falsch als "Gelb" gekennzeichnet....

114 Grün = Alles klar
120 Gelb = Warnhinweis
115 Rot = Abgelaufen
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: WernerMo am 12.02.08 - 14:20:36
hallo,

da Du keine Fehler abfängst würde ich darauf tippen, dass das "Datum" in der vorletzten Zeile einen "Knacks" hat also nicht verglichen werden kann?

Gruß Werner
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: HH am 12.02.08 - 14:34:39
Sorry, ich meinte 30 Tage Warnzeitraum gelesen zu haben. Ich hoffe, das hat dich nicht verwirrt. Bei 3 Monaten sollte es so funktionieren:

Code
_warnenAb := @Adjust(kaufdatum;0;dauer -3 ;0;0;0;0) ;
_ablauf   := @Adjust( kaufdatum;0;dauer;0;0;0;0) ;
@If(
_ablauf   < @Today ; 115 ;
_warnenAb < @Today & _ablauf > @Today ; 120 ;
114 )

Hubert
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: koehlerbv am 12.02.08 - 14:40:51
Ich weiss, woran es liegt: "Standard" ist falsch geschrieben  >:D

Aber im Ernst: Die Formel funktioniert genauso, wie gewünscht:

04.01.2008 < 13.01.2008 - es wird das Warnzeichen angezeigt.
08.02.2008 > 13.01.2008 - es wird das Abgelaufen-Zeichen angezeigt.

Für die Logik muss man schon (selber) sorgen.

@Werner: Wenn das Datumsfeld einen Schuss hätte, würde eine Fehlermeldung angezeigt (Datum/Zeit erwartet).

Bernhard
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: hwenck am 12.02.08 - 14:43:55
Ich ziehe den Hut vor:
klauss,thoge,shiraz,m3,koehlerbv,WernerMo

hallo Jensi, ich hoffe Du verdienst damit nicht dein Geld.

Ich habe hier nichts zu sagen. Aber das mußte ich loswerden.
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 12.02.08 - 14:56:09
Ich ziehe den Hut vor:
klauss,thoge,shiraz,m3,koehlerbv,WernerMo

hallo Jensi, ich hoffe Du verdienst damit nicht dein Geld.

Ich habe hier nichts zu sagen. Aber das mußte ich loswerden.

Dann sag auch nichts...

Muss man hier etwa ein perfekter Notes-Spezialist sein? NEIN
Dieses Forum ist dazu da, das Leute wie ich Hilfe einholen können... Oder versteh ich das falsch?
Auf solche Kommentare wie von hwenck kann ich verzichten.

Danke an Hubert...
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: DerAndre am 12.02.08 - 15:10:48
Jensi nicht Ärgern. Er hat ja noch nichtmal aktiv was beigetragen. Deswegen würde ich mir den Schuh garnicht erst anziehen.
Außerdem würde ich mal sagen verdient hier jeder sein Geld damit. Auf die eine oder andere Weise.


Aufgrund Bernhards Post habe mir das ganze jetzt nochmal Angeschaut und mich ein bischen revidiert.
Ich glaub ich habe heute zu tief in den Designer geschaut.
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: koehlerbv am 12.02.08 - 15:18:46
Danke an Hubert...

André, wenn man das so macht und nur jemanden anerkennt, der einem die Arbeit komplett abnimmt und den fertigen Code liefert, dann verdient man sich nicht sein Geld, sondern man bekommt es.
Die seitenweisen Bemühungen der anderen werden schlicht ignoriert (sicherlich auch gar nicht verstanden) - so macht man sich "Freunde".

Bernhard
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 19.02.08 - 09:40:02
Code
Sub Initialize
	
	Dim s As notessession
	Dim db As notesdatabase
	Dim view As notesview
	Dim doc, memo, ProfileDoc As notesdocument
	Dim body As notesrichtextitem
	Dim dtthen As notesdatetime, dtnow As notesdatetime
	Set s = New notessession
	Set db=s.currentdatabase
	Set ProfileDoc = db.GetProfileDocument("PRFdoc_defaultVertrag")
	Set view = db.getview("($AllDocID)")
	Set doc = view.getfirstdocument
	Do While Not (doc Is Nothing)
		Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
		If Not (dtthen Is Nothing) Then
			Call dtthen.setAnyTime
			Set dtnow= New notesdatetime("Today")
			Call dtnow.setAnyTime
			If dtnow.TimeDifference(dtthen)/86400 <= 5 Then
				Set memo = db.createdocument
				With memo
					Call .replaceitemvalue("Form", "Memo")
					Call .replaceitemvalue("Subject","Auslaufender Vertrag - " & doc.ver_firma(0))
					Set body = .createrichtextitem("Body")
					With body
						Call .appendtext("Der "& doc.ver_art(0) &" für "& doc.ver_gegenstand(0) &" läuft demnächst aus. Hier ist das Dokument.     ")
						Call .appenddoclink(doc,"Bitte hier klicken","")
					End With
					Call .send(False, ProfileDoc.GetFirstItem("prfdoc_default_email"))
				End With
			End If
		End If
		Set doc = view.getnextdocument(doc)
	Loop
End Sub

Kann mir jemand sagen, was dieser Teil hier macht:
Code
	Do While Not (doc Is Nothing)
		Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
		If Not (dtthen Is Nothing) Then
			Call dtthen.setAnyTime
			Set dtnow= New notesdatetime("Today")
			Call dtnow.setAnyTime
			If dtnow.TimeDifference(dtthen)/86400 <= 5 Then
				Set memo = db.createdocument

Danke
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 20.02.08 - 13:27:19
Wenn ich meine Datenbank jemandem zur Verfügung stelle, könnte dieser vllt mal einen Blick drauf werfen?
Meine Kenntnisse sind am Ende....
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: Jensi am 26.02.08 - 11:38:53
Ich habe jetzt nach langer Zeit endlich die richtige Lösung gefunden...

Nun hab ich eine letzte Frage:
Ich habe in dem Profildokument ein Feld "prfdoc_default_warnen"
In diesem Feld wird der Warnzeitpunkt (in Tagen) eingeben, als Zahl.

Code
Sub Initialize
	
	Dim s As notessession
	Dim db As notesdatabase
	Dim view As notesview
	Dim doc, memo, ProfileDoc As notesdocument
	Dim body As notesrichtextitem
	Dim dtthen As notesdatetime, dtnow As notesdatetime
	Dim dateTime As New NotesDateTime( "Today" )
	Dim dateTime_ As Variant
	Dim maxdiff, difference As Long
	Set s = New notessession
	Set db=s.currentdatabase
	' Profildokument
	Set ProfileDoc = db.GetProfileDocument("PRFdoc_defaultVertrag")
	Set view = db.getview("($AllDocID)")
	Set doc = view.getfirstdocument
	Do While Not (doc Is Nothing)
		Set dtthen = doc.getfirstitem("ver_fruehesterkuentermin").DateTimeValue
		If Not (dtthen Is Nothing) Then
			Call dtthen.setAnyTime
			Set dtnow= New notesdatetime("Today")
			Call dtnow.setAnyTime			
			maxdiff =  90
			' Differenzberechnung - Liefert einen negativen Wert zurück, deswegen am Ende *(-1)
			difference = dtnow.TimeDifference(dtthen) / 86400 *(-1)
			' Bedingung
			If ( (difference > 0) And (difference < maxdiff)) Then
				Set memo = db.createdocument
				With memo
					Call .replaceitemvalue("Form", "Memo")
					Call .replaceitemvalue("Subject","Auslaufender Vertrag - " & doc.ver_firma(0))
					Set body = .createrichtextitem("Body")
					With body
						Call .appendtext("Der "& doc.ver_art(0) &" für "& doc.ver_gegenstand(0) &" läuft demnächst aus. Hier ist das Dokument:  ")
						Call .appenddoclink(doc,"Bitte hier klicken","")
					End With
					Call .send(False, ProfileDoc.GetFirstItem("prfdoc_default_email"))
				End With
			End If
		End If
		Set doc = view.getnextdocument(doc)
	Loop
End Sub

Im Moment ist der Warnwert fest in dem Agenten definiert.
Wie muss ich das jetzt umschreiben, damit der Wert aus dem Profildokument zieht?
Titel: Re: Agent - Mailbenachrichtigung
Beitrag von: DerAndre am 26.02.08 - 11:44:35
Du hast ein ProfileDoc, dieses hat einen Wert.
Also nichts anderes als bei einem normal Doc.

Das einzige worüber Du Dir Gedanken machen mußt, Lange oder kurze Variante des Zugriffs auf das Feld  ;D hatten wir das Thema nicht schon Ausführlich...  ;D ;D