florian-ove
Goto Top

Auslesen von E-Mails über Access

Hallo zusammen,

ich habe eine Access Datenbank mit der ich E-Mails aus Outlokk erfasse. Beid er Erfassung wird aber stets die neueste Mail zuerst eingelesen. Was muss ich am Code ändern, damit die älteste Mail zuerst eingelsen wird?

DBS2.Open "tab_Anlage", Conn, adOpenKeyset, adLockOptimistic
DBS.Open "Tab_Postbuch", Conn, adOpenKeyset, adLockOptimistic

intGes = Out.Items.Count
intz = 0
inty = ID

For intz = intGes To 1 Step -1
With Out.Items(intz)
inty = inty + 1
Str_Mailbetreff = .Subject
Str_Mailinhalt = .Body

ich bin für jeden Hinweis dankbar.
Gruß
Florian

Content-Key: 347830

Url: https://administrator.de/contentid/347830

Printed on: April 26, 2024 at 21:04 o'clock

Mitglied: 133883
133883 Aug 31, 2017 updated at 10:03:54 (UTC)
Goto Top
Stichwort Sort
Items.Sort Method (Outlook)

Gruß
Member: em-pie
em-pie Aug 31, 2017 at 10:10:33 (UTC)
Goto Top
Moin,

k.A. ob das (neben OnePlus' Vorschlag) funktioniert, aber aktuell gehst du beim Zählen ja Rückwärts im Code, ändere das doch u.U mal so ab:

DBS2.Open "tab_Anlage", Conn, adOpenKeyset, adLockOptimistic  
DBS.Open "Tab_Postbuch", Conn, adOpenKeyset, adLockOptimistic  

intGes = Out.Items.Count
intz = 0
inty = ID

For intz = 1 To intGes Step 1
 With Out.Items(intz)
 inty = inty + 1
 Str_Mailbetreff = .Subject
 Str_Mailinhalt = .Body
Next
Mitglied: 133883
133883 Aug 31, 2017 updated at 10:35:13 (UTC)
Goto Top
@em-pie
Das ist dann aber abhängig von der aktuellen Sortierung im Outlook face-wink. Dann doch lieber gleich mit "Sort" auf die Property ReceivedTime in aufsteigender Sortierung dann ist das auch verlässlich.
set itms = out.items
itms.Sort "ReceivedTime", False  
for each mail in itms
    msgbox mail.Subject
Next
Member: Florian-OVE
Florian-OVE Aug 31, 2017 at 11:06:51 (UTC)
Goto Top
Hallo,
den Vorschlag von EMPioe habe ich ausprobiert, das funktioniert nicht.

Die Sortierung über Sort habe wich wie folgt eingetragen:

Set Out = GetObject("", "Outlook.Application").GetNamespace("MAPI").PickFolder()
Set Conn = CurrentProject.Connection
Nummer = 1

DBS2.Open "tab_Anlage", Conn, adOpenKeyset, adLockOptimistic
DBS.Open "Tab_Postbuch", Conn, adOpenKeyset, adLockOptimistic

intGes = Out.Items.Count
intz = 0
inty = ID

For intz = intGes To 1 Step -1
Out.Items.Sort "ReceivedTime", True
With Out.Items(intz)

inty = inty + 1
Str_Mailbetreff = .Subject
Str_Mailinhalt = .Body

Fuinktioniert aber auch nicht. Ist da möglicherweise ein falscher Syntax?

Gruß
Florian
Mitglied: 133883
Solution 133883 Aug 31, 2017 updated at 11:12:24 (UTC)
Goto Top
Fuinktioniert aber auch nicht. Ist da möglicherweise ein falscher Syntax?
Funktioniert deshalb erstens nicht weil du die Items keiner Variablen zuweist und zweitens mit dem "True" "absteigend" sortierst !! Und du mixt das ganze auch noch indem du den Sortiervorgang in die Schleife legst, koppschüttel, sorry.

Siehe dir mein Beispiel mal bite ganz genau an!
Member: Florian-OVE
Florian-OVE Aug 31, 2017 at 11:26:47 (UTC)
Goto Top
Ok,

jetzt habe ich es so gemacht:

DBS2.Open "tab_Anlage", Conn, adOpenKeyset, adLockOptimistic
DBS.Open "Tab_Postbuch", Conn, adOpenKeyset, adLockOptimistic

intGes = Out.Items.Count
intz = 0
inty = ID

Set itms = Out.Items
itms.Sort "ReceivedTime", False
For Each mail In itms
MsgBox mail.Subject
Next

For intz = intGes To 1 Step -1

With Out.Items(intz)

inty = inty + 1
Str_Mailbetreff = .Subject
Str_Mailinhalt = .Body

In der MSG Box wird jetzt auchz die ältetse Mail zuerst angezeigt, beim folgenden Speichern wird aber wieder ist jüngste genommen.
Ich muss bestimmt eine Zeile entfernen bzw. ändern damit es geht.
Gruß
Florian.
Mitglied: 133883
Solution 133883 Aug 31, 2017 updated at 11:36:42 (UTC)
Goto Top
beim folgenden Speichern wird aber wieder ist jüngste genommen.
Kein Wunder du gehst ja wieder rückwärts und verwendest die falsche Variable!! Und warum machst du es nicht direkt in der Foreach-Schleife???
Man oh man echt schwer von Begriff heute die TOs.
Set itms = Out.Items
itms.Sort "ReceivedTime", False  
For Each mail In itms
    Str_Mailbetreff = mail.Subject
    Str_Mailinhalt = mail.Body
    ' hier speichern ....  
Next
Also alles direkt in die For-Each-Schleife packen, deinen Rest mit der for rückwärts weg lassen, fertig Affe tot!

I'm out, that's really annoying.