Autor Thema: Kalendareintrag erstellen  (Gelesen 4825 mal)

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Kalendareintrag erstellen
« am: 11.04.06 - 09:38:29 »
Hallo,

ich will aus einer Datenbank mit Mitarbeiterstammdaten per Script einen Eintrag im Kalendar eines Benutzer setzen. Der Benutzer soll (am liebsten aus einer Ansicht - nicht im Frontend wie hier) per Schaltfläche einen "Reminder" oder ähnlich erstellen. Ausgangsfeld im Quelldokument ist "Geburtsdatum".

Das jetzige Script ist leider nur per Frontend ausführbar.
Das könnte ich aktzeptieren. Ich wollte nur kurz eure Meinung dazu hören, ob
dieses Script auch in R6 funktioniert. (bin gerade erst von R4->R6 gekommen)

Code
Sub Initialize
	
	
	Dim session As New NotesSession
	Dim ws As New NotesUIWorkspace    
	Dim uidoc As NotesUIDocument
	Dim rtitem As Notesrichtextitem     
	Dim success As Variant     
	Dim thedoc As Notesdocument      ' Das Originaldokument
	Dim docNew As NotesDocument      
	Dim thisdb As Notesdatabase      ' aktuelle Datenbank
	Dim userMailDb As New NotesDatabase( "", "" )
	Dim dateTime As NotesDateTime
	
	Set thisdb = session.currentdatabase    
	Set uidoc  = ws.Currentdocument
	Set thedoc = uidoc.document
	Call userMailDb.OpenMail
	
	ReminderDate$ = thedoc.Geburtstag(0)
	Set dateTime = New NotesDateTime( ReminderDate$ )
	
	If userMailDb.IsOpen Then
		Set docNew = New NotesDocument( userMailDb )   
		
		With docNew
			.Form = "Appointment"
			.ReplaceItemValue  "$Alarm",      1
			.ReplaceItemValue  "$AlarmDescription",   popUpStr
			.ReplaceItemValue  "$AlarmMemoOptions",  ""
			.ReplaceItemValue  "$AlarmOffset",    0
			.ReplaceItemValue  "$AlarmUnit",     "M"
			.ReplaceItemValue  "ViewIcon",     "67"
			.ReplaceItemValue  "ExcludeFromView",  "D"
			.ReplaceItemValue  "NoticeType",    "R"
			.ReplaceItemValue  "tmpDoNotProcess",  "1"   
			
			.Subject    = theDoc.Displayname
			.Alarms   = "1"
			
			.CalendarDateTime = dateTime.lsLocalTime
			.StartDate   = dateTime.lsLocaltime
			.StartTime  = dateTime.lsLocaltime
			.StartDateTime = dateTime.lsLocaltime
			.EndDate   = dateTime.lsLocaltime
			.EndTime  = dateTime.lsLocaltime
			.EndDateTime = dateTime.lsLocaltime
			
			.AppointmentType = "1"
			.ComputeWithForm False, False
			.Save True, False
			.PutInFolder( "$Alarms" )     
		End With
		
	End If
	
End Sub

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Kalendareintrag erstellen
« Antwort #1 am: 11.04.06 - 10:23:39 »
Auf den ersten Blick sieht das Script soweit recht gut aus. Probier's einfach aus.

Der Benutzer soll (am liebsten aus einer Ansicht - nicht im Frontend wie hier) per Schaltfläche einen "Reminder" oder ähnlich erstellen.

Das gehört aber auch zum Frontend. du meinst sicher, dass du nicht erst das Dokument öffnen musst um das Kalenderdokument zu erstellen.

In diesem Fall musst du das Script so ändern:

Code

Dim session As New NotesSession
Dim ws As New NotesUIWorkspace    
Dim rtitem As Notesrichtextitem     
Dim success As Variant     
Dim thedoc As Notesdocument      ' Das Originaldokument
Dim docNew As NotesDocument      
Dim thisdb As Notesdatabase      ' aktuelle Datenbank
Dim userMailDb As New NotesDatabase( "", "" )
Dim dateTime As NotesDateTime
Dim collection As NotesDocumentCollection
	
Set thisdb = session.currentdatabase    
Set collection = thisdb.UnprocessedDocuments

If collection.Count = 0 Then Exit Sub  'Wenn kein Dok. markiert beenden

If collection.Count > 1 Then
  Messagebox "Es darf nur ein Dokument markiert sein.", 16, "Kalendereintrag erstellen"
  Exit Sub
End If

Set thedoc = collection.GetFirstDocument

Call userMailDb.OpenMail
	
ReminderDate$ = thedoc.Geburtstag(0)
Set dateTime = New NotesDateTime( ReminderDate$ )
...


Den gesamten Code hinterlegst du dann in einer Ansichtenaktion.


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #2 am: 11.04.06 - 10:30:35 »
Es fehlt auf jeden Fall noch das Item $BusyName. Ohne dieses wird der Kalendereintrag nicht vom Scheduler beachtet.

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Kalendareintrag erstellen
« Antwort #3 am: 11.04.06 - 11:12:11 »
Es fehlt auf jeden Fall noch das Item $BusyName. Ohne dieses wird der Kalendereintrag nicht vom Scheduler beachtet.

Stimmt. Das kommt vom ersten Blick. :o


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #4 am: 11.04.06 - 11:14:44 »
$BusyName könnte vom ComputeWithForm gesetzt werden, aber das Thema Notes 6, Form Appointment und ComputeWithForm ist ja ein ganz eigenes. Dass ComputeWithForm hier mit False aufgerufen wird, spricht ja Bände. Wieweit ComputeWithForm also wirklich kommt, bleibt offen.

Bernhard

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: Kalendareintrag erstellen
« Antwort #5 am: 11.04.06 - 11:22:40 »
$BusyName könnte vom ComputeWithForm gesetzt werden, aber das Thema Notes 6, Form Appointment und ComputeWithForm ist ja ein ganz eigenes. Dass ComputeWithForm hier mit False aufgerufen wird, spricht ja Bände. Wieweit ComputeWithForm also wirklich kommt, bleibt offen.

Bernhard

ComputeWithForm True,True endete immer mit Fehlern beim Debuggen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #6 am: 11.04.06 - 11:31:43 »
Ja, sicher. Allerdings hat das nix mit Debuggen zu tun, sondern auch zur Laufzeit wird ComputeWithForm mit Fehlerstatus quittiert. Ich habe es bisher nicht geschafft, was hierbei die kritische Stelle der Appointment-Maske ist.

Bernhard

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: Kalendareintrag erstellen
« Antwort #7 am: 11.04.06 - 18:16:40 »
Kurze Frage noch.

Ich setze mit dem Script ja exakt das Geburtsdatum, also auch das Jahr, in den Kalendar.
Der Eintrag im Jahre 1970 ist eigentlich nicht gewünscht.
Doch mit dieser Problematik wollte ich mich später erst beschäftigen.
(und das ist jetzt)

Wie setze ich den Kalendereintrag mit Tag/Monat aus dem Feld und dem aktuellen Jahr.

Muß nicht (unbedingt) ein Wiederholungsintervall für die folgenden Jahre haben.

Danke.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #8 am: 12.04.06 - 15:36:59 »
Das Wiederholungsintervall (besser: Datumsliste) brauchst Du aber in CalendarDateTime. Du musst dieses Item also für die Anzahl der gewünschten anzuzeigenden Jahre füllen:
DD.MM.JJJJ
DD.MM.JJJJ+1
DD.MM.JJJJ+2

Bernhard

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: Kalendareintrag erstellen
« Antwort #9 am: 12.04.06 - 16:11:01 »
Wie bastel ich mir den aktuellen Geburtstag im aktuellen Jahr?

tag (von Feld "Geburstag")
monat (von Feld "Geburstag")
jahr (von heute)

?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #10 am: 12.04.06 - 16:37:15 »
Da nimmst Du die DateNumber-Funktion.

Bernhard

Offline Stefan Kleinschmidt

  • Frischling
  • *
  • Beiträge: 1
Re: Kalendareintrag erstellen
« Antwort #11 am: 15.02.07 - 15:46:39 »
Geburtstag im aktuellen Jahr:

Lotusscript:

Dim dtGeburtsdatum As Variant
Dim nTag As Integer
Dim nMonat As Integer
Dim nJahr As Integer
Dim dtGeburtstagDiesesJahr

dtGeburtsdatum = CDate(StringMitDatum) 
' oder bei NotesDateTime: dtGeburtsdatum = CDate(ndtDatum.Dateonly)
nTag = Day(dtGeburtsdatum)
nMonat = Month(dtGeburtsdatum)
nJahr = Year(dtGeburtsdatum)

dtGeburtstagDiesesJahr = DateNumber(nJahr, nMonat, nTag)


Formelsprache:

GeburtstagDiesesJahr := @Date(@Year(@Now); @Month(Geburtsdatum); @Day(Geburtsdatum));


Gruß,

Stefan Kleinschmidt

der sich mit diesem kleinen Posting hier mal vorstellen will.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendareintrag erstellen
« Antwort #12 am: 15.02.07 - 16:05:52 »
Willkommen im Forum, Stefan!

nTag = Day(dtGeburtsdatum)
nMonat = Month(dtGeburtsdatum)
nJahr = Year(dtGeburtsdatum)
Anmerkung:
nJahr = Year (Today).
In Formelsprache hast Du es doch richtig gemacht  ;)

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz