Faxe in David markieren

  • Hallo zusammen,


    arbeitete momentan an einen kleinen C# Exporter für Emails und Faxe die dann als eml oder tif abgespeichert werden.
    Der Export ansich klappt problemlos, jedoch lassen sich exportierte Faxe nicht als "Gelesen" in markieren.


    Bei den Mails gibts ja extra eine Methode dafür aber bei den Faxen eben nicht.
    Hab schon versucht über "Fields" zu beschreiben aber ohne Erfolg.


    Wenn es wirklich nicht möglich ist, könnte ich die Faxe auch in einen anderen Ordner verschieben, falls das überhaupt möglich ist.
    Dann sollten sie eigentlich auch nicht mehr in David auftauchen.

  • Hallo René


    ein solches Programm haben wir auch schon realisiert.
    Wir ändern dabei aber - soweit ich das im Kopf habe - nicht den gelesen Status.
    Prinzipiell wüsste ich aber nicht, warum das nicht gehen sollte, gerade über die Fields.


    Vielleicht postest Du mal ein Codesnippet.
    Gibt es eine Fehlermeldung?


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • sollte kein Problem sein:


    Code
    Dacc = Dapp.Logon(server, name, password, "", "", "AUTH");
    Archive Darchive = Dacc.ArchiveFromID("\\\\ServerName\\david\\archive\\common\\E");
    MessageItems Dmessageitems = Darchive.FaxItems;
    FaxItem fax = Dmessageitems.Item(0) as FaxItem;
    
    
    fax.Fields("Status").Value = 256;
    
    
    System.Windows.Forms.MessageBox.Show(fax.Fields("Status").Value.ToString());


    Der Statuscode von ungelesenen Faxen ist immer 0, wenn ich ihn mir ausgeben lasse.
    Und 256, wenn das Fax als gelesen markiert ist.


    Also versuche ich das erste ungelesene Fax mit dem Code 256 zu beschreiben und das wird dann im letzten Teil des Codes von der MessageBox auch zurückgegeben.
    Jedoch ändert sich nichts in David und wenn ich danach mir von dem gleichen Fax den Status nochmal ausgeben lasse, steht er wieder auf 0.


    Eine Fehlermeldung gibt es übrigens auch nicht.

  • Hallo Rene,


    normalerweise dürfte der Zugriff auf die Fields so nicht funktionieren. Schau Dir dazu mal die Beispiele aus der Doku an, z.B. "Create IMessageItem2 entry..."


    Code
    oArchive = 
    oAcc.GetSpecialArchive(DvArchiveTypes.DvArchivePersonalIn);
    oMessageItem2 = 
    oArchive.CreateArchiveEntry(DvItemTypes.DvEMailItem);
    
    
    oFields = 
    (Fields)oMessageItem2.Fields;
    oFields.Item("IconNo").Value = 10;


    Du musst zunächst ein Fields-Object erzeugen und dann über die Item-Methode auf das entsprechende Feld oder dessen Werte zugreifen.
    Des Weiteren würde ich das Field "Viewed" nutzen und auf "TRUE" setzen, statt mit dem Status-Field zu arbeiten.


    Bei manchen Daten muss man auch zunächst lesend auf die Einträge zugreifen bevor man sie schreiben kann, denke aber, dass das hier nicht der Fall ist.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens,


    Wenn ich es mit deinem Weg, also mit einem neu erzeugten MessageItem2 versuche klappt es.
    Nun will ich ja keine Faxe erstellen, sondern auslesen.


    Das würde ja auch klappen wenn ich den Befehl nutzen würde:

    Code
    Darchive = Dacc.GetSpecialArchive(DvArchiveTypes.DvArchivePersonal);
    MessageItems2 oMessageItems2 = Darchive.GetArchiveEntries(DvItemTypes.DvFaxItem);


    Nur würde ich dann mein eigentlich Pfad nicht mehr haben.
    Ich möchte ja gezielte Ordner in David Ansteuern, wie ich es schon in meinem ersten Codeausschnitt gemacht habe.
    Deswegen arbeite ich momentan auch nur mit dem MessageItem Objekt.


    Also hab ich natürlich auch hier versucht die Fields zu deklarieren und mit der Item Methode darauf zuzugreifen.
    Das feld "Viewed" gibts aber bei den Faxitem nicht, deshalb benutzte ich "Status", welches sich aber jedesmal wieder zurücksetzt.


    Gibt es denn eine Möglichkeit mit der
    Dacc.GetSpecialArchive(DvArchiveTypes.DvArchivePersonal);
    Methode einen eigenen Pfad zu wählen?


    Wie zum Beispiel bei
    Dacc.ArchiveFromID("\\\\ServerName\\david\\archive\\common\\E");

  • Hallo Rene,


    das Beispiel war nur für das erzeugen des Field-Objects gedacht - ist ja auch nur ein Beispiel aus der Doku.
    Ich verstehe aber Deine Frage nicht so ganz. Mit


    Dacc.ArchiveFromID(pfad);


    hast Du doch genau die Methode die Du brauchst...die GetSpecialArchive-Methode ist ja nur um spezielle Archive zu öffnen für die es eine Eigenschaft gibt.


    Öffne das Verzeichnis, hole Dir mit Archive.GetArchiveEntries() alle Fax-Einträge (oder alle und prüfe dann ob es ein Fax ist) und schleife dann durch die ItemCollection um die einzelnen Items zu verarbeiten.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Rene,


    ohne Codesnippet ist es wie erwähnt immer schwierig zu helfen.
    Ich vermute Du hast einen Filter gesetzt? Vermutlich nutzt Du den falsch, das passiert oft.
    Lass den Filter mal auf Default und prüfe den ItemType in der Schleife.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens,


    Du hattes Recht mir deiner Vermutung.
    Es lag wirklich an den Filter-Einstellungen.


    Hatte "" und als Filtertyp-Enum Faxitems probiert, aber trotzdem nie was angezeigt.
    Ich dachte ein leerer String "" steht für default...


    Nachdem ich dann wirklich "Default" geschrieben hatte, hat es funktionert :D


    Jetzt gibt es nur noch das Problem mit dem Fax.


    Ich brauche den Eintrag ja als Faxitem und nicht als MessageItem2.
    ChangeType(DvItemTypes.FaxItem) sowie (FaxItem)MeinMessageItem2 funktioniert nicht, obwohl es vom Typ ein FaxItem ist.

  • Hallo Rene,


    ChangeType sagt mir nichts, aber ein FaxItem ist vom MessageItem abgeleitet, nicht vom MessageItem2, daher kannst Du das nicht casten.
    Du musst also ein neues Object erzeugen. Bei beiden Varianten hast Du ja die _ID, RecNo oder den FileName mit dem Du dann mit der entsprechenden Methode ein MessageItem/FaxItem oder ein MessageItem2 erzeugen kannst.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens,


    habe es jetzt übe die Archiv Methode "ItemFromID" gemacht.
    Dort konnte ich dann die _ID vom MessageItem2 Objekt nehmen.


    Vielen Dank Jens, das du mein Problem gelöst hast!


    Denke der Thread kann somit geschlossen werden ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!