Neuigkeiten:

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

Mobiles Hauptmenü

rst.FindFirst Laufzeitfehler 3077 - fehlender Operator

Begonnen von nimora, April 08, 2016, 17:33:14

⏪ vorheriges - nächstes ⏩

nimora

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

DF6GL

Hallo,

vermutlich ist es nötig, die EntryID in den Datentyp des Tabellenfeldes zu konvertieren..
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

nimora

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.

Beaker s.a.

Hallo nimora,
Dann versuche es mit
rst.FindFirst "EntryID ='" & objAppointment.EntryID & "'"
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

nimora

 >:( 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) 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