Über IDs (Danke)

Über IDs (Danke)

Neuer Beitragvon gast » Mo Nov 27, 2006 9:12 am


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_08F2E51F.4A473E20
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit

Grüß Gott Martin Ehrlich,

herzlichen Dank - die Erläuterungen über die Ids waren hilfreich.
Ich habe wieder alles auf Item(x) umgestellt und damit das Problem beseitigt.
Den Grund, warum ich das einst auf die Methode ItemFromID umgestellt habe, weiss ich nicht mehr, werde ich dann merken, wenn anderswo wieder Fehlermeldungen kommen ...

Mit freundlichen Grüßen
Franz Böhmisch

boehmisch@animabit.de
http://www.animabit.de
GF Animabit Multimedia Software GmbH
Am Sonnenhang 22
D-94136 Thyrnau
Tel +49 (0)8501-8538
Fax +49 (0)8501-8537



Subject: Über IDs (13-Nov-2006 16:10)
From: martin.ehrlich@gmx.de
To: tobit.public.de.developer.api


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?




------_=_NextPart_000_08F2E51F.4A473E20
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit






Grüß Gott Martin Ehrlich,

 

herzlichen Dank - die
Erläuterungen über die Ids waren hilfreich.

Ich habe wieder alles auf
Item(x) umgestellt und damit das Problem beseitigt.

Den Grund, warum ich das
einst auf die Methode ItemFromID umgestellt habe, weiss ich nicht
mehr, werde ich dann merken, wenn anderswo wieder Fehlermeldungen kommen
.... ;-)

 


Mit freundlichen Grüßen
Franz Böhmisch

 


http://www.animabit.de
GF Animabit Multimedia Software GmbH

Am Sonnenhang 22

D-94136 Thyrnau
Tel +49 (0)8501-8538
Fax +49
(0)8501-8537

 

style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
style="BORDER-RIGHT: #e0e0e0 1px solid; BORDER-TOP: #e0e0e0 1px solid; FONT: 10pt Arial; BORDER-LEFT: #e0e0e0 1px solid; COLOR: black; BORDER-BOTTOM: 0px"
cellSpacing=0 cols=3 cellPadding=0 width="99%" border=0>



style="PADDING-LEFT: 4px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px; BORDER-BOTTOM: #ffffff 1px solid"
width=140 colSpan=2 height=22>
Original
Message     


color=#808080>   processed by David
InfoCenter
 

style="BORDER-RIGHT: #e0e0e0 1px solid; BORDER-TOP: 0px; FONT: 8pt Tahoma; BORDER-LEFT: #e0e0e0 1px solid; COLOR: black; BORDER-BOTTOM: #e0e0e0 1px solid"
cellSpacing=0 cols=2 cellPadding=0 width="99%" border=0>









bgColor=#efefef height=18>
Subject: 
bgColor=#ffffff>
Über IDs (13-Nov-2006 16:10)
bgColor=#efefef height=18>
From:    
bgColor=#ffffff>

style="FONT: 8pt Tahoma">To:      


 
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?
>
>
>







------_=_NextPart_000_08F2E51F.4A473E20--
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 1 Gast

cron