Reoccuring Appts, (MS OO Model)

dayv2005

Member
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
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.
 
Back
Top