Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: nimora am April 08, 2016, 17:33:14

Titel: rst.FindFirst Laufzeitfehler 3077 - fehlender Operator
Beitrag von: nimora am April 08, 2016, 17:33:14
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
Titel: Re: rst.FindFirst Laufzeitfehler 3077 - fehlender Operator
Beitrag von: DF6GL am April 08, 2016, 17:38:40
Hallo,

vermutlich ist es nötig, die EntryID in den Datentyp des Tabellenfeldes zu konvertieren..
Titel: Re: rst.FindFirst Laufzeitfehler 3077 - fehlender Operator
Beitrag von: nimora am April 08, 2016, 17:42:56
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.
Titel: Re: rst.FindFirst Laufzeitfehler 3077 - fehlender Operator
Beitrag 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
Titel: Re: rst.FindFirst Laufzeitfehler 3077 - fehlender Operator
Beitrag von: nimora am April 08, 2016, 18:02:34
 >:( 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