Import von David in eigene Anwendung

  • Grüß Euch!


    Bei einem Kunden von uns werden Mail- und Fax-Daten in unsere Datenbank importiert. Funktioniert soweit wie gewünscht. Beim Kunden wird David.FX verwendet. Version: dvwin32 11.00a 3438, dvapi32: 11.00.a 0311


    Einige Verbesserung könnte der Import allerdings nun doch vertragen.


    1. Wie kann ich die Einträge filtern?


    Zur Zeit werden immer ALLE Einträge gelesen und über die Abfrage auf das Statusdatum überlesen. Ich habe im DVApi Handbuch einiges über Filter gelesen, wurde aber nicht schlau daraus. Ideal wäre ein Filter, mit dem ich nur Einträge ab einem bestimmten Datum erhalte.




    2. Wie kann ich auf den "Flag"-Eintrag (1. Spalte in der Ansichtstabelle, die mit der Fahne) abfragen? Wie heißt das Feld?


    Ideal wäre für mich, wenn ich aufgrund dieses Flags filtern könnte. Das Erstellen des MessItem2 aus den Einträgen via GetArchiveEntryByID und das Ändern von Daten bekomme ich schon hin. Aber wie gesagt, ich weiß nicht, wie ich den Flag-Wert abfragen und ändern kann.


    Zur Erläugerung nun ein Code-Ausschnitt, wie ich zur Zeit die Mail- und Faxeinträge abarbeite.


    Es würde mich freuen, hier Lösungsansätze und Anregungen für meine Probleme zu finden.


    Bin schon gespannt!


    Norbert



    Set oArchive_AllUser = oAcc.GetSpecialArchive(DvArchiveUserRoot)
    For l = 1 To oArchive_AllUser.Archives.Count
    'Schleife je User
    Set oArchive_User = oArchive_AllUser.Archives.Item(l - 1)
    For lArchZählerJeUser = 1 To oArchive_User.Archives.Count
    '
    'Schleife je Ordner eines Users
    '
    Set oArchive = oArchive_User.Archives.Item(lArchZählerJeUser - 1)


    If UCase(Right(oArchive.ID, 2)) = "IN" Or UCase(Right(oArchive.ID, 3)) = "OUT" Or UCase(Right(oArchive.ID, 6)) = "COMMON" Then


    If UCase(Right(oArchive.ID, 2)) = "IN" Then
    sEinAus = "E"
    End If
    If UCase(Right(oArchive.ID, 6)) = "COMMON" Then
    sEinAus = "E" 'können nur Eingänge sein
    End If
    If UCase(Right(oArchive.ID, 3)) = "OUT" Then
    sEinAus = "A"
    End If
    Set oMails = oArchive.MailItems
    If oMails.Count > 0 Then


    For i = 0 To oMails.Count - 1


    DoEvents
    '
    If bAbgebrochen Then
    GoTo Raus
    End If
    '


    Set oMail = oMails.Item(i)


    vFehlerNr = oMail.Fields("ErrorNo").Value



    dSendeEmpfangsDatum = oMail.StatusTime


    '
    If Val(vFehlerNr) = 0 Or sEinAus = "A" Then
    '
    If DateValue(dSendeEmpfangsDatum) >= DateValue(gVonDat.Text) And DateValue(dSendeEmpfangsDatum) <= DateValue(gBisDat.Text) Then

  • Hallo Norbert,


    die Filter in David sind recht eingeschränkt. Du kannst über die StatusTime filtern, was Dir in diesem Falle hilft, aber z.B. nicht bei Terminen (da die StatusTime das Anlegedatum, nicht das Startdatum des Termins ist).


    Schau Dir mal die API Hilfe zu GetArchiveEntries an. Dort ist der Filter für die StatusTime beschrieben.


    Zu 2.:
    Die Markierung kann man über das Field "SymNumber" setzen. Die Values musst Du mal durchtesten.
    Einen Filter wirst Du hierauf nicht legen können. Da musst Du schon durch die Einträge iterieren und prüfen.


    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,


    danke für die rasche Antwort. Der Feldname "SymNumber" hat mir gefehlt. Jetzt bin ich schon ganz nah an meiner Wunschlösung. Der Filter über das Datumsfeld haut auch schon hin.


    Was ich jetzt noch bräuchte:


    Gibts ein Feld, das ich "gefahrlos" als Statusfeld für mich verwenden kann. Also eben ein Kennzeichen, das ich setzen kann, um den Eintrag als "importiert" zu markieren. Sollte ein Feld sein, das der User normalerweise nicht ändern kann und keine wichtige Funktion im David hat. Die SymNumber möchte ich da nicht verwenden, die soll Original erhalten bleiben. Wenn das dann noch ein Feld wäre, das ich auch filtern kann, wäre es perfekt.


    Vielleicht kannst Du - oder wer anderer - mir da auch noch helfen.


    Noch mal Danke und


    Gruß Norbert

  • Hallo Norbert,


    das macht man idealerweise mit einem Userfield oder SetProperty (MessageItem2 Eigenschaft). Ich bevorzuge letzteres (generell ist die Verarbeitung des MessageItem2 ca. 10x schneller als die der MessageItem basierenden Objekte).


    Die Property wird als Textwert in die .0tx Datei geschrieben. Über den angegebenen Integer Wert kann man die Properties unterscheiden (und hoffe, dass kein Tool eines anderen Herstellers mit der gleichen ID läuft ;) ).


    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

Jetzt mitmachen!

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