Outlookkalender

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Outlookkalender

Beitrag 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 :)
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Outlookkalender

Beitrag 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"
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Outlookkalender

Beitrag von Wolfgang Ciriack »

Ach so, es muss natürlich die outlook.ch eingebunden werden.
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlookkalender

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Outlookkalender

Beitrag von Werner_Bayern »

AUGE_OHR hat geschrieben:siehe dir mal http://xbaseforum.de/viewtopic.php?f=62&t=5186 an.
ist das ein falscher Link?
Du hast keine Berechtigung, dieses Forum zu lesen.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Outlookkalender

Beitrag 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
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlookkalender

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Outlookkalender

Beitrag von Werner_Bayern »

ok, danke. :|
es grüßt

Werner

<when the music is over, turn off the lights!>
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Outlookkalender

Beitrag von Benz »

ja, da komme ich auch nicht rein :) :D
@Wolfgang, schonmal danke, ich versuch das gleich mal :)

und noch ne Änderung des Beitrages :D : @Wolfgang: das ist ja jetzt eine COM-Schnittstelle oder nicht?
Antworten