Neuigkeiten:

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

Mobiles Hauptmenü

Fehler beim Zugriff auf Outlook - Öffentliche Ordner

Begonnen von nimora, August 06, 2015, 18:40:17

⏪ vorheriges - nächstes ⏩

nimora

danke euch beiden, auch wenn ich Maggies Logik zustimme, ist beides für ein weiteres Verständnis hilfreich.

Die Behandlung mit einerError-Routine kann helfen, löst natürlich nicht das Grundproblem.

ich habe jetzt festgestellt, dass der Fehler nicht kommt, wenn ich mir nur ein debug.print ausgebe (was aber auch schon aufgetreten ist, nun aber nicht mehr).

der fehler kommt nur noch, wenn ich den sql-befehl ausführen lasse. jetzt aber Laufzeitfehler 3075, Syntaxfehler, fehlernder operator in Abfrageausdruck. siehe Bild.

ist da nun ein fehler im sql-Statement? eher nicht, da es ja bis zum fehler funktioniert und die tabelle gefüllt wird und im fehler ja eine explizite Mail zu sehen ist.

Ich versuche das jetzt mal mit einer error-routine abzufangen, es wäre aber trotzdem nett von euch, wenn ihr zu den Fehlern noch etwas sagen könntet.

@Maggie: Folte deiner Intuition :) der ausdruck im lokalen fenster ist so umfangreich, dass das wohl eher ein stochern als ein suchen ist und ich kann ja nichts mit dem anfangen was da steht, nicht interpretieren. Mir ist ja nicht klar, ob die inhalte da so stehen sollen oder eben nicht. :/

MaggieMay

Hi,
Zitatlöst natürlich nicht das Grundproblem
das "Grundproblem" könnte auch sein, dass wir überhaupt nicht wissen, was du vorhast.
Zitatdass der Fehler nicht kommt, wenn ich mir nur ein debug.print ausgebe
Etwas anderes hast du uns aber auch bislang noch gar nicht gezeigt.
Erkläre das bitte genauer und zeige den Code dazu.
Zitatist da nun ein fehler im sql-Statement?
Was für ein SQL-Statement?
Ganz gewiss liegt die Ursache des Fehlers in den Daten - bzw. im Umgang damit.
Zitatund ich kann ja nichts mit dem anfangen was da steht, nicht interpretieren
Benutze die OL-Hilfe, um die Bedeutung und Verwendbarkeit der angezeigten Eigenschaften zu verstehen.
Das hat auch mir in meiner "Learning by Doing"-Phase mit Office/Access immer wieder sehr geholfen.
Freundliche Grüße
MaggieMay

nimora

Also, natürlich ist der Grundgedanke nicht der gewesen, sich ein debug.print ausgeben zu lassen. Ich will die Daten aus Outlook in eine Tabelle bekommen. Es stimmt, dies habe ich letztlich noch nicht mitgeteilt. Ich habe den Code wie folgt erweitert:
Option Compare Database
Option Explicit

Private Sub Befehl17_Click()
' ##################### OutlookImport ##################################
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim outObject, Mapi, Inbox, Inbox1, Mail
Dim strSQL As String

Set rs = CurrentDb.OpenRecordset("OutlookImport")
Set outObject = CreateObject("Outlook.Application")
Set Mapi = outObject.GetNamespace("MAPI")

Set Inbox = Mapi.GetDefaultFolder(olFolderInbox).Folders("import")

For Each Mail In Inbox.Items

  strSQL = "INSERT INTO OutlookImport (Nachricht, AbsenderMail) VALUES ('" & Mail.Body & "', '" & Mail.SenderEmailAddress & "');"

        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
   
Next
    Forms![OutlookImport].Requery 'Datenquelle aktualisieren
End Sub


Grundsätzlich funktioniert das ganze, nur scheinbar stoppt es bei einigen Mails, wie im letzten Screenshot zu sehen. Warum das der Fall ist, ist genau die Frage. Du sagst, ich solle die Hilfe zurate ziehen, um mich mit den Problemen, welche sich irgendwo im lokalen Fenster befinden auseinanderzusetzen.

Meinst du nicht, dass ein paar Infos darüber mir etwas besser auf die Sprünge helfen? Klar wird es Helfen, die OL-Hilfe zurate zu ziehen, aber wäre doch sehr langwierig, da ich eben nicht mal ansatzweise weiß, wo ich beginnen soll.

Ich will doch gar nicht von euch, dass ihr mir alles auf dem teblett serviert, ich möchte lediglich Anhaltspunkte, an denen ich mich entlang hangeln kann und lernen kann. Wenn du von deiner Learning by doing Phase sprichst, wist du dich doch auch sicher an eine gewisse Orientierungslosigkeit erinnern und du für Rat Dankbar warst und Hinweise, wie: Lies die Anleitung! erstmal für noch mehr Verwirrung als Aufklärung gesorgt hat.

Wie gesagt, ich bitte um Hinweise, nicht um eine Komplettlösung.

nimora

#18
Neue Erkenntnis: mittels

On Error Resume Next

habe ich heursugefunden, dass das Auftreten der Fehler nicht gleich ist. In einem Durchlauf wurden ca. 13.000 einträge in die Datenbank vorgenommen, bei einem zweiten Durchlauf (nachdem ich die Datenbank geleert habe!!!) wurde nur etwa 2.500 Einträge vorgenommen.

Noch eine neue Erkenntnis:

Es wird immer verrückter. Das ganze scheint kein Statischer Fehler zu sein. Wenn ich den Code mittels Button nur oft genug ausführe (zw. 3 und 5mal) werden letzten dann doch alle Mails verarbeitet, pö a pö.

Die Analyse ergab bisher, dass es hauptsächlich in Mails mit einer Fremdsprache auftritt, in der im Betreff oder im Text ein oder mehrere " ' " vorkommen. Könnte dies den Fehler verursachen und wie kann man das abfedern? Scheinbar werden die ausgelesenen Inhalte ja teilweise wie Code behandelt. Könnte man das in einen String umwandeln oder nützt das nix?

Der Inhalt der Err.Description war folgender:

"Syntaxfehler (fehlender Operator) in Abfrageausdruck..." und dann folge eine Menge Text der Mail mit, wie gesagt häufigen Sonderzeichen und auch URL´s sind dabei.

nimora

Problem waren, wie oben schon vermutet diverse Sonderzeichen.

Lösung ist eine Replace Function, wie hier zu sehen:

Replace(Replace(Mail.Body, """", "'"), "'", "''")

Danke an alle Helfer!

MaggieMay

Hi,

eine näher an die Realität angelegte Schilderung hätte das Problem sicher schneller lösen können. 

Von der Verwendung des Mail.Body war bislang nicht die Rede!
Freundliche Grüße
MaggieMay