I am using hte microsoft outlook object model. I have been using version 9.1d and now im having a problem displaying reoccuring events in my application. They arn't even showing up. I can get all the other appointments to show up in my browser other than reoccuring ones.
Does anyone know how to do this. Here's my code snippet
Does anyone know how to do this. Here's my code snippet
Code:
/*------------------------------------------------------------------------------
Purpose: Generate the temp-tables with the appointment info
------------------------------------------------------------------------------*/
DO WITH FRAME default-Frame:
DEFINE VARIABLE cDateRange AS CHARACTER NO-UNDO.
DEFINE VARIABLE cEndTime AS CHARACTER NO-UNDO.
DEFINE VARIABLE cImport AS CHARACTER NO-UNDO.
DEFINE VARIABLE cLocation AS CHARACTER NO-UNDO.
DEFINE VARIABLE cStartDate AS CHARACTER NO-UNDO.
DEFINE VARIABLE cStartTime AS CHARACTER NO-UNDO.
DEFINE VARIABLE cSubject AS CHARACTER NO-UNDO.
DEFINE VARIABLE hAppt AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE hAppts AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE hFolder AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE hNameSpace AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE hOutlook AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE iTime AS INTEGER NO-UNDO.
DEFINE VARIABLE SafeItem AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE strSaveDir AS CHARACTER NO-UNDO.
DEFINE VARIABLE strTime AS CHARACTER NO-UNDO.
DEFINE VARIABLE theTime AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE theTime2 AS INTEGER INIT 1800 NO-UNDO.
IF SESSION:SET-WAIT-STATE("GENERAL") THEN.
HIDE bAllDAy bConflict.
CREATE "Outlook.Application" hOutlook NO-ERROR.
ASSIGN
hNameSpace = hOutlook:GetNameSpace("MAPI")
hFolder = hNameSpace:GetDefaultFolder(9) /* Calendar */
hAppts = hFolder:Items
cDateRange = "[Start] >= " + "~"" + STRING(scr-Date:SCREEN-VALUE) + " 12:00 am + "~"" + " and [Start] <= "~"" +
STRING(scr-Date:SCREEN-VALUE) + " 11:59 pm "~"" NO-ERROR.
hAppts:IncludeRecurrences = TRUE NO-ERROR.
hAppts = hAppts:Restrict(cDateRange) NO-ERROR.
hAppts:SORT("[Start]") NO-ERROR.
IF tApptsOnly:SCREEN-VALUE = "NO" THEN
DO WHILE theTime < 86400:
CREATE ttAppts.
ASSIGN
ttAppts.ttaStart = STRING(theTime, "HH:MM AM")
ttAppts.ttaEnd = STRING((theTime + 1800), "HH:MM AM")
ttAppts.ttaTimeInt = theTime.
thetime = thetime + 1800.
END.
CREATE "Redemption.SafeAppointmentItem" SafeItem.
hAppt = hAppts:GetFirst.
DO WHILE hAppt <> 0:
IF hAppt = 0 THEN LEAVE.
SafeItem:ITEM = hAppt.
SafeItem:saveas(cSaveDir,0) NO-ERROR.
IF SEARCH(cSaveDIr) = ? THEN LEAVE.
INPUT FROM value(cSaveDir) NO-ECHO.
REPEAT:
IMPORT UNFORMATTED cImport.
IF cImport = " ":U THEN NEXT.
IF cImport BEGINS "When:":U THEN /* Meeting Request */
DO:
ASSIGN
cStartTime = cImport
cEndTime = cStartTime
iTime = INDEX(cStartTime,":":U,7)
iTime = iTime - 2
cStartTime = SUBSTRING(cStartTime,iTime,8)
iTime = INDEX(cEndTime,":":U,iTime + 3)
iTime = iTime - 2
cEndTime = SUBSTRING(cEndTime,iTime,8)
cStartDate = SUBSTRING(cImport,iTime - 15,14).
IF cEndTime BEGINS "-":U THEN
ASSIGN cEndTime = SUBSTRING(cEndTime,2,LENGTH(cEndTime) - 1).
END.
IF cImport BEGINS "Start:":U THEN /* Appointment */
DO:
ASSIGN
cStartTime = cImport
iTime = INDEX(cStartTime,":",15)
iTime = iTime - 2
cStartTime = SUBSTRING(cStartTime,iTime,8)
cStartDate = SUBSTRING(cImport,iTime - 15,14).
END.
IF cImport BEGINS "End:":U THEN
ASSIGN
cEndTime = cImport
iTime = INDEX(cEndTime,":",15)
iTime = iTime - 2
cEndTime = SUBSTRING(cEndTime,iTime,8).
END.
INPUT CLOSE.
FIND ttAppts WHERE ttAppts.ttaStart = cStartTime NO-ERROR.
IF AVAILABLE ttAppts THEN
DO:
ASSIGN
ttAppts.ttaLocation = SafeItem:Location
ttAppts.ttaSubject = SafeItem:Subject
ttAppts.ttaDate = cStartDate
ttAppts.ttaStart = cStartTime
ttAppts.ttaEnd = cEndTime
ttAppts.ttaEntryID = SafeItem:EntryId.
END.
ELSE
DO:
CREATE ttappts.
ASSIGN
ttAppts.ttaLocation = SafeItem:Location
ttAppts.ttaSubject = SafeItem:Subject
ttAppts.ttaDate = cStartDate
ttAppts.ttaStart = cStartTime
ttAppts.ttaEnd = cEndTime
ttAppts.ttaEntryID = SafeItem:EntryId
ttAppts.ttaTimeInt = fGetIntOfTimeString(cStartTime).
END.
FIND ttappts WHERE ttappts.ttastart = "12:00 AM" AND ttappts.ttaend = "12:00 AM" NO-ERROR.
IF AVAILABLE ttappts THEN
DO:
ttappts.ttastart = "ALL".
ttappts.ttaend = "DAY".
ttappts.lAllday = TRUE.
IF tApptsOnly:SCREEN-VALUE = "yes" THEN
HIDE bAllday.
ELSE
VIEW bAllday.
END.
hAppt = hAppts:GetNext.
END.
IF tApptsOnly:SCREEN-VALUE = "NO" THEN
OS-DELETE VALUE(cSaveDir).
ASSIGN
hAppts = ?
hAppt = ?
hFolder = ?
hNameSpace = ?
hOutlook = ?.
RELEASE OBJECT hAppts NO-ERROR.
RELEASE OBJECT hAppt NO-ERROR.
RELEASE OBJECT hFolder NO-ERROR.
RELEASE OBJECT hNameSpace NO-ERROR.
RELEASE OBJECT hOutlook NO-ERROR.
RELEASE OBJECT SafeItem NO-ERROR.
IF tApptsOnly:SCREEN-VALUE = "NO" THEN
RUN ApptCleanUp.
IF SESSION:SET-WAIT-STATE("") THEN.
END.
END PROCEDURE.