habe einen Fehler beim Schreiben von Terminen ins Outlook den ich nicht verstehe. In der u.a. Funktion stürzt das Programm immer bei oOutlook:quit ab mit der Meldung "Object has no method with this name" ab.
Grüsse
Rudolf
Code: Alles auswählen
PROCEDURE putoutlook_termin(cBetreff,cText,cOrt,dDatum,cZeit,nDauer)
******************************************************************
local oOutlook
default nDauer to 60
default cOrt to ""
default cBetreff to "Termin"
oOutlook := Outlook():New()
IF oOutlook:lVerbunden
oOutlook:SetTermin(cBetreff,cText,cOrt,dDatum,cZeit,nDauer)
ENDIF
oOutlook:quit() // !!!!!!!!!!!!!
oOutlook:destroy()
oOutlook := NIL
oContacts := NIL
RETURN
**********************************************
** Klasse für die Arbeit mit Microsoft Outlook
**********************************************
** Erstellt: Andreas Engler
** Datum: 26.09.2007
**********************************************
**Konstanten von Outlook
*Item-Type
*#DEFINE olAppointmentItem 1
*#DEFINE olContactItem 2
*#DEFINE olDistributionListItem 7
*#DEFINE olJournalItem 4
*#DEFINE olMailItem 0
*#DEFINE olNoteItem 5
*#DEFINE olPostItem 6
*#DEFINE olTaskItem 3
CLASS Outlook
EXPORTED:
METHOD Init
METHOD Destroy
METHOD SetTermin //einen neuen Termin im aktuellen Kalender anlegen
METHOD GetMsgTermine //Liste der Termine als Messagebox ausgeben
Var oOutlook //Outlook-Objekt
Var lVerbunden //Steht die Verbindung zu Outlook
ENDCLASS
METHOD Outlook:Init()
::lVerbunden := .f.
::oOutlook := CreateObject( "Outlook.Application" )
IF NIL == ::oOutlook
// Outlook.Application kann nicht erzeugt werden.
msgbox( "Fehler: "+alltrim(var2char(ComLastError()))+CRLF;
+"Beschreibung:"+CRLF;
+alltrim(var2char(ComLastMessage())),"Fehler")
else
::lVerbunden := .t.
ENDIF
RETURN self
METHOD Outlook:Destroy()
IF ::lVerbunden
::oOutlook:destroy()
ENDIF
::oOutlook := NIL
::lVerbunden := NIL
RETURN self
**einen neuen Termin im aktuellen Kalender anlegen
**Parameter:
**cBetreff - Betreff
**cNotiz - Notizen
**cOrt - Ort
**dDatum - Termindatum
**cZeit - Terminzeit (hh:mm:ss)
**nDauer - Dauer des Termines in Minuten
**nErinZeit - Erinnerung vor dem Termin in Minuten
METHOD SetTermin( cBetreff, cNotiz, cOrt, dDatum, cZeit, nDauer, nErinZeit )
local oTermin
local lOk := .f.
Default cBetreff to "Termin", cNotiz to "", dDatum to date(),;
cZeit to time(), cOrt to "", nDauer to 0,;
nErinZeit to 60
IF ::lVerbunden
oTermin := ::oOutlook:CreateItem( olAppointmentItem )
oTermin:Subject := cBetreff //Betreff
oTermin:Location := cOrt //Ort einstellen
oTermin:Start := alltrim(str(year(dDatum)))+"-"+strzero(month(dDatum),2)+"-"+strzero(day(dDatum),2)+" "+cZeit //Startdatum und Zeit einstellen
oTermin:Duration := nDauer //Dauer des Termins einstellen
oTermin:ReminderSet := .t. //Errinerung aktivieren
oTermin:ReminderMinutesBeforeStart = nErinZeit //Erinnerung vor dem Termin in Minuten
*oTermin:ReminderTime := dDatum //Datum und Zeit, zu denen die Erinnerung erfolgen soll
oTermin:Body := cNotiz
oTermin:save() //Termin speichern
*oTermin:Display() //Termin am Display anzeigen
lOk := .t.
ENDIF
RETURN lOk
**Liste der Termine als Messagebox ausgeben
METHOD GetMsgTermine()
local nCount := 0
local cMsg := ""
local i := 0
IF ::lVerbunden
nCount := ::oOutlook:Reminders:Count
IF nCount > 0
FOR i := 1 TO nCount
cMsg += ::oOutlook:Reminders:Item(i):Caption + CRLF // + " Termin: " + alltrim(var2char(::oOutlook:Reminders:Item(i):OriginalReminderDate))
NEXT
msgbox("Anzahl der Termine: "+var2char(nCount)+CRLF;
+cMsg,"Info")
else
msgbox("Keine Termine vorhanden!","Info")
ENDIF
ENDIF
RETURN self