Hallo,
ich sehe wahrscheinlich nicht mehr den Wald vor lauter Bäumen, denn ich sitze seit Stunden und finde den Fehler nicht.
Einfacher Plan. Alle Outlook-Termine sollen in eine Tabelle geschrieben werden und bei erneutem Import mittels EntryID geprüft werden, ob Sie schon vorhanden sind (ja, ich weiß, EntryID ist nicht zuverlässig, da das ganze aber auf den öffentlichen Ordner zugreift, habe ich nicht alle Rechte für z.b. UserProperties).
Bei der Methode rst.FindFirst im folgenden Code erhalte ich immer die Fehlermeldung
Laufzeitfehler '3077':
Syntaxfehler (fehlender Operator) in Ausdruck
Und ich finde es nicht.
BTW: der "Debug.Print objAppointment.EntryID" ist erfolgreich.
Private Sub TerminImportExtern_Click()
Dim objAppointment As Outlook.AppointmentItem
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("tblAbwesenheit", dbOpenDynaset)
For Each objAppointment In GetAppointmentFolderIntern.Items
With rst
Debug.Print objAppointment.EntryID
rst.FindFirst "EntryID =" & objAppointment.EntryID
If rst.NoMatch Then
rst.AddNew
rst!Betreff = objAppointment.Subject
rst!Inhalt = objAppointment.Body
rst!BeginntAm = objAppointment.Start
rst!EndetAm = objAppointment.End
rst!GeaendertAm = objAppointment.LastModificationTime
rst!EntryID = objAppointment.EntryID
'rst.Save
rst.Update
End If
End With
Next objAppointment
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
Wenn ich das findfirst und das if statement entferne, funzt alles, nur beim nächsten Import werden wieder alle Einträge neu geschrieben.
Kann mich bitte jemand erhellen?
Thx
Hallo,
vermutlich ist es nötig, die EntryID in den Datentyp des Tabellenfeldes zu konvertieren..
Danke für die schnelle Reaktion.
Da das Tabellenfeld mit LangerText deklariert ist und der Import der Daten ohne das findfirst funktioniert, wäre das nicht mein Ansatz gewesen.
Ist denn "LangerText" falsch?
die EntryID besteht ja auch Zahlen und Buchstaben.
Hallo nimora,
Dann versuche es mit
rst.FindFirst "EntryID ='" & objAppointment.EntryID & "'"
hth
gruss ekkehard
>:( das war es. Meine Herrn.
Wenn ich aber bemerken darf, dann geht das aus der MS Hilfe (https://msdn.microsoft.com/de-de/library/office/ff194787.aspx (https://msdn.microsoft.com/de-de/library/office/ff194787.aspx)) nicht so ganz eindeutig hervor.
Wenn man im Nachhinein natürlich darüber nachdenkt, ist genau das das Problem, dass es zusammen ein String werden muss und nciht nur das EntryID.
Besten DAnk für die schnelle Hilfe. Jetzt kann ich beruhigt ins WE gehen. Euch ein selbiges gutes...
Zitat von: Beaker s.a. am April 08, 2016, 17:50:24
Hallo nimora,
Dann versuche es mit
rst.FindFirst "EntryID ='" & objAppointment.EntryID & "'"
hth
gruss ekkehard