Autor Thema: Kalendereintrag  (Gelesen 6023 mal)

Devil

  • Gast
Kalendereintrag
« am: 29.02.08 - 09:25:19 »
Hallo zusammen,

ich habe folgendes Problem. Ich entwickle gerade eine Urlaubsdatenbank in welcher der Benutzer die Möglichkeit hat, dass wenn sein Urlaub genehmigt ist über einen Button seinen Urlaub in seinen persönlichen Kalender einzutragen. Wenn nun das Startdatum der 01.03.2008 ist und das Enddatum der 03.03.2008 dann trägt mein Script nur einen Eintrag bei 01.03.2008 ein aber an den anderen zwei Tagen fehlt ein Eintrag.

Ich hab hier mal mein Script gepostet. Was fehlen da noch für Felder die gefüllt werden müssen oder bin ich es völlig falsch angegangen?


Sub Click(Source As Button)
   
   Dim ss As New NotesSession
   Dim db As NotesDatabase
   Dim dbl As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uiDoc As NotesUIDocument
   Dim Doc As NotesDocument
   
   Set uiDoc = ws.CurrentDocument
   Set Doc = uiDoc.Document
   Set dbl = ss.CurrentDatabase
   
   Dim BoxTyp As Long
   Dim Antwort As Integer
   Dim BoxMsg As String
   Dim StringStartDate As String
   Dim StringEndDate As String
   
   BoxTyp = MB_OK + MB_ICONINFORMATION
   BoxMsg = |Es wurde ein automatischer Eintrag in ihrem Kalender vorgenommen!|
   Messagebox BoxMsg, BoxTyp, "Hinweis"
   
               'Kalendereintrag in Mailfile erstellen
   Dim dateRange As NotesDateRange
   
   StringStartDate = uidoc.FieldGetText("StartDate")
   StringStartDate = StringStartDate + " 04:00 AM"
   
   StringEndDate = uidoc.FieldGetText("EndDate")
   StringEndDate = StringEndDate + " 11:00 PM"
   
   Dim startDate As New NotesDateTime(StringStartDate)
   Dim endDate As New NotesDateTime(StringEndDate)
   Dim rtitem As NotesRichTextItem
   
   rc = Evaluate(|@MailDbName|)
   Set db = ss.GetDatabase(rc(0), rc(1))
   Set doc = db.CreateDocument
   Set dateRange = ss.CreateDateRange
   Set dateRange.StartDateTime = startDate
   Set dateRange.EndDateTime = endDate
   Set rtitem = doc.CreateRichTextItem("Body")
   doc.Subject = uidoc.FieldGetText("Subject")
   Call rtitem.AppendText("Link zur Urlaubsantrag DB, die diesen Eintrag bei der Buchung automatisch erstellt hat: ")
   Call rtitem.AppendDocLink(dbl, dbl.Title)
   'doc.CHAIR = uidoc.FieldGetText("CreatedBy")
   'doc.PRINCIPAL = uidoc.FieldGetText("CreatedBy")
   'doc.Location = uidoc.FieldGetText("Location") + ", " +uidoc.FieldGetText("Room")
   doc.Form = "Appointment"
   doc.AppointmentType = "2"
   Set doc.TimeRange = dateRange
   Set doc.CalendarDateTime = startDate
   Set doc.startDate = startDate
   Set doc.startDateTime = startDate
   Set doc.startTime = startDate
   Set doc.endDate = endDate
   Set doc.endDateTime = endDate
   Set doc.endTime = endDate
   Call doc.ReplaceItemValue("Org_Table", ORS_ITEM_PLANNER)   
   doc.KLCategories_2 = "Urlaubsplan"   
   doc.Alarms = "0"
   doc.Logo="StdNotesLtr14"
   doc.BookFreeTime = ""
   doc.Duration = 105
   doc.SequenceNum = 1
   doc.OrgTable = "CO"
   doc.tmpOwnerHW = "1"
   doc.WebDateTimeInit = "1"
   doc.ComputeWithForm False, False
   doc.save True, False
   'Call uidoc.Save
   uidoc.EditMode = False
End Sub

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #1 am: 29.02.08 - 09:35:33 »
Steht in CalendarDateTime nur das Startdatum ? Wenn ja, liegt hier der Hund begraben.

Devil

  • Gast
Re: Kalendereintrag
« Antwort #2 am: 29.02.08 - 09:41:36 »
In CalendarDateTime steht 01.03.2008 04:00:00 CET

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #3 am: 29.02.08 - 09:47:04 »
Ebend.

Dann vergleich das mal mit einem Termin im Kalender (der über mehrere Tage geht)....

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendereintrag
« Antwort #4 am: 29.02.08 - 09:55:18 »
Zitat
In the case of Repeating All-Day Events, one parent document and multiple child documents (one for each repeating instance) are created. All the documents use the “Appointment” form. The children have the “CalendarDateTime” item and therefore appear in the Calendar view. The parent document has no “CalendarDateTime” item and can be seen only in the “All Documents” view.

IBM® Lotus Notes Calendaring & Scheduling Schema
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Devil

  • Gast
Re: Kalendereintrag
« Antwort #5 am: 29.02.08 - 10:00:30 »
Bei einem Termin der über mehere Tage geht steht in CalendarDateTime:
01.03.2008 04:00:00 CET
03.03.2008 04:00:00 CET

Wie füge ich dem Feld CalendarDateTime nun das Enddatum hinzu?

Call doc. ApppendItemValue("CalendarDateTime", EndDate) ??

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #6 am: 29.02.08 - 10:06:39 »
Ohne Gewehr; hab das hier gefunden:

Code
eval = Evaluate(|@Explode(@TextToTime(@Text(von_dat) + "-" + @Text(bis_dat)))| , doc)
	Forall x In eval
		x = x + " 04:00:00"
	End Forall

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendereintrag
« Antwort #7 am: 29.02.08 - 10:07:25 »
Multi-Value Felder werden in LotusScript durch ein Array repräsentiert => Array mit denZeitwerten aufbauen und einmal als Wert bei AppendValue übergeben.

@Klauss: Das Evalute ist nicht mehr notwenigd. Es gibt mittlerweile schon Split und Join. ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #8 am: 29.02.08 - 10:09:24 »
@m3:

das hab ich einer DB, die schon uralt ist.... aber funzt  ;)

Devil

  • Gast
Re: Kalendereintrag
« Antwort #9 am: 29.02.08 - 11:40:59 »
Sorry aber ich bin noch realtiv neu in Lotusscript. Ich hab nun noch folgendes Problem.

Ich muss ja wenn die ganztägige Veranstaltung von 01.03.2008 bis 03.03.2008 geht in CalendarDateTime folgendes eintragen:
01.03.2008 04:00:00 CET
02.03.2008 04:00:00 CET
03.03.2008 04:00:00 CET

Ich habe aber nur StartDate als NotesDateTime und EndDate als NotesDateTime. Wie berechne ich nun alle Tage und trage dies in das CalendarDateTime Feld ein??


klaussal

  • Gast
Re: Kalendereintrag
« Antwort #10 am: 29.02.08 - 11:55:17 »
Siehe #6.


So ungefähr:
Zitat
eval = Evaluate(|@Explode(@TextToTime(@Text(von_dat) + "-" + @Text(bis_dat)))| , doc)
   Forall x In eval
      x = x + " 04:00:00"
   End Forall
   
   Dim datev() As Variant
   
   For i = 0 To Ubound(eval)
      Redim Preserve datev (i + 1)
      datev (i) = Cdat (eval(i))      
   Next
      
                ...
                ... 
   
   docMail.CalendarDateTime = datev
« Letzte Änderung: 29.02.08 - 11:58:00 von klauss »

Devil

  • Gast
Re: Kalendereintrag
« Antwort #11 am: 29.02.08 - 12:14:19 »
Okay also mit dem hier:

eval = Evaluate(|@Explode(@TextToTime(@Text(von_dat) + "-" + @Text(bis_dat)))| , doc)
   Forall x In eval
      x = x + " 04:00:00"
   End Forall


von welchem Datentyp muss von_dat und bis_dat sein? NotesDateTime?

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #12 am: 29.02.08 - 12:14:47 »
Datum.


Und hier  gibt es eine fertige Urlaubs-DB.

http://atnotes.de/index.php?board=8%3baction=display%3bthreadid=4126

Devil

  • Gast
Re: Kalendereintrag
« Antwort #13 am: 29.02.08 - 13:33:37 »
Also irgendwie funktioniert das nicht so ganz. StartDate und EndDate sind als Maskenfelder vom Typ Datum/Zeit.

Wenn ich das nun so versuche enthält mein eval keine Werte.


StringStartDate = Cdat(doc.StartDate(0) + " 04:00:00")
   StringEndDate = Cdat(doc.EndDate(0) + " 04:00:00")
   
   
   
   eval = Evaluate(|@Explode(@TextToTime(@Text(StringStartDate) + "-" + @Text(StringEndDate)))| , doc)

Devil

  • Gast
Re: Kalendereintrag
« Antwort #14 am: 29.02.08 - 16:38:09 »
Okay hat sich nun erledigt. Vielen Dank für die Hilfe.

klaussal

  • Gast
Re: Kalendereintrag
« Antwort #15 am: 29.02.08 - 17:24:59 »
Jetzt wäre es auch noch schön gewesen zu erfahren, wo es denn geklemmt hat.

Offline guesswho

  • Senior Mitglied
  • ****
  • Beiträge: 291
Re: Kalendereintrag
« Antwort #16 am: 29.02.08 - 18:08:56 »
jepp, immer wieder schade, wenn man auf eine vermeintliche Lösung trifft, aber dann die eigentliche Lösung fehlt...

Jo
5 Server 9.x auf W2K3/W2K8
ca. 550 Clients: 9.x auf Win7
Notes Traveler
iQ.Suite
BCC Charon 4
panagenda Marvel Client
BES 10/12 und viele Blackberrys
paar iPad und iPhones
Teamstudio

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendereintrag
« Antwort #17 am: 29.02.08 - 22:50:03 »
Das ist wirklich schade, Jo. Trauriger ist aber eigentlich, wenn man immer wieder sieht, wie immer wieder Anwendungen neu "erfunden" werden, die es längst schon gibt: Stabil, viel umfangreicher, als es der "Newbee" hinbekommen würde - und viel, viel billiger als die "Neuerfindung". Welcher Chef kommt nur auf solche Schnapsidee, das Rad neu erfinden zu lassen?

Bernhard

Ein post scriptum an den "Teufel": Das Evaluate-Statement (wie gepostet) ist grundlegend falsch. Weierhin bin ich mir sehr sicher, dass es daher auch an anderen Stellen grundlegend noch klemmend wird. Daher: Wenn diese "Urlaubs-DB" jemals fertig wird, dann wird sie sehr teuer geworden werden (ha, das war futurum II ...  ;D)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz