Domino 9 und frühere Versionen > Entwicklung

Wiedervorlage / Kalendereintrag - Hilfe!!

(1/3) > >>

HelpMartin:
Hallo,
ich hab schon nach entsprechenden Lösungen gesucht, zu meinem Problem aber nichts gefunden.
Vielleicht weis jemand von euch Rat:
In einer DB können die Mitarbeiter Beiträge erstellen.
Nun sollen einzelne Doks/Beiträge als Wiedervorlage im Kalender des Mitarbeiters eingetragen werden können.
Wie der Kalendereintrag erstellt wird, ist mir klar.

Aber es sollen zusätzlich 2 Felder aus dem Dok im Kurztext des Kalendereintrags angezeigt werden, das Wiedevorlagedatum also Datum im Kalender muß wählbar sein und zusätzlich im Dok selbst in einem Feld gespeichert werden.

Vielleicht hat jemand den entsprechenden Script für mich.?

Ich bedanke mich schon mal im Voraus für die Unterstützung.

Gruß
Martin

Axel:
Hi,

erstmal willkommen im Forum.

Das hab' ich in "grauer Vorzeit" mal so ähnlich gemacht.

Hier ist der Code das Agenten:


--- Code: ---Sub Initialize

Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim collection As NotesDocumentCollection   
Dim currentdb As NotesDatabase
Dim maildb As NotesDatabase
Dim profile As NotesDocument
Dim doc As NotesDocument
Dim wvdoc As NotesDocument
Dim datetime As New NotesDateTime("")
Dim dateitem As NotesItem
Dim timeitem As NotesItem
Dim MailDatenbank As Variant
Dim eintrag As String


'Initialisierung mit aktuellen Datum und Uhrzeit
Call datetime.SetNow

' Zugriff auf markiertes Dockument
Set currentdb = session.CurrentDatabase
Set collection = currentdb.UnprocessedDocuments
If collection.Count = 0 Then
Messagebox "Sie haben keinen Eintrag markiert.", 64, "Adressen"
Exit Sub
End If  'If collection.Count = 0
If collection.Count = 1 Then
Set doc = collection.GetNthDocument(1)
If doc.Form(0) = "frmFirma" Then
eintrag = Trim$(doc.Vorname(0) & " " & doc.Name(0))
Else
eintrag = Trim$(doc.KontaktVorname(0) & " " & doc.KontaktName(0))               
End If  'If doc.Form(0) = "frmFirma"
Else       
Messagebox "Für die Erstellung einer Wiedervorlage darf nur ein Eintrag markiert sein.", 64, "Adressen"
Exit Sub
End If  'If collection.Count = 1

'Zugriff auf Maildatenbank und Prüfung ob im Kalenderprofil die Weckfunktion eingeschaltet ist.
MailDatenbank = Evaluate("@MailDbName")
If MailDatenbank(1) = "" Then
Messagebox "Auf Ihre Maildatenbank kann nicht zugegriffen werden.", 16, "Adressen - Fehler"
Exit Sub         
End If  'If MailDatenbank(1) = ""
Set maildb = New NotesDatabase(MailDatenbank(0),MailDatenbank(1))
Set profile = maildb.GetProfileDocument("CalendarProfile")
If profile Is Nothing Then
Messagebox "Fehler beim Zugriff aus das Kalenderprofil Ihrer Maildatenbank.", 16, "Adressen - Fehler"
Exit Sub
Else
If profile.EnableAlarms(0) <> "1" Then
Messagebox "Im Kalenderprofil Ihrer Maildatenbank sind keine Alarmoptionen aktiviert." & Chr$(10) & _
"Es kann keine Wiedervorlage erstellt werden.", 48, "Adressen - Warnung"
Exit Sub               
End If  ' If profile.EnableAlarms(0) <> "1"
End If  'If profile Is Nothing

'Erstellen einer Erinnerung innerhalb der Maildatenbank des Users     
Set wvdoc = New NotesDocument(maildb)
wvdoc.Form = "Appointment"
wvdoc.AppointmentType = "4"
wvdoc.ExcludeFromView = "D"
Set wvdoc.StartDateTime = datetime
Set wvdoc.CalendarDateTime = datetime     
wvdoc.Subject = "Wiedervorlage für " & eintrag

If ws.DialogBox("tmDlgAlarm", True, True, False, False, False, False, "Wiedervorlage", wvdoc) = False Then Exit Sub

Set dateitem = wvdoc.GetFirstItem("tmpAlarmOnDate")
Set timeitem = wvdoc.GetFirstItem("tmpAlarmOnTime")
Set AlarmTime = New NotesDateTime(dateitem.DateTimeValue.DateOnly & " " & timeitem.DateTimeValue.TimeOnly)
Set wvdoc.ReminderTime = AlarmTime
Set wvdoc.StartDateTime = AlarmTime
Set wvdoc.CalendarDateTime = AlarmTime     
Set wvdoc.~$AlarmTime = AlarmTime
Call wvdoc.ReplaceItemValue("$Alarm", 1)
AlarmSet = 1
wvdoc.RemoveItem("$AlarmOffset")
Call wvdoc.ReplaceItemValue("_ViewIcon",10)         
wvdoc.OrgDontDoubleBook = ""
wvdoc.OrgTable = ORS_ITEM_CALENDAR
wvdoc.~$PublicAccess = "0"     'Allgemeinen Zugriff verhindern

Call wvdoc.ComputeWithForm(True,False)
Call wvdoc.Save(True,False,True)   'Sichern und als gelesen markieren
Call wvdoc.PutInFolder("$Alarms")   'Damit autom. Benachrichtigung erfolgt in entspr. Ordner kopieren

'Hier übernimmst du die Daten in dein Dokument (Feldnamen beispielhaft)
doc.WiedervorlageDatum = wvdoc.StartDateTime
doc.WiedervorlageZeit = AlarmTime
Call doc.Save(True,False)

End Sub

--- Ende Code ---

Unten findest du noch eine Grafik der Teilmasken. Ich galube ich habe damals einfach die Felder aus dem entsprechenden Dokument aus der Mail-DB in meinen Dialog kopiert.


Axel

HelpMartin:
Danke Axel für die schnelle Unterstützung,

ich hab da aber noch ein paar Fragen:

(Set collection = currentdb.UnprocessedDocuments
If collection.Count = 0 Then
Messagebox "Sie haben keinen Eintrag markiert.", 64, "Adressen"
Exit Sub
End If  'If collection.Count = 0)
Grundsätzlich sollte das Script im Dokument starten und
nicht über eine Ansicht.

(If doc.Form(0) = "frmFirma" Then)

Dann auch nicht auf eine bestimmte Maske bezogen.
Da unterschiedliche Masken angesprochen werden müssen.
Hier gibt es dann eine Teilmaske mit gemeinsamen Feldern, die in allen Masken vorhanden ist.

Läßt sich das realisieren?

Gruß Martin

Axel:
Hi,

yoo, das sollte kein Problem sein.

So müsste das gehen

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument

Set uidoc = ws.Currentdocument   'Zugriff auf aktuelles Dokument
Set doc = uidoc.Document

'Felder aus Teilmaske (Feldnamen musst du anpassen)
eintrag = Trim$(doc.Vorname(0) & " " & doc.Name(0))

'Zugriff auf Maildatenbank und Prüfung ob im Kalenderprofil die Weckfunktion eingeschaltet ist.
MailDatenbank = Evaluate("@MailDbName")
...



Axel

HelpMartin:
Also Axel, das klappt schon mal vorzüglich!

Aber im Kalenderdok wollte ich noch ein weiteres Feld (Termin_ART) füllen.
Hab ich so versucht:

Erstellen einer Erinnerung innerhalb der Maildatenbank des Users     
     Set wvdoc = New NotesDocument(maildb)
     wvdoc.Form = "Appointment"
     wvdoc.AppointmentType = "4"
     wvdoc.ExcludeFromView = "D"
     wvdoc.Termin_ART = "Sonstiges"

Klappt aber nicht.

Des weiteren wollte ich den Meldetext ($AlarmDiscription) aus der Dialogmmaske ins Subject des KalenderDoks übertragen bzw. an den schon bestehenden Eintrag anhängen??

Und was noch ganz schön wäre: ein entsprechender DocLink im Body.

Gruß
Martin


Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln