Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MadMetzger am 26.01.04 - 08:23:43
-
Hallo,
ich beschäftige mich gerade mit einer Datenbank, in der Anforderungen zu Mängeln an Gebäuden etc. eingestellt werden.
Die Mängel werden erfasst und durch die zuständige Abteilung bearbeitet. Dabei soll als ein Bearbeitungsschritt eine Mail an den Erfasser der Meldung geschickt werden. Dazu möchte ich vorgefertigte Standardantworten in der DB hinterlegen, die dann aus dem Dokument heraus ausgewählt und versand werden sollen.
Meine erste Idee war, Dokumente mit den Vorgaben zu erzeugen, ich hänge jetzt aber fest, wie ich nun ein Memo aus den Vorgaben erzeuge...
Kann mir jemand einen Tip geben? Oder hat jemand schon mal was ähnliches gemacht? Bin für jede Hilfe dankbar...
-
Hi,
ich hab so was ähnliches mal gemacht.
Hier ein Auszug aus der Aktion:
...
'Prüfen ob Mail-DB vorhanden
Set maildb = New NotesDatabase("","")
Call maildb.OpenMail
If Not maildb.IsOpen Then
Messagebox "Mail-Datenbank kann nicht geöffnet werden." + Chr$(10) + "Es kann kein Mail erstellt werden.", 16, "ZIV-Organisation"
Exit Sub
End If 'If Not maildb.IsOpen Then
Set docProfile = maildb.GetProfileDocument("CalendarProfile")
'Neues Mail erstellen
Set docMail = New NotesDocument(maildb)
docMail.Form = "Memo"
docMail.Logo = docProfile.DefaultLogo(0)
docMail.Principal = docProfile.Owner(0)
docMail.SendTo = doc.BearbeiterFullname(0)
docMail.Subject = "Neue Aufgabe"
'Anlegen und füllen des Richtextfeldes
Set rtitem = docMail.CreateRichTextItem("Body" )
'*
Call rtitem.AppendText("Sie haben eine neue Aufgabe erhalten.")
Call rtitem.AddNewLine(1)
Call rtitem.AppendText("Bitte folgen Sie der Dokumentverknüpfung, um weitere Informationen zu erhalten.")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Aufgabe -> ")
Call rtitem.AppendDocLink(doc, "")
Call docMail.Send(False)
...
'* -> Hier würde ich eine Auswahl einbauen um die Texte (in sep. Dokumenten hinterlegt) auswählen zu können.
Axel
-
Ich habe da schon ein wenig rumprobiert...
Ich habe in der Datenbank Doks mit den Subjects und den Body-Feldern sowie Adressatenfelder. Über eine DialogBox wähle ich das passende Dokument, welches dann zur Bearbeitung geöffnet wird. Der Versand erfolgt dann aus der Mailvorlage heraus. Funktioniert einwandfrei. Habe das Ganze nur ohne Öffnen der MailDb gemacht, sonst ich zu einer Ähnlichen Lösung gekommen.
Hatte leider vergessen das hier reinzuschreiben, setze den Thread gleich mal auf Erledigt.
-
Jetzt habe ich mit dieser DB doch noch ein Problem: In der Maske mit den Mailvorgaben wird über eine Aktion "Senden" ein neues Dok im Backend erzeugt, mit den Werten versehen und verschickt. Jedoch wenn ich das Dokument ohne Speichern schließe ist es hinterher weg. In dem Dok gibt es ein SaveOptions Feld, welches immer auf "1" steht und bei Bedarf auf "0" gesetzt wird. Weiterhin sind in der Maske ein Autoren und ein Leserfeld, in denen ich über eine Rolle eingetragen bin.
Das Problem ist, dass ich es, wenn ich es aus einem anderen Dok aufrufe, nicht mehr speichern kann. Und wenn ich es nicht speichere ist es weg.
Was kann ich noch überprüfen? Oder was mache ich falsch?
Code des Aktionsbuttons:
Option Declare
Sub Click(Source As Button)
'# Versand der Mail an die Adressaten und anschlieáendes L”schen der Empf„nger
'# - Feld AntwortUrsprungTX muss hinterher wieder auf 0 gesetzt werden
'# - L”schen der Empf„ngerdaten
'# Variablendeklaration
Dim session As New notessession
Dim ws As New notesuiworkspace
Dim db As notesdatabase
Dim uidoc As notesuidocument
Dim doc As notesdocument
Dim maildoc As notesdocument
Dim body As Notesrichtextitem
Dim text As String
'# Initialisieren der Variablen
Set db = session.currentdatabase
Set maildoc = db.createdocument
Set uidoc = ws.currentdocument
Set doc = uidoc.document
text = doc.body
'# Versand des Dokuments und Zur?cksetzen der Felder
Set body = maildoc.createrichtextitem("Body")
maildoc.Form = "Memo"
maildoc.Subject = doc.Subject
maildoc.SendTo = doc.SendTo
maildoc.CopyTo = doc.CopyTo
Call body.appendtext ( text )
Call maildoc.send (False)
doc.SendTo = ""
doc.CopyTo = ""
doc.AntwortUrsprungTX = "0"
Call doc.save (True,False)
Call uidoc.reload
End Sub
-
Deine Frage ist mir vollkommen unverständlich.
Lt. Deinem Code (der vielleicht mit Deinem Problem gar nichts zu tun hat) wird sowieso nichts gespeichert.
Jedoch wenn ich das Dokument ohne Speichern schließe ist es hinterher weg.
Das ist doch so üblich ...
Weiterhin sind in der Maske ein Autoren und ein Leserfeld, in denen ich über eine Rolle eingetragen bin.
Was hat das mit dem geposteten Code zu tun ? Ich kann nicht erkennen, wie irgendeine Maske irgendetwas mit dem Code zu tun haben könnte ...
Beschreib' einfach mal genauer, was Du eigentlich willst oder erkläre uns die Zusammenhänge genauer. Derzeit kann ich nur vermuten, das alles "as designed" funktioniert.
Bernhard
-
Das mit dem nicht Speichern sollte doch aber nur der Fall sein, wenn das Dokument neu ist oder?
Ich versuche noch einmal genauer zu erklären.
In besagter DB gibt es Dokumente, in denen Vorgaben für eine Mail gespeichert sind. Zusätzlich noch Dokumente mit diesen Anforderungen, die per Mail beantwortet werden. Dafür habe ich eben diese Mailvorlagen erstellt. Aus der Anforderung wird dann noch der Absender der Anforderung übergeben an das Dokument mit der Mailvorlage. In dem Mailvorlagendokument rufe ich den hier geposteten Code über eine Aktion auf. Hier soll aus den gegebenen Mailfeldern eine Mail im Backend generiert und verschickt werden, was auch einwandfrei klappt. Jedoch hapert es beim Schließen des Dokuments am Ende. Ohne nochmaliges Speichern ist das Dok weg, und beim Speichern bekomme ich die Meldung, das ich nicht die erforderliche Berechtigung habe. Dann kann ich das Dok nur ohne Speichern schließen und es ist dann weg. Oder verstehe ich jetzt die SaveOptions falsch?
-
Hi,
von welchem Dokument redest du, dass per Mail versendet wird?
Wenn du beim Speichern eine Meldung über fehlende Berechtigungen bekommst, dann kann das an nicht richtig gesetzten Autorenfeldern liegen. Werden diese richtig gefüllt?
Axel
-
Die Mailvorlage wird versand, wie in dem Code beschrieben: Im Backend ein neues Dokument erzeugen, Feldwerte übergeben, verschicken. Anschließend Feldwerte in Vorlage auf Normalzustand und Schließen der Vorlage.
In dem Autorenfeld stand das richtige drin, ich habe auch die dazugehörige Rolle, das ist ja das, was mich wundert... die Werte in dem Autorenfeld müssen doch mit den eckigen Klammern sein, oder?
-
Hi,
du hast recht. Rollen müssen in eckigen Klammern stehen.
Mir ist aber immer noch nicht ganz klar, bei welchem Dokument das Speichern nicht funktioniert. Wenn ich mir den Code anschaue, dann kann das nur die Vorlage mit den zurückgesetzten Feldern sein. Richtig?
Wenn dem so ist und die Autorenfelder richtig gesetzt sind, verstehe nicht warum das nicht funktionieren soll.
Axel
-
Das hast du richtig verstanden! Genau dort liegt ja mein Problem...
Das Autorenfeld hat einen konstanten Wert, der aus zwei Rollen besteht: "[Rolle1]":"[Rolle2]" Das müßte doch eigentlich richtig sein...
Was könnte ich denn noch überprüfen?
-
Hi,
hast du beim Autorenfeld aus die Option "Mehrfachwerte zulassen" gesetzt?
Axel
-
Hatte ich bis eben nicht gemacht, habe ich aber jetzt parallell zu deinem Posting gemacht, muss ich gleich mal ausprobieren!
-
Danke! Das mit den Mehrfachwerten hat es schon gebracht!
Manchmal sieht man echt die Kleinigkeiten nicht...