Seite 1 von 1
Outlookkalender
Verfasst: Mi, 02. Sep 2015 9:21
von Benz
Hi,
Ich würde gerne schnell und einfach die Outlookfunktionen für den Kalender benutzen. Gibt es hierfür vielleicht eine DLL, die man einbinden kann
oder etwas ähnliches ? Vielleciht auch eine COM Schnittstelle ? Alles, was ich bisher gefunden hab bezieht sich auf das Senden/Empfangen von Mails.
Oder könnt ihr mir vielleicht eine andere Bibliothek für Kalenderfunktionen vorschlagen?
Bin für jede Antwort dankbar
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 11:38
von Wolfgang Ciriack
Hallo,
ich greife so auf den Outlook Kalender zu:
Code: Alles auswählen
oOutlook := CreateObject( "Outlook.Application" )
IF Empty(oOutLook)
** Fehlerbehandlung
return
ENDIF
oOutlook:TreatDateAsString(.T.)
oNS := oOutlook:GetNamespace( "MAPI" ) //* returns NameSpace
IF Empty(oNS)
** Fehlerbehandlung
return
endif
oTermine:=oNS:GetDefaultFolder(olFolderCalendar) //* Standard Kalenderfolder
if oTermine=NIL
oTermine:=oNS:PickFolder() //* returns NameSpace
if oTermine<>NIL
if oTermine:DefaultItemType<>olAppointmentItem
** Kein Kalender-Order gewählt
.......
.....
bSaveError := ErrorBlock() // alten Error-Codeblock sichern
ErrorBlock( {|e| Break(e)} ) // neuen Error-Codeblock etablieren - Break im Fehlerfall (Sprung zum "Recover")
BEGIN SEQUENCE
nOlAnzahl:=oTermine:items:count
for i:=1 to nOlAnzahl
oTermin := oTermine:items(i)
if !empty(oTermin)
dDatVon:=dfdt(oTermin:Start)
if oTermin:IsRecurring
** wiederholende Termin
oPatt:=oTermin:GetRecurrencePattern()
ty:=oPatt:RecurrenceType
t_von:=tfdt(oPatt:StartTime)
t_bis:=tfdt(oPatt:EndTime)
dBisDat:=dfdt(oPatt:PatternEndDate)
if dBisDat>=date()
** nur zukünftige Termine
do case
case ty=olRecursDaily
for x:=dDatVon to dBisDat
if x>=date()
vdat:=ctod(strzero(day(x),2)+"."+strzero(month(x),2)+"."+str(year(date()),4))
** Termin in Array
AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
endif
next
case ty=olRecursWeekly
for x:=dDatVon to dBisDat
if x>=date()
if IsBit(oPatt:DayOfWeekMask,dow(x))
AAdd(aOL,{D2DTKal(x, t_von),D2DTKal(x, t_bis),oTermin:Subject,oTermine:items(i)})
endif
endif
next
case ty=olRecursMonthly
for x:=month(dDatVon) to 12
if x>=month(date())
vdat:=ctod(strzero(oPatt:DayOfMonth,2)+"."+strzero(x,2)+"."+str(year(date()),4))
AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
endif
next
case ty=olRecursYearly
vdat:=ctod(substr(dtoc(dDatVon),1,6)+str(year(date()),4))
if vdat<date()
** immer nur 1 Jahr im Voraus
vdat:=ctod(substr(dtoc(dDatVon),1,6)+str(year(date())+1,4))
endif
AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
case ty=olRecursYearNth
case ty=olRecursMonthNth
endcase
endif
elseif dDatVon>=date()
AAdd(aOL, {oTermin:Start,oTermin:GetProperty("End"),oTermin:Subject,oTermine:items(i)})
endif
endif
next
RECOVER USING oError
END SEQUENCE
ErrorBlock(bSaveError) // alten Error-Codeblock restaurieren
** Dann Termine aus Array verarbeiten
Für Termine in Outlook einfügen verwende ich:
Code: Alles auswählen
oTermine:=oNS:GetDefaultFolder(olFolderCalendar) //* Standard Kalenderfolder
** oder statt Default Calender einen wählen oder angeben.
if (oSatz:=oTermine:Items:Add(olAppointmentItem))<>NIL
oSatz:subject:=...text
oSatz:start:=...datum/zeit
** evtl. Ende
oSatz:SetProperty("end",...datum/zeit)
oSatz:Save()
Umwandlung von Datum/Zeit in Outlook-Zeitstring
Code: Alles auswählen
static function D2DT(vdat, vtim)
return str(year(vdat),4)+"-"+strzero(month(vdat),2)+"-"+strzero(day(vdat),2)+" "+vtim+":00.000"
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 11:39
von Wolfgang Ciriack
Ach so, es muss natürlich die outlook.ch eingebunden werden.
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 17:32
von AUGE_OHR
Benz hat geschrieben:Ich würde gerne schnell und einfach die Outlookfunktionen für den Kalender benutzen. Gibt es hierfür vielleicht eine DLL, die man einbinden kann oder etwas ähnliches ?
siehe dir mal
http://xbaseforum.de/viewtopic.php?f=62&t=5186 an.
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 22:02
von Werner_Bayern
ist das ein falscher Link?
Du hast keine Berechtigung, dieses Forum zu lesen.
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 22:13
von Martin Altmann
Nein Werner, kein falscher Link. Er führt in den nur für Mitglieder des Vereins zugänglichen Bereich.
Viele Grüße,
Martin
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 22:14
von AUGE_OHR
Werner_Bayern hat geschrieben:ist das ein falscher Link?
Du hast keine Berechtigung, dieses Forum zu lesen.
sorry ... ich habe nicht darauf geachtet das es unter
Foren-Übersicht » Deutschsprachige Xbase-Entwickler e. V. » Mitgliederbereich » Xbase-Entwickler: Projekte
liegt.
Re: Outlookkalender
Verfasst: Mi, 02. Sep 2015 22:25
von Werner_Bayern
ok, danke.
Re: Outlookkalender
Verfasst: Do, 03. Sep 2015 8:52
von Benz
ja, da komme ich auch nicht rein
@Wolfgang, schonmal danke, ich versuch das gleich mal
und noch ne Änderung des Beitrages
: @Wolfgang: das ist ja jetzt eine COM-Schnittstelle oder nicht?