Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 15.09.04 - 16:15:01
-
Hallo Forum,
mühsam ist es mir gelungen aus einem Querysave eines Dokumentes einen "Reminder" in den Kalender etwa mit folgenden Code zu setzen.
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim session As notessession
Dim db As notesdatabase
Dim ws As notesuiworkspace
Dim view As notesview
Dim doc As notesdocument
Dim db2 As New NotesDatabase ("Mailserver",Mailbox)
Dim uidoc2 As NotesUIDocument
Dim dbserver As String
dbserver = db2.server
dbfilename=db2.filepath
Set ws = New notesuiworkspace
Set uidoc2 = ws.ComposeDocument (dbserver,dbfilename,"Appointment")
StartDate=source.FieldGetText("DueDate")
Call uidoc2.FieldSetText("AppointmentType","4")
Call uidoc2.Reload
Call uidoc2.FieldSetText("Subject","Reminder")
Call uidoc2.FieldSetText("StartDate", StartDate)
Call uidoc2.FieldSetText("Body", Chr(10) & "Today is Due Date for …… ”)
Call uidoc2.FieldSetText("AppointmentType", "Reminder")
Call uidoc2.Save()
Call uidoc2.Close()
End Sub
Nun möchte ich gern auch noch den Link zurück auf das erzeugende Dokument mit in den Reminder übertragen.
Mein Bemühen aus dem Forum mittels der Beispiele für doclink den weiteren Code zu generieren ist kläglich an Unkenntnis gescheitert. Kann mir jemand unter die Arme greifen?
Alexis
-
Hi,
du erstellst das Kalender-Dokument mittels Frontend-Methoden. Besser ist es das Ganze mit Backend-Funktionen zu realisieren. Dann kannst du auch problemlos einen Doclink einfügen. Ich hab so was mal für Aufgaben gemacht.
Die Umstellung auf ein Kalender-Dokument sollte kein Problem darstellen.
Hier ein Code-Auszug:
...
Dim rtitem As NotesRichTextItem
...
'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 wird keine Aufgabe erstellt.", 16, "Adressen"
Exit Sub
End If 'If Not maildb.IsOpen Then
'Neue Aufgabe erstellen
Set taskdoc = New NotesDocument(maildb)
taskdoc.Form = "Task"
Call taskdoc.ComputeWithForm(True, True)
taskdoc.Subject = "Aufgabe zu einem Vorgang"
'Anlegen und füllen des Richtextfeldes
Set rtitem = taskdoc.CreateRichTextItem("Body" )
Call rtitem.AppendText("Hier kommt der Doclink")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Vorgang -> ")
Call rtitem.AppendDocLink(doc, "")
Call taskdoc.Save(True,False)
...
Axel
-
Hallo,
mein Script sieht derzeit so aus:
Dim rtitem As NotesRichTextItem
Dim maildb As NotesDatabase
Dim Mailbox As String
Dim uidoc As notesuidocument
Dim doc As NotesDocument
Dim workspace As notesuiworkspace
Dim currentdoc As NotesDocument
Set workspace = New notesuiworkspace
Set uidoc = workspace.currentdocument
Set doc = uidoc.Document
ID=source.FieldGetText("ID_Owner")
Mailbox="Mail\ABC" & ID & ".NSF"
'Prüfen ob Mail-DB vorhanden
Set maildb = New NotesDatabase("Mail007.XYZ.COM","Mailbox")
Call maildb.OpenMail
If Not maildb.IsOpen Then
Messagebox "Mail-Datenbank kann nicht geöffnet werden." + Chr$(10) + "Es wird keine Aufgabe erstellt.", 16, "Adressen"
Exit Sub
End If 'If Not maildb.IsOpen Then
'Neue Aufgabe erstellen
Set taskdoc = New NotesDocument(maildb)
taskdoc.Form = "Task"
Call taskdoc.ComputeWithForm(True, True)
taskdoc.Subject = "Aufgabe zu einem Vorgang"
'Anlegen und füllen des Richtextfeldes
Set rtitem = taskdoc.CreateRichTextItem("Body" )
Call rtitem.AppendText("Hier kommt der Doclink")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Vorgang -> ")
Call rtitem.AppendDocLink(doc, "Dokumentenlink")
Call taskdoc.Save(True,False)
Leider kommt in der vorletzten Zeile die Fehlermeldung:
<Could't get default view id for database> hoch.
Was fehlt da noch?
Alexis
-
Hat die Datenbank denn eine Standardansicht ? Sonst gibts Probleme bei verschiedenen Funktionen.
-
Die Datenbank hat noch keine Standard-View, kann sie aber sofort einrichten und teste den Vorgang abermals.
Alexis
-
Hallo Driri,
das war's.
Vielen Dank für den Tipp.
Alexis
-
Hallo Forum,
leider ist der Fall doch noch nicht abgeschlossen.
Die Verbindung mit einem Task-Eintrag klappt, ich möchte aber einen Reminder-Eintrag generieren. Also setze ich Form = "Appointment" und AppointmentType = "4" (siehe Code). Nun erhalte ich die vielsagende Fehlermeldung: Validation failed.
Dim rtitem As NotesRichTextItem
Dim maildb As NotesDatabase
Dim Mailbox As String
Dim uidoc As notesuidocument
Dim doc As NotesDocument
Dim workspace As notesuiworkspace
Dim currentdoc As NotesDocument
Set workspace = New notesuiworkspace
Set uidoc = workspace.currentdocument
Set doc = uidoc.Document
ID=source.FieldGetText("ID_Owner")
Mailbox="Mail\ABC" & ID & ".NSF"
'Prüfen ob Mail-DB vorhanden
Set maildb = New NotesDatabase("Mail007.XYZ.COM","Mailbox")
Call maildb.OpenMail
If Not maildb.IsOpen Then
Messagebox "Mail-Datenbank kann nicht geöffnet werden." + Chr$(10) + "Es wird keine Aufgabe erstellt.", 16, "Adressen"
Exit Sub
End If 'If Not maildb.IsOpen Then
'Neue Aufgabe erstellen
Set taskdoc = New NotesDocument(maildb)
taskdoc.Form = "Appointment"
taskdoc.appointmenttype = "4"
Call taskdoc.ComputeWithForm(True, True)
taskdoc.Subject = "Aufgabe zu einem Vorgang"
'Anlegen und füllen des Richtextfeldes
Set rtitem = taskdoc.CreateRichTextItem("Body" )
Call rtitem.AppendText("Hier kommt der Doclink")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Vorgang -> ")
Call rtitem.AppendDocLink(doc, "Dokumentenlink")
Call taskdoc.Save(True,False)
Weiss jemand den Grund?
Alexis
-
Hi,
Wann erhälst du den die Fehlermeldung? Bestimmt beim Speichern, richtig?
Wahrscheinlich ist eines der Felder nicht oder nicht richtig gefüllt. Wie ich das sehe, hast du mein Beispiel fast 1-zu-1 übernommen. Da das aber nur ein Beispiel für das einfügen eines Doclinks war fehlen da noch so einige Felder.
In deinem ersten Posting hast du ja noch so Felder wie DueDate, StartDate und AppointmentType gesetzt. Versuche mal die Felder entsprechend zu setzen.
Axel
-
Hallo Axel,
Dein Code war mir grad recht!
Beim Experimentieren ging's mir drum:
1. Statt Task-Eintrag den Reminder-Eintrag (AppointmentType=4) zu generieren. Beim ersteren habe ich keinerlei Probleme gesehen.
2. Einige Felder zu übergeben.
Ich werde Deinem Rat folgend alle Felder noch einmal in Ruhe checken, erst Recht ob es sich dabei um Mussfelder handelt.
Alexis
-
Hi @all,
die Krux lag an der Übergabe der Datumsfelder! Die Formatierung ist (für mich) wirklich ein Buch mit 7 Siegeln.
Allen Tippgebern ein Dankeschön. Meine Aufgabenstellung ist nunmehr bestens gelöst.
alexis
-
Hallo Forum,
meine Euphorie war etwas zu laut. Die Funktion klappt bestens nur dass ich neben dem Eintrag als Reminder auch noch einen Eintrag als Mail Draft erhalte, was von mir nicht gewünscht ist.
Hat jemand eine Idee woran das liegt?
Hier der betreffende Code-Ausschnitt:
Set taskdoc = New NotesDocument(maildb)
taskdoc.Form = "Appointment"
taskdoc.appointmenttype = "4"
taskdoc.ReplaceItemValue "$Alarm", 1
taskdoc.ReplaceItemValue "$AlarmMemoOptions", "2"
taskdoc.ReplaceItemValue "$AlarmSendTo", UName
taskdoc.ReplaceItemValue "$AlarmDescription", subject
taskdoc.ReplaceItemValue "$AlarmSound", "Defsound"
taskdoc.ReplaceItemValue "ViewIcon", "67"
taskdoc.Alarms= "1"
taskdoc.Principal = UName
taskdoc.StartDateTime = Cdat(duedate)
taskdoc.StartDate = Cdat(duedate)
taskdoc.StartTime=Cdat(duedate)
taskdoc.EndDate=Cdat(duedate)
taskdoc.Endtime=Cdat(duedate)
taskdoc.EndDateTime=Cdat(duedate)
taskdoc.CalendarDateTime=Cdat(duedate)
taskdoc.Subject = "Action Item Reminder"
Set rtitem = taskdoc.CreateRichTextItem("Body")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Action Item No. " & aino & " has a Due Date for Today")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Use Link to Action Item in SupportLineTool - Database --> ")
Call rtitem.AppendDocLink(doc, "Document Link")
Call taskdoc.ComputeWithForm(True, True)
Call taskdoc.Save(True,True)
Alexis
-
Hi,
füge die fettgedruckte Zeile an die entsprechende Stelle in deinen Code ein. Dann sollte das funktionieren.
...
taskdoc.ReplaceItemValue "$AlarmSound", "Defsound"
taskdoc.ReplaceItemValue "ViewIcon", "67"
taskdoc.Alarms= "1"
taskdoc.Principal = UName
taskdoc.ExcludeFromView = "D"
taskdoc.StartDateTime = Cdat(duedate)
...
Axel
-
@Alex,
Super! Woher wisst Ihr das immer :o.
Danke
Alexis
-
Super! Woher wisst Ihr das immer :o.
Alexis, noch nicht gemerkt, dass wir alle Dir über die Schultern schauen ...... ;D
-
Super! Woher wisst Ihr das immer :o.
Ich hatte das gleiche Problem. Da hab' ich mit auf Entdeckertour in die Mail-Schablone begeben. Da findet man so einiges. unter anderem auch die berühmte "Stecknadel im Codehaufen". ;)
Axel