AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
19.06.13 - 11:24:16
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 6
| |-+  ND6: Entwicklung (Moderatoren: _Arne_, Axel, eknori, ata, koehlerbv)
| | |-+  Täglicher Agent - Datumvergleich - Email senden
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Täglicher Agent - Datumvergleich - Email senden  (Gelesen 1018 mal)
Amelia
Frischling
*
Offline Offline

Geschlecht: Weiblich
Beiträge: 4



« am: 06.11.12 - 10:31:33 »

Hallo Zusammen,

ich soll für eine Abteilung eine Lotus Notes Datenbank erstellen(Azubiprojekt), bei der man Geräte verwalten kann, quasi eine "Verleihdatenbank". Diese ist bereits erstellt und funktioniert soweit.

In den Dokumenten werden Geräteinformationen abgespeichert, unter anderem Geräte Typ, an wen und wie lange es verliehen wird. Die Info wie lange es verliehen wird, wird ein einem Datumsefld ausgewählt(Feld:"verleihdatum").

Die "Verleiher" möchten nun dass eine automatische Erinnerungsmail kommt, sobald das aktuelle Datum sieben Tage vor dem Abgabe Termin ist, also immer eine Woche vor Ablauf eine Erinnerung.

Ich für diese Aufgabe leider noch keine passende Hilfe gefunden. Hier im Forum gab es ein fast identisches Problem,  habe auch die Lösungsvorschläge versucht die dort gegeben wurden.
(http://atnotes.de/index.php?action=printpage;topic=26094.0)

Leider kam ich bisher auf keine funktionierende Lösung. Daher nun hier meine Frage an euch ob ihrmir weiterhelfen und Tipps geben könnt wo meine Fehler liegen und was ich anders machen müsste.

Ich poste euch einfach mal was ich bisher habe (bitte behachten das ich zum ersten mal mit Notes arbeite und auch nicht wirklich die Zeit habe mich viel damit zu beschäftigen Embarrassed)

Das habe ich im Agent stehen:

SELECT @All;

datum := @Text(@GetField("verleihdatum"));
name := @Name([CN];@GetField("an"));

details := + @NewLine + @Text(
+ @NewLine + "Anbei Ihre Informationen zu dem Gerät:" + @NewLine + @NewLine +  "-------------------------------------------------" +@NewLine + "Gerät: " + @GetField("neuGerät")  + " " + @GetField("Workstationfeld") + @GetField("Notebookfeld") + @GetField("Sonstigefeld") + " (" + @GetField("neuHostname") + ")" +  @NewLine +
"-------------------------------------------------" + @NewLine +
"Verliehen bis: " + datum + @NewLine +
"-------------------------------------------------" + @NewLine +
"Sonstige Infos: " + @Text(@GetField("infos")) + @NewLine +
 "-------------------------------------------------" + @NewLine
);

emailsenden := @MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);

@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";emailsenden;
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")



Mir ist bewusst das der Code nicht gerade das gelbe von Ei ist, gerade was die Feldnamen betrifft. Aber ich hoffe ihr könnt trotzdem verstehen was ich meine.

Ich würde mich über Lösungsansätze freuen.

Vielen Dank schon mal im Vorraus.


LG Amelia
Gespeichert
ascabg
Gold Platin u.s.w. member:)
*****
Online Online

Geschlecht: Männlich
Beiträge: 2908


« Antworten #1 am: 06.11.12 - 11:10:58 »

Hallo,

Und was funktioniert nicht bzw. wo haengt es denn jetzt?

In dem verlinkten Post ist doch die Loesung schon enthalten.


Andreas
Gespeichert
Amelia
Frischling
*
Offline Offline

Geschlecht: Weiblich
Beiträge: 4



« Antworten #2 am: 06.11.12 - 11:15:24 »

Das hab ich natülrich vergessen aufzuschreiben, sorry.

Also wenn ich den Agent teste/starte, geht er durch alle Dokumente durch, die fi Abfrage greift quasi nicht?  Ahnungslos

Ich habe mir den verlinkten Post mehrmals duchgelesen, auch meine anderen Azubikollegen haben mit drüber geschaut, aber wir kommen nicht auf die Lösung was bei uns falsch ist.

Deswegen ja meine Frage an euch ob ihr seht wo der Fehler liegt, und was ich evtl ändern müsste.
Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3564


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #3 am: 06.11.12 - 11:16:55 »

Also warum Du das hier
Code:
datum := @Text(@GetField("verleihdatum"));
tust, ist mir erst mal schleierhaft: wie willst Du nachher mit einem Text weiterarbeiten, Du brauchst doch ein datum. Damit fallen dann die Zeilen hier
Code:
@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";emailsenden;
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")
auf die Schnauze... Mal ganz abgesehen davon, dass "emailsenden" einfach nur eine Variable ist, der das Ergebnis des Mailsend vorher zugewiesen wird... Man kann in der Formelsprache keinen Code "Zwischenparken". Hier
Code:
emailsenden := @MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);
wird die Mail bereits versendet...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Alles beim alten zu lassen kostet nichts.....
                         .....nichts als die Zukunft !


pers. Infos:
seit 1995 in der Notes/Domino Administration und Programmierung, Senior Consultant (hört sich so schön hochtrabend an) zu allem möglichen rund um Notes/Domino (Blackberry, Traveler, Sametime, Quickr, ein bisschen Lotus Connections...)
An jedem Tag meines Lebens erhöht sich zwangläufig die Zahl derjenigen, die mich am A... l... können...
Amelia
Frischling
*
Offline Offline

Geschlecht: Weiblich
Beiträge: 4



« Antworten #4 am: 06.11.12 - 14:25:32 »

Weil ich dachte das man es umwandeln muss, ich hatte mir den Wert immer per prompt ausgeben lassen und da gab es bei dem Datumsfeld immer leichte Probleme.

Also müsste es dann quasi einfach so sein:
Code:
datum := @GetField("verleihdatum");

Okay, dass man das nicht so zuweisen kann wusste ich nicht. ich hatte es gemacht, weil ich mir nicht sicher war ob die @mailsend formel in der if Abfrage stört und diese daher nicht funktioniert.

Quasi nun so:
Code:
@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";@MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")

Vielen Dank schon mal für die Antworten.

Ist denn der Grundaufbau meines Agenten richtig?
Gespeichert
ascabg
Gold Platin u.s.w. member:)
*****
Online Online

Geschlecht: Männlich
Beiträge: 2908


« Antworten #5 am: 06.11.12 - 14:41:05 »

Hallo,

Warum holst Du Dir die Werte aus den entsprechenden Felden mit @GetField(...) in eine Variable?
Du kannst doch die Felder direkt ansprechen.

Code:
@If(@Today <= @Adjust(verleihdatum; 0; 0; -7; 0; 0; 0)

Warum fragst Du die 'Datumsdifferenz' (@Adjust) eigentlich zweimal ab? (zumal die zweite Abfrage warscheinlich eh nichts bringt, da diese sich im Else-Zweig Deiner @If-Abfrage befindet und somit nie zum Zuge kommt.


Andreas
Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3564


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #6 am: 06.11.12 - 16:27:24 »

In der Formelspracher verzichtet man im Normalfall auf verschachtelte Ifs und macht etwas, was man in anderen Programmiersprachen eigentlich nicht macht: Man bricht einfach die Code- Verarbeitung an passenden Stellen per @Return ab....

Laut Deiner Anforderung muss es im übrigen @Today != @Adjust( verleihdatum; 0 ; 0 ; -7; 0 ; 0 ; 0 ) heissen. Deine Variante bedeutet, dass bis sieben Tage vorher jeden Tag eine Mail versendet wird, danach nicht mehr (also selbst wenn Du AB sieben Tage vorher jeden Tag eine Mail versenden willst, ist das falsch, dann müsste es @Today >= @Adjust... heissen).

Dein Code würde (besser aber noch lange nicht gut) so aussehen:
Code:
@If( @Today != @Adjust(datum;0;0;-7;0;0;0) | MailSent = "1"; @Return( "" ) ; "" );
REM "Der Code hier wird nur ausgeführt, wenn der @Return oben die Ausführung nicht ebgebrochen hat";
datum := @Text(verleihdatum));
name := @Name([CN];an);

details := "Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine + @NewLine +
"Anbei Ihre Informationen zu dem Gerät:" + @NewLine + @NewLine +  
"-------------------------------------------------" +@NewLine +
"Gerät: " + neuGerät  + " " + Workstationfeld + " " + Notebookfeld + " " + Sonstigefeld + " (" + neuHostname + ")" +  @NewLine +
"-------------------------------------------------" + @NewLine +
"Verliehen bis: " + datum + @NewLine +
"-------------------------------------------------" + @NewLine +
"Sonstige Infos: " + infos + @NewLine +
"-------------------------------------------------" + @NewLine;

@MailSend(an; verleiher;"";"Erinnerung zur Rückgabe";"";details);
FIELD MailSent := "1";
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Alles beim alten zu lassen kostet nichts.....
                         .....nichts als die Zukunft !


pers. Infos:
seit 1995 in der Notes/Domino Administration und Programmierung, Senior Consultant (hört sich so schön hochtrabend an) zu allem möglichen rund um Notes/Domino (Blackberry, Traveler, Sametime, Quickr, ein bisschen Lotus Connections...)
An jedem Tag meines Lebens erhöht sich zwangläufig die Zahl derjenigen, die mich am A... l... können...
Amelia
Frischling
*
Offline Offline

Geschlecht: Weiblich
Beiträge: 4



« Antworten #7 am: 07.11.12 - 08:37:02 »

Zitat
Warum holst Du Dir die Werte aus den entsprechenden Felden mit @GetField(...) in eine Variable?
Wie vorhin schon erklärt hatte ich das so, weil ich dachte das Notes sonst das Feld nicht verarbeiten kann, weil ich keinen richtigen Rückgabewert des Feldes hatte.

Zitat
In der Formelspracher verzichtet man im Normalfall auf verschachtelte Ifs und macht etwas, was man in anderen Programmiersprachen eigentlich nicht macht
Okay, Notes ist für mich in vielen Dingen noch sehr unversändlich, gerade was die Formelsprache betrifft.


Das mit dem Adjust hatte ich so aus dem anderem Thread den ich gepostet hatte übernommen. Da ich mir selbst nicht ganz sicher war.


Schon mal vielen herzlichen Dank für die große Hilfe, werde mich gleich dran setzen und versuchen es umzusetzen.

Habe noch eine Frage an dich Tode:
Du hattest mir ja einen Vorschlag für den Code wie er aussehen könnte geschickt, und unter anderem "datum := @Text(verleihdatum));" mit aufgeführt. Brauche ich nun das @Text, oder nicht? So wie du ja schon geschrieben hattest, eigentlich nicht? Hatte mich jetzt etwas verwirrt. Ich bin anfangs davon ausgegangen, da prompt mir ohne das @text davor keinen Wert ausgibt, dass das Datum dann auch nicht mit @Adjust verglichen werden kann.

Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3564


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #8 am: 07.11.12 - 08:42:55 »

Du willst das Datum in Deinem MailTEXT verwenden... Ein Datum kann man aber nicht mittels "+" mit einem Text verknüpfen (ungültiger Operator, Text erwartet). Deshalb die Hilfsvariable, aber eben nur für den Text der Mail.

Ach: Habe noch einen Fehler in meiner Formel entdeckt... in der ersten Zeile muss es natürlich heissen
@Adjust(verleihdatum;0;0;-7;0;0;0)
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Alles beim alten zu lassen kostet nichts.....
                         .....nichts als die Zukunft !


pers. Infos:
seit 1995 in der Notes/Domino Administration und Programmierung, Senior Consultant (hört sich so schön hochtrabend an) zu allem möglichen rund um Notes/Domino (Blackberry, Traveler, Sametime, Quickr, ein bisschen Lotus Connections...)
An jedem Tag meines Lebens erhöht sich zwangläufig die Zahl derjenigen, die mich am A... l... können...
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: Tinte / Toner günstig  | handys