Domino 9 und frühere Versionen > Entwicklung
Kalender erstellt und Probleme...
mangler:
Hi @ll,
ich hab eine neue Kalenderansicht erstellt und eine Maske, mit der ich Termine eintragen kann. Funzt soweit alles auch ganz prima. Aber wenn ich einen Termin nicht für Heute, sondern z.B. Morgen erstellen will, klick in die Kalenderanzeige für den 18.03.03 und sag "Neuer Termin" übernimmt er nicht das ausgewählte Datum sondern bleibt beim heutigen Datum. Ich hab schon einiges ausprobiert, finde aber keine Lösung dafür.
Hat Jemand von Euch eine Idee?
Interessant wäre für mich auch die Funktion, Termine die über mehrere Tage gehen, für jeden Tag anzeigen zu lassen, aber dafür habe ich auch noch keine Möglichkeit gefunden, obwohl ich Anfangs- und Enddatumsfelder eingerichtet habe.
Bitte helft mir.
Rob Green:
dazu brauchst Du das Kalender spezifische Event "RegionDoubleClick"
beispiel aus Help...
Sub Regiondoubleclick(Source As Notesuiview)
Messagebox Source.CalendarDateTime,, _
"Date and time for this region"
End Sub
Aus der KLasse NotesUIView kommt das CalendarDateTime (Variant):
Data type
Variant of type DATE
Syntax
To get: dateV = notesUIView.CalendarDateTime
Usage
This is the target date-time when the user does a copy, paste, or drag and drop operation in a calendar view.
Das kannst Du auslesen und nutzen.
Und wegen dem übergreifenden Termin:
Du kannst höchstens auf Basis eines Termindoc ein @explode auf das Startdatum/Zeit und Enddatum/Endzeit setzen.
Nutze die Formel:
_VarRange:=
@Explode(
@TextToTime(
@Text(StartDate;"D0S0") + " - " + @Text(EndDate;"D0S0")
)
);
_VarRange
=> ergibt 12.03.03 18:00 - 13.03.03 18:00 - 14.03.03 18:00)
(wobei StartDate bereits das komplette Datum incl. Startzeit enthält...zB "12.03.2003 18:00").
Wenn Du nun eine Spalte in der View baust, die Mehrfachwerte getrennt anzeigt, dann hast Du tagesübergreifende Termine.
Unschön & großes Manko: der Termin am 13.03. "geht" dann eben von Startzeit - Endzeit...normalerweise wäre das aber am 2. Tag von 00:01 - 23:59, also ganztägig...tja...UND die für Kalender wichtige Duration passt damit auch nit...UND...niedrigere Endzeiten als Startzeíten sind zwar logisch klar, aber im Notes ergibt das Schrott.
Ausweg: Einzeldocs aus Eingabe basteln per Script.
Rob Green:
mit Script habe ich das verwendet...ist etwas länger...
--- Code: ---If doc.Tage(0)>1 Then
days = doc.Tage(0)
daycounter = Cint(days)
'letzte Datum Zeit der Beleihung neu bilden
Set EndDateFirstT = New NotesDateTime(StartDateFirstT.dateonly & " " & StartZeitLastT.TimeOnly) ' Tag momentan auch 01.01.03 00:01 Uhr
Set EndDateLastT = New NotesDateTime(StartDateFirstT.dateonly & " " & EndZeitLastT.Timeonly) ' Tag momentan bis 01.01.03 08:00 Uhr
Call EndDateFirstT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 00:01 Uhr
Call EndDateLastT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 08:00 Uhr
For i = 0 To daycounter
Set newdoc = db.CreateDocument
Call doc.CopyAllItems(newdoc, True)
newdoc.DateCreated = Today
If i=0 Then 'erste Lauf erster Tag der Beleihung
Dim FirstDayEndSave2 As New NotesDateTime( StartDateFirstT.dateOnly & " " & EndZeitFirstT.TimeOnly ) 'zB 01.01. 23:59 Ende 1. Tag
Dim FirstDayStartSave2 As New NotesDateTime( StartDateFirstT.dateOnly & " " & StartZeitFirstT.TimeOnly ) 'zB 01.01. 14:00 Beginn
newdoc.EndDatumZeit = FirstDayEndSave2.LSLocalTime
newdoc.EndDateTime = FirstDayEndSave2.LSLocalTime
newdoc.EndDate = FirstDayEndSave2.LSLocalTime
newdoc.StartDatumZeit = FirstDayStartSave2.LSLocalTime
newdoc.StartDateTime = FirstDayStartSave2.LSLocalTime
newdoc.StartDate = FirstDayStartSave2.LSLocalTime
Call newdoc.ReplaceItemValue( "StartTime",StartZeitFirstT)
Call newdoc.ReplaceItemValue( "EndTime",EndZeitFirstT)
LetzteTag = doc.EndDatumZeit(0)
ErsteTag = doc.StartDatumZeit(0)
LetzteTag1$ = Cstr(LetzteTag)
ErsteTag1$ = Cstr(ErsteTag)
Call newdoc.ReplaceItemValue("Ganztagshinweis","Ganztagstermin vom " & ErsteTag1$ & " bis zum " & LetzteTag1$)
newdoc.TagePKW = doc.Tage(0)
START$ = FirstDayStartSave2.DateOnly
ENDE$ = FirstDayEndSave2.DateOnly
Datumse = "["+ START$ +"-"+ ENDE$ +"]"
WERTE = Evaluate( { @Explode( @TextToTime( "} & DATUMSE & {" ) ) } )
newdoc.explodeDatum=WERTE
newdoc.ID=IDSave
newdoc.form="Buchung"
Call newdoc.computewithform( False, False )
Call newdoc.Save(True, False)
Print "Neuer Ganztagstermin " & Cstr(FirstDayStartSave2.LSLocalTime)
End If
If i>0 And i<daycounter Then 'nächster Tag der Beleihung bis vor letzten Tag der Rückgabe
Set NextDateFirstT = New NotesDateTime(StartDateFirstT.dateonly & " " & StartZeitLastT.TimeOnly) 'zweiter Tag momentan auch 01.01.03 00:01 Uhr
Set NextDateLastT = New NotesDateTime(StartDateFirstT.dateonly & " " & EndZeitFirstT.Timeonly) 'zweiter Tag momentan auch bis 01.01.03 23:59 Uhr
Call NextDateFirstT.AdjustDay( i) ' auf nächsten Tag hochzaehlen zB 02.01.03 00:01 Uhr
Call NextDateLastT.AdjustDay( i) ' auf letzten Tag hochzaehlen zB 02.01.03 23:59 Uhr
newdoc.EndDatumZeit = NextDateLastT.LSLocalTime
newdoc.EndDateTime = NextDateLastT.LSLocalTime
newdoc.EndDate = NextDateLastT.LSLocalTime
newdoc.StartDatumZeit = NextDateFirstT.LSLocalTime
newdoc.StartDateTime = NextDateFirstT.LSLocalTime
newdoc.StartDate = NextDateFirstT.LSLocalTime
Call newdoc.ReplaceItemValue( "StartTime",StartZeitLastT)
Call newdoc.ReplaceItemValue( "EndTime",EndZeitFirstT)
Call newdoc.ReplaceItemValue( "DispDuration","24 Std.")
LetzteTag = doc.EndDatumZeit(0)
ErsteTag = doc.StartDatumZeit(0)
LetzteTag1$ = Cstr(LetzteTag)
ErsteTag1$ = Cstr(ErsteTag)
Call newdoc.ReplaceItemValue("Ganztagshinweis","Ganztagstermin vom " & ErsteTag1$ & " bis zum " & LetzteTag1$)
newdoc.TagePKW = doc.Tage(0)
START$ = NextDateFirstT.DateOnly
ENDE$ = NextDateLastT.DateOnly
Datumse = "["+ START$ +"-"+ ENDE$ +"]"
WERTE = Evaluate( { @Explode( @TextToTime( "} & DATUMSE & {" ) ) } )
newdoc.explodeDatum=WERTE
newdoc.ID=IDSave
newdoc.form="Buchung"
Call newdoc.computewithform( False, False )
Call newdoc.Save(True, False)
Print "Neuer Ganztagstermin " & Cstr(NextDateFirstT.LSLocalTime)
End If
If i=daycounter Then 'letzter Tag der Beleihung = Tag der Rueckgabe
newdoc.EndDatumZeit = EndDateLastT.LSLocalTime 'Zb 03.01. 12:00 Uhr Rückgabe
newdoc.EndDateTime = EndDateLastT.LSLocalTime
newdoc.EndDate = EndDateLastT.LSLocalTime
newdoc.StartDatumZeit = EndDateFirstT.LSLocalTime
newdoc.StartDateTime = EndDateFirstT.LSLocalTime
newdoc.StartDate = EndDateFirstT.LSLocalTime
Call newdoc.ReplaceItemValue( "StartTime",StartZeitLastT) 'zB 03.01. 00:01
Call newdoc.ReplaceItemValue( "EndTime",EndZeitLastT)
LetzteTag = doc.EndDatumZeit(0)
ErsteTag = doc.StartDatumZeit(0)
LetzteTag1$ = Cstr(LetzteTag)
ErsteTag1$ = Cstr(ErsteTag)
Call newdoc.ReplaceItemValue("Ganztagshinweis","Ganztagstermin vom " & ErsteTag1$ & " bis zum " & LetzteTag1$)
newdoc.TagePKW = doc.Tage(0)
START$ = EndDateFirstT.DateOnly
ENDE$ = EndDateLastT.DateOnly
Datumse = "["+ START$ +"-"+ ENDE$ +"]"
WERTE = Evaluate( { @Explode( @TextToTime( "} & DATUMSE & {" ) ) } )
newdoc.explodeDatum=WERTE
newdoc.ID=IDSave
newdoc.form="Buchung"
Call newdoc.computewithform( False, False )
Call newdoc.Save(True, False)
Print "Neuer Ganztagstermin " & Cstr(EndDateFirstT.LSLocalTime)
End If
Next
End If
--- Ende Code ---
mangler:
Danke für die schnelle Hilfe, aber kannst du einem Lotus Script Anfänger vielleicht etwas helfen?
Rob Green:
als Anfänger das Teil da oben..oups...hm..was/wo soll ich Dir denn helfen?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln