Felder innerhalb object oAddressItem


  • Hallo Kollegen,




    Folgenden VB Code verwende ich um
    über die DVAPI meine Adressdaten auszulesen. Leider gefällt mir an der gannzen
    Sache nicht da es keine Möglichkeit gibt alle verfügbaren Adressfelder innerhalb
    des Objects AddressItem mittels eines Count Befehls zu "zählen" um dann die
    Namen über den Index auszulesen und weiter zu verwenden.


    Sub
    Get_address()
    Dim oApp As DvApi32.IApplication
    Dim oAcc As
    DvApi32.Account
    Dim oArchive As DvApi32.Archive
    Dim oAddressbook As
    DvApi32.AddressBook
    Dim oAddressItem As DvApi32.AddressItem
    Dim oAddress
    As DvApi32.Address
    Dim oFieldName
    Dim fso, txtfile
    Set oApp =
    CreateObject("DVOBJAPILib.DvISEAPI")
    Set oAcc = oApp.Logon("", "", "", "",
    "", "NOAUTH")
    Set oArchive =
    oAcc.GetSpecialArchive(DvApi32.DvArchiveTypes.DvArchivePersonalAddress)
    Set
    oAddressItem = oArchive.NewItem(DvApi32.DvItemTypes.DvAddressItem)
    Set
    oAddressbook = oAcc.GlobalAddressBook
    For x = 0 To oAddressbook.Count - 1
    'Anzahl der Adressbucheinträge ermitteln
    Set oAddress =
    oAddressbook.Item(x)
    Set oAddressItem = oAddress.AddressItem
    For a = 0 To
    oAddress.AddressItem.Fields.Count 'Anzahl der Adressfelder im object AddressItem
    (so dachte ich es mir zumindest)
    MsgBox oAddressItem.Fields(a).Name ' Das
    Ergebnis sind aber leider nicht alle existenten Felder im object AddressItem
    Warum nicht?????????????

    Next a
    For Z = 1 To 86
    oFieldName =
    Worksheets("Adressliste").Cells(1, Z).Value
    On Error Resume
    Next
    Worksheets("Adressliste").Cells(x + 2, Z).Value =
    oAddressItem.GetField(oFieldName)
    Next Z
    Next x
    End Sub


    Es muss
    doch eine Möglichkeit geben die Felder innerhalb eines Adresseintrages
    auszulesen?? Oder muss man die tatsächlich vom Feldnamen her
    kennen??


    Vielen DAnk und Gruß Michael

  • oAddress.AddressItem.Fields.Count 'Anzahl der Adressfelder im object AddressItem

    Hallo Michael,


    keine Ahnung was dabei wirklich gezählt wird, aber anmerkend sei gesagt, dass in der API nicht alle Felder des Adressbuchs zur Verfügung stehen. Hier stehen lediglich die Felder zur Verfügung, die man auch über die SQL Adressen anbinden kann und das sind genau die, die es in Version 8 gab (damals gab es diese ganzen erweiterten Felder, zus. Adressmöglichkeiten und so nicht.


    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,
    das kann ich mir eigentlich nicht vorstellen. Ich hatte zum testen die Felder eines Kontakts mit den Feldnamen des Feldes selber gefüllt und dann die Abfrage via API mit den Feldnamen gestartet die in im Infocenter unter alle Felder vorgegeben sind, um gleichzeitig eine Zuordnung der Felder zu erhalten, da es zur Doku einige Abweichungen gab. Wenn du dir mein Sheet in der abgehangenen Datei an siehst wirst du feststellen das die Abfrage alle verfügbaren Felder zurück gebracht hat. Ich finde es nur " zum weinen", wenn sich was an den Strukturen ändert, jedes mal auf's neue nach den neuen Feldnamen "forschen" zu müssen
    Gruß Michael

  • Hallo Michael,


    mit welcher David Version hast Du das gemacht? Meine Infos diesbezüglich beziehen sich auf David.zehn!, habe es selbst aber nie so genau überprüft bzw. gebraucht.
    Zumindest im Bereich der SQL Adressen ist hier auch bei FX nichts geändert.


    Die API Doku ist leider auch nicht immer auf dem aktuellsten Stand, bzw. bildet nicht alles ab. Es gibt hier ja offiziell auch keinen Support durch Tobit, wie auch im Bereich des DvCC Skriptings.


    So ganz verstehe ich allerdings Dein Problem nicht. Du hast doch in der Excelsheet offensichtlich alle Felder auslesen können...?


    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,
    meine Angaben beziehen sich auf David Zehn und David fx.
    Ich habe in meinem Beitrag ja schon geschrieben das ich alle Felder auslesen konnte. Dazu ist es aber nötig die "Feldnamen" zu kennen. Abfrage über die API sieht ja wie folgt aus.
    oAddressItem.GetField(City)
    oAddressItem.GetField(Birthday)
    Das setzt aber voraus das man die Feldnamen (City,Birthday) kennt.
    Zum anderen weiß man nie wie viele Felder es gibt, da der Count Befehl inerhalb des Objects AddressItem ja auch nicht existent ist.Ich strebe immer allgemein gültige Lösungen an die auch nach Änderungen der Felder (Name; Anzahl) funktionieren.
    For a= 1 to oAddressItem.Fileds.Count (Wäre doch toll wenn das die tatsächlich vorhandene Anzahl an Feldern in einer Adresse wären)
    oName=oAddressItem.Fields(a).Name (Feldnamen bestimmen und gleichzeitig als Tabellenkopf verwenden)
    oAddressItem.GetField(oName) (vorher identifizierte Feldnamen zum auslesen der Inhalte verwenden und in Tabelle eintragen)
    Mit der Prozedur wäre es egal wenn sich am Aufbau der Adessdatenbank was ändert (Feldnamen oder Anzahl).
    Die Sache wäre immer gültig und man müsste nicht ständig nach den Feldnamen "forschen".
    Gruß Michael

  • Hi Michael,


    ich stimme Dir zu.
    Aus reiner Verzweiflung habe ich mir eine Routine mit ca. 60 Zeilen gebaut, welche die Felder (nicht alle) einzeln ausliest und dann in ein Array umwandelt, mit dem ich weiterarbeiten kann. Das ist natürlich total "wackelig". Wird bei der nächsten David Version ein Feld umbenannt, wird die Geschichte buggy.


    Seltsam übrigens, daß ich nicht alle Felder füllen kann, welche ich lesen kann ...


    Gruß Gerd

Jetzt mitmachen!

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