Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Wieder Outlook Termin diesmal löschen

Begonnen von Jonny, Februar 20, 2014, 16:09:17

⏪ vorheriges - nächstes ⏩

Jonny

Hallo,
eintragen klappt hiermit wunderbar:
      Set olApt = olApp.CreateItem(olAppointmentItem)
      With olApt
        .Body = "TEST"
        .AllDayEvent = False
        .ReminderMinutesBeforeStart = 0
        .Start = Me!TDatum + Me!TZeit
        .End = Me!TDatum + Me!TZeitEnde
        '.Duration = "45"
        .Subject = "Betreff"
        .Save
        .Move olCal
        Me!OutlookID = .EntryID
Ich merke mir also die EntryID damit ich sie zum löschen benötigen kann.
Jetzt das Problem:
Beim löschen suche ich diese entryid und finde sie nicht wieder.
Beim debuggen habe ich mir mal die entryid´s aus outlook angesehen.
Sie sind zwar ähnlich wie die in der Outlookid gespeichtern aber halt nicht gleich.
Als Test habe ich bei OutlookID mal die aus dem Debugger angegeben und es wird gelöscht.
Wo kann der Fehler sein?
Gruß
Johann

Hondo

Sieh mal hier:
http://accessworld.hoepker.de/outlook-termine-verwalten/outlooktermine-loeschen/

Jonny

Hallo Andreas,

das löschen mache ich mit so einer Routine.
Problem ist das die EntryID aus den Datensatz nicht gefunden wird.
Die Löschroutine habe ich schon getestet indem ich im Datensatz händisch die richtige EntryID
eingegeben habe. Es wird dann auch der richtige Termin gelöscht.
Es muss meiner Meinung nach schon beim spreichern des Termins die falsche EntryID zum DS
übergeben werden. Frage aber wo und warum?
Gruß
Johann

Hondo

tatsächlich, der gespeicherte ID ist beim Auslesen anderst. Hier mein Test
0000000027E45245FF76F14685AC31038D80B4E5842D2400
0000000027E45245FF76F14685AC31038D80B4E5A42D2400

Oben: ID beim Speichern
Unten: ID beim Auslesen aus Outlook

Da hast du jetzt natürlich die A...-Karte gezogen und musst dir anderst behelfen.

Hondo

Es sieht so aus als seien die letzten 8 Ziffern von Änderungen betroffen.
Aber ich hab eine Lösung gefunden. Mit CreationTime wird beim Erstellen des Termins ein Zeitstempel angelegt.
Speichere diesen beim Erstellen zwischen, und durchsuche direkt danach die Outlook-Termine nach diesem Zeitstempel, und du hast die korrekte EntryID.

Beispiel:
Sub Kalendereintrag()
    Dim creaTime As Date
    Dim olApp As Outlook.Application
    Dim olNS As Outlook.NameSpace
    Dim olCal As Outlook.MAPIFolder
    Dim olApt As AppointmentItem
    Set olApt = olApp.CreateItem(olAppointmentItem)
    Set olCal = olNS.GetDefaultFolder(olFolderCalendar).Folders("Wettkampftermine")
    With olApt
        .Body = "Wettkampf in Bodersweier!"
        .AllDayEvent = False
        .ReminderMinutesBeforeStart = 0
        .Start = "24.02.2014 19:30:00"
        .End = "24.02.2014 22:00:00"
        '.Duration = "45"
        .subject = "Wettkampf Lupi"
        .Save
        .Move olCal
        creaTime = .CreationTime
    End With

    Dim f As Object, olAppt As Object
    Set f = olApp.GetNamespace("MAPI").Session.Folders("Outlook-Datendatei").Folders("Kalender").Folders("Training")
    Set olAppt = f.Items.Add()
    For Each olAppt In f.Items
        If olAppt.CreationTime = creaTime Then
            Me.OutlookID = olAppt.EntryID
            Exit For
        End If
    Next olAppt
    Set olAppt = Nothing
    Set f = Nothing

    Set olCal = Nothing
    Set olNS = Nothing
    Set olApt = Nothing
End Sub


Gruß Andreas

Jonny

Hallo Andreas,
das ist ja von hinten durch die Brust ins Auge.
Aber es funktioniert einfach Klasse.
Danke dafür.

Gruß
Johann

Hondo

Bitte.
Ich denke wir haben da einen Bug in Office entdeckt. Fragt sich nur steckt der Bug in Outlook oder in Access?

Andreas