Über IDs

Über IDs

Neuer Beitragvon gast » Mo Nov 13, 2006 12:10 pm


Guten Tag.

ItemFromID() ist für die Abfrage von Items auf Basis einer anderen ID
gedacht. Dieser Wert kann an jedem Item, das von MessageItem erbt (Adress,
CalendarItem, MailItem, FaxItem) über die Eigenschaft _ID abgefragt werden.
In Visual Basic kann man Sie nur via "Item.[_ID]" abfragen.

Diese ID ist übriegens die Nummer des Records in der ARCHIVE.DAT Datei. In
der Datei ist für jeden Archiveintrag ein Sendrec drin, der genau 430 Byte
lang ist und diese ID ist der Index-Wert oder auch Offset in dieser Datei.

Beispiel: Hat ein Eintrag die ID 3, dann beginnt der SendRec für diesen
Eintrag an der Stelle:
Offset = (3 - 1) * 430 also in diesem Fall ab dem Offset 860.

Jetzt ist auch klar, warum die "ID" eigentlich der falsche Name für diese
Information darstellt, RecordNumber oder so wäre besser. Und damit ist auch
klar, daß diese Id nicht zuverlässig ist quasi als Primärschlüssel, denn
nach einer Bereinigung werden diese Einträge umstrukuriert und demnach auch
neu numeriert (z.B. dadurch das Einträge gelöscht wurden).

Und damit ist auch klar, warum in Ihrem Schleifendurchlauf versehentlich
schon gelöschte Einträge aufgetaucht sind, weil Sie zufällig einen Eintrag
mit einer ID abgefragt der a) vorhanden ist und b) gelöscht aber noch nicht
bereinigt ist. Daher wie in der anderen Antwort beschrieben Items bei einem
Schleifendurchlauf via AllItems..Item(n) abfragen.

-Martin Ehrlich



Diese ID ist leider kein zuverlässige ID, weil Sie nur solange zuverlässig
ist, solange das David in dem Verzeichnis keine Bereinigung durchführt.


schrieb im Newsbeitrag
news:100040004554490C00006EB4@news.tobit.com...
Hallo,

wenn ich in visual basic 6.0

Set oItems = oArchive.AllItems
n = oItems.Count

die Zahl der Emails auslese, dann erhalte ich die Zahl aller aktiven
(angezeigten) Items im Archive.
Die bereits gelöschten x Items im Archive, die physikalisch dort noch
liegen und noch nicht bereinigt sind, werden hier nicht mitgezählt
(korrekt).

Wenn ich dann eine Schleife 1 .. n in i durchlaufen lasse und mir die
einzelnen
Items auslese, dann habe ich festgestellt, dass der Befehl ItemFromID alle
Items liest, auch diejenigen x Items, die der Nutzer schon gelöscht hatte,
die im Archive aber noch nicht bereinigt wurden, so dass ein
Zuordnungsproblem entsteht und meine Schleife die ersten n Items inklusive
gelöschter Items ausliest, die nächsten x aktuelle Items aber nicht.

Ich benutze zum Zugriff auf die einzelnen Items den Befehl

Set oEmail = oArchive.ItemFromID(i - 1, 34)

Wie kann ich das Problem lösen?


gast
 
Beiträge: 0
Registriert: Mo Jun 01, 2009 12:08 pm

Advertisement

Zurück zu David Developer API DvAPI

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron