Autor Thema: Mail versenden bei Feldänderungen  (Gelesen 3907 mal)

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Mail versenden bei Feldänderungen
« am: 18.03.10 - 11:07:32 »
Hallo zusammen,

ich habe ein Datenbank (Template Dokumentenbibliothek), in der automatisch Responses angelegt werden. Eine der Responses nennt sich "jobs", hier sollen wiederum Responses erstellt werden, um eben Aufgaben zu verteilen.

In dieser Maske gibt es ein Feld (auswahl aus einer picklist) Person in charge (per_charge), um die Aufgabe jemanden zu zuschieben.

Beim schließen des Docs soll nun eine Mail an diese Person in charge verschickt werden.

Wenn ein neues Dokument erstellt wird kein Problem, aber es kann vorkommen, das sich diese Informationen in einem schon existierenden Dokument ändert und dann sollte eben auch wieder eine Mail verschickt werden. Ich überwache die Feld mit der History Class, kann ich das versenden der Mail da mit reinpacken? Wenn ja, an welcher Stelle müsste ich das einfügen? Wenn nein, kann ich das mit Formel im Save button lösen?

Ihr könnt mir bestimmt helfen..
« Letzte Änderung: 18.03.10 - 15:50:03 von sommersprosse »
Gruß Ulli

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #1 am: 18.03.10 - 11:10:41 »
Hallo,

Merk Dir doch einfach den Inhalt des Feldes beim Oeffnen des Dokumentes und vergleiche diesen Stand mit dem Stand beim Speichern des Dokumentes.

Wenn Unterschied vorhanden, dann nur noch herausfinden, ob eine neue Name hinzugekommen ist und an diesen dann die Mail versenden.


Andreas

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #2 am: 18.03.10 - 11:30:46 »
Hallo Andreas,

vom Prinzip her klar was Du schreibst, mir ist nur noch nicht ganz klar, wie ich das praktisch umstetzen kann und wo ich was eintragen muss. Ich würde jetzt intuitiv mit Formelsprache anfangen, bin mir aber nicht sicher, ob das damit wirklich funktioniert.

Script ist noch nicht so mein Ding... bin aber offen da auch noch was dazu zu lernen.

Gruß Ulli

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #3 am: 18.03.10 - 15:49:47 »
Hallo Andreas,

Merk Dir doch einfach den Inhalt des Feldes beim Oeffnen des Dokumentes und vergleiche diesen Stand mit dem Stand beim Speichern des Dokumentes.

hab's dann doch noch hinbekommen. Bin im Forum dann noch auf den ein oder anderen Beitrag zum Thema "vergleichen" gestoßen.

Danke für den Anstoß.
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #4 am: 18.03.10 - 22:52:14 »
Die Property NotesUIDocument.ModifiedSinceSaved dürfte vermutlich Dein Freund sein.

Bernhard

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #5 am: 19.03.10 - 08:32:25 »
Guten morgen,

Die Property NotesUIDocument.ModifiedSinceSaved dürfte vermutlich Dein Freund sein.

nein, ich habs anders gelöst, die Property ist mir noch nicht über'n Weg gelaufen.. Hab das gerade mal in der Hilfe eingegeben, keinen treffer gelandet..... ???
Ich hab's folgendermaßen gelößt:
in den global Options meiner beiden Forms Variable gesetzt.
Code
Dim per_charalt As String

Im Postopen den Wert ausgelesen:

Code
per_charalt = Source.FieldGetText("per_charge")

Im Querysave Wert verglichen:

Code
	tmpPerson = doc.GetItemValue("per_charge") 
	strPerson = tmpPerson( 0 )

If per_charalt = strPerson Then
	Else
		Call SendNewJobMail(Source)
	End If

Aus SendNewJobMail habe ich dann eine Script-Bibliothek gemacht, da ich das ganze auf zwei Masken brauche.

Code
Sub SendNewJobMail (Source As NotesUIDocument)
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	
	Set db = session.CurrentDatabase
	Set doc = Source.Document
	
	Dim memo As New NotesDocument (db)	
	
	tmpPerson = doc.GetItemValue("per_charge") 
	strPerson = tmpPerson( 0 )
	
	memo.Form = "Memo"
	memo.sendTo = per_charge
	memo.Subject = "New Job in IP_MM database"
	memo.Body = "You are registered for a new Job. Please visit the IP_MM database for further information:"
	Call memo.Send (False,strPerson)
End Sub

Meine Tests waren bis jetzt erfolgreich. Muss zwar noch einen Doclink hinzufügen, dürfte aber auch zu schaffen sein.

Sollte modifiedsincesaved einfacher sein, bin ich für Input offen, wenn es an dem Script noch was zu optimieren gibt natürlich auch. Man (Frau) lernt bekanntlich nie aus.


Gruß Ulli

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #6 am: 19.03.10 - 08:43:58 »
Hoffentlich sind in dem Feld, welches Du auf Aenderungen pruefst keine Mehrfachwerte zugelassen.

@Bernhard
Deine angesprochene Property NotesUIDocument.ModifiedSinceSaved habe ich auch (noch) nicht gefunden.


Andreas
« Letzte Änderung: 19.03.10 - 08:46:14 von ascabg »

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #7 am: 19.03.10 - 08:47:03 »
Hallo Andreas,

nein, keine Mehrfachwerte, es kann und soll auch immer nur eine Person ausgewählt werden.
Gruß Ulli

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #8 am: 19.03.10 - 08:54:47 »
Na dann koenntest Du doch im QuerySave den aktuellen Wert des Feldes auch ueber

Code
Source.FieldGetText("per_change")

abfragen.


Andreas

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #9 am: 19.03.10 - 09:15:20 »
Sorry, steh grad voll auf'm Schlauch...

Code
Source.FieldGetText("per_change")

mach ich ja eigentlich auch, wenn auch über mehrere Schritte. Hab das gestern glaub auch mal so probiert, aber wahrscheinlich die falsche Syntax gehabt. Wie müsste den die komplette Zeile aussehen?

Mein Problem war noch und das war der Grund das wir es bissle verkompliziert haben, er hat mir die Mail nicht verschickt, da er mit dem Inhalt meines Feldes per_charge nichts anfangen konnte, aber wahrscheinlich aich da, falsche Syntax....

Call memo.Send (False,strPerson) --> hier hatte ich zuerst Call memo.Send (False,per_charge) drin stehen....

« Letzte Änderung: 19.03.10 - 09:22:05 von sommersprosse »
Gruß Ulli

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #10 am: 19.03.10 - 09:26:03 »
Nur mal ins Blaue hinein.

Code nur fuer den QuerySave
Code
If Trim(per_charalt) <> Trim(Source.FieldGetText("per_charge")) Then Call SendNewJobMail(Source)

oder etwas komfortabler
Code
If StrCompare(Trim(per_charalt), Trim(Source.FieldGetText("per_charge")), 2) Then _
Call SendNewJobMail(Source)


Andreas

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #11 am: 19.03.10 - 09:48:29 »


Code
If Trim(per_charalt) <> Trim(Source.FieldGetText("per_charge")) Then Call SendNewJobMail(Source)

funzt.... nicht schlecht....
Die Fülle der Script Möglichkeiten erschlägt mich manchmal noch.... da das richtige rauszufinden ist noch so'n Ding für sich....

Danke mal
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #12 am: 19.03.10 - 22:19:37 »
@Ulli & Andreas:
NotesUIDocument.ModifiedSinceSaved gibt es seit mindestens R5 - und ist bis heute nicht dokumentiert.
Die Property sagt genau das aus, was der Name vermuten lässt ...

Bernhard

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #13 am: 22.03.10 - 07:11:37 »
@Bernhard,

Das konnte ich mir schon denken.
Nur sei mir eine kleine Frage gestattet.

Sagt diese Property auch aus, was sich geaendert hat.
So wei sich mir die Problemstellung darstellt, soll die Mail ja nur dann gesendet werden, wenn ich der Inhalt eines bestimmten Feldes aendert.

Und in einem solchen Fall, wuerde mir die Property aus meiner Sicht nicht wirklich weiterhelfen, da die Mail ja dann jedes Mal versendet wuerde, wenn sich irgendein Wert aendert.


Andreas

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Mail versenden bei Feldänderungen
« Antwort #14 am: 22.03.10 - 08:16:24 »
@Bernhard,

NotesUIDocument.ModifiedSinceSaved gibt es seit mindestens R5 - und ist bis heute nicht dokumentiert.

wie soll ein Notes Script Newbie wie ich das dann finden  ;). Ich hab' mich echt für mein Project durch die Hilfe und Bücher gewälzt, aber wenn was nicht dokumentiert ist, echt ungeschickt...

Schließe mich Andreas an, die Mail soll nur auf dieses eine Feld ansetzen, sonst sind Änderungen echt egal....
Aber wie schon gesagt, bin auch offen dafür, mein Script zu optimieren....
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Mail versenden bei Feldänderungen
« Antwort #15 am: 22.03.10 - 22:15:00 »
Ich habe den Thread zu oberflächlich gelesen. NotesUIDocument.ModifiedSinceSaved reagiert tatsächlich auf jede Änderung (auch RTFs!). Wenn aber ein bestimmtes Feld überwacht werden soll, dann hilft dieser "Rundumschlag" natürlich eher nichts.

Bernhard

PS: Seit R7 gibt es ein SPR wegen der fehlenden Doku (siehe IBM Lotus-Seiten). Passiert ist aber bis 8.5 nichts ... Peinlich - hier geht es doch "nur" um die Doku ...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz