none
programmgesteuertes Verschieben von Terminen - Errinnerung dennoch zum alte Zeitpunkt RRS feed

  • Frage

  • Mit folgendem Code lege ich programmgesteuert Termine an:

    Function ExchangeTerminAnlegen(Beginn As Date, Dauer As Integer, ByVal subj As String, text As String) As Variant
        Dim oMAPISession, MAPIFolder, TerminFolder As MAPI.Folder
        Dim Termin As MAPI.AppointmentItem
        
        Set ExchangeTerminAnlegen = Nothing
        
        Set oMAPISession = CreateObject("MAPI.Session")
        If IsNull(oMAPISession) Then
            Debug.Print "Session fehlgeschlagen"
            Exit Function
        End If
        
        oMAPISession.Logon "", "", False, True, 0, True, "exchange" & vbLf & "nico"
        
        Set TerminFolder = oMAPISession.GetDefaultFolder(CdoDefaultFolderCalendar)
        If IsNull(TerminFolder) Then
            Debug.Print "Terminfolder konnte nicht festgelegt werden"
        End If
        
        Set Termin = TerminFolder.Messages.Add
        If IsNull(Termin) Then
            Debug.Print "Termmin konnte nicht angelegt werden!"
            Stop
            Exit Function
        End If
        
           
        Termin.Subject = subj
        Termin.StartTime = Beginn
        Termin.EndTime = DateAdd("n", Dauer, Beginn)
        Termin.ReminderMinutesBeforeStart = 480
        Termin.text = text
        'Termin.Categories = "Gutachtentermin"
        Termin.Update
        Debug.Print "Exchange-Etntry ID: " & Termin.ID
        ExchangeTerminAnlegen = Termin.ID
        
        Set Termin = Nothing
        Set TerminFolder = Nothing
        oMAPISession.Logoff
        Set oMAPISession = Nothing
    End Function

    Man beachte die Zeile mit .ReminderMinutesBeforeStart.

    Die Termin.ID wird anschl in der DB gespeichert und dient dazu den Termin weiderzufinden; z.B. zum verschieben bei Änderungen

    So wird ein Termin verschoben:

        oMAPISession.Logon "", "", False, True, 0, True, "exchange" & vbLf & "nico"
        Set TerminFolder = oMAPISession.GetDefaultFolder(CdoDefaultFolderCalendar)
        
        Set oApp = oMAPISession.GetMessage(rs.Fields("GA_Termin_outlook_EntryID"))
        
        With oApp
    
            .StartTime = NeuerTermin
            .EndTime = DateAdd("n", 45, NeuerTermin)
            
            .text = .text + vbCrLf + "Neuer Termin: " + CStr(rs![GA_Untersuchungstermin_wann]) + _
                "    " + CStr(Now)
            
            If InStr(1, .Subject, "*VERSCHOBEN*") = 0 Then
                .Subject = .Subject + " *VERSCHOBEN*"
            End If
            .Update
        End With
        Set oApp = Nothing
        oMAPISession.Logoff

    Der Termin wird über die gespeiherte ID gefunden und zur Bearbeitung geöffnet.

    Leider bleibt der ERinnerungszeitpunkt für den ursprünglichen Zeitpunkt erhalten - nervt!

    Gibt es eine bessere Methode Termine zu verschieben ?

    Das Ganze wird übirgens mit Exchange2007 realisiert

    • Verschoben Alex Pitulice Dienstag, 6. März 2012 09:30 Off-Topic MSDN Frage (aus:Exchange Server)
    Dienstag, 28. Februar 2012 14:38

Alle Antworten