Zum Inhalt springen

Access: Tabelle: Feld: Beschreibung


Empfohlene Beiträge

Geschrieben

Hi, Leute!

Wer kann mir sagen, wie man per VBA die Beschreibung eines Tabellenfeldes ausliest?

Name, Felddatentyp, usw.: alles kein Problem,

nur für das dritte Feld "Beschreibung" finde ich nichts im Objektmodell!:confused:

Hoffe, Ihr könnt mir helfen. Ich mache mich auch auf die Suche...

Geschrieben

Ich habe vor langer Zeit mal ein Modul zur Analyse Tabellenstrukturen für Access 97 geschrieben. Da sind u.a. auch die "Beschreibungen" dabei. Die wichtigen Stellen sind fettgedruckt. (Die Tabellenstruktur wird in die Tabellen tTableDef bzw. tColumnDef geschrieben)

Die Beschreibung ist im Objektmodell nicht benannt, da es eine "benutzerdefinierte Eigenschaft" (sprich PROPERTY) ist.


[...]

Private Sub ExploreTables()


    Dim tdf As DAO.TableDef, fld As DAO.Field, rsTables As DAO.Recordset, rsColumns As DAO.Recordset, prp As DAO.Property


    DoCmd.SetWarnings False


    Set rsTables = CurrentDb.OpenRecordset("tTableDef")

    Set rsColumns = CurrentDb.OpenRecordset("tColumnDef")


    ' Alle Tabellen durchgehen

    [B]For Each tdf In CurrentDb.TableDefs[/B]

        If (Left(tdf.Name, 4) <> "MSys") And (tdf.Name <> "tTableDef") And (tdf.Name <> "tColumnDef") And (tdf.Name <> "tDataType") Then


            rsTables.AddNew

            rsTables.Fields("Name") = tdf.Name

            On Error Resume Next

            rsTables.Fields("Description") = Nz([B]tdf.Properties("Description")[/B], "")

            rsTables.Fields("RowCount") = DCount("*", tdf.Name)

            On Error GoTo 0

            rsTables.Update


            iTableId = DLookup("ID_Table", "tTableDef", "Name = """ & tdf.Name & """")


            ' Alle Felder der Tabelle durchgehen

            [B]For Each fld In tdf.Fields[/B]

                rsColumns.AddNew

                rsColumns.Fields("id_table") = iTableId

                rsColumns.Fields("id_type") = Nz(fld.Properties("Type"), "")

                rsColumns.Fields("Name") = fld.Name


                ' Fehler aufgrund nicht vorhandener Eigenschaften ignorieren

                On Error Resume Next

                rsColumns.Fields("Description") = Nz([B]fld.Properties("Description")[/B], "")

                rsColumns.Fields("Format") = Nz(fld.Properties("Format"), "")

                On Error GoTo 0

                rsColumns.Update

            Next fld


        End If

    Next tdf


    DoCmd.SetWarnings True

    Set rsColumns = Nothing

    Set rsTables = Nothing


End Sub

ich hoffe das hilft

  • 2 Wochen später...
Geschrieben

Hi, Olli_master!

Vielen Dank für Deine Lösung.

Ich habs ein wenig umgestrickt und gekürzt.

Auch die Prop-Idee wäre ich nicht gekommen; "Description" habe ich aber schon vermutet...

Fragen:

Warum gibt es eigentlich diese Properties (Warum sicnd es nicht normale Eigenschaften?)?

(Ich weiß: Props werden auch benutzt, um die Start-Eigenschaften einer DB mit Hilfe der VBA festzulegen.)

Wie und wofür sonst kann man Props selber definieren?

(Dim Prp as Property: Create...????)

Nochmal vielen Dank für die helfende Lösung!!!

Geschrieben

(Dim Prp as Property: Create...????)

Nochmal vielen Dank für die helfende Lösung!!!

Warum gibt es eigentlich diese Properties (Warum sicnd es nicht normale Eigenschaften?)?

Beim Hinzufügen von neuen Properties werden keine Änderungen am Objektmodell durchgeführt. (Keine Neukompilierung, keine neue Version, kaum Änderungen an der Doku)

==> also: Properties-Auflistung = flexibler und weniger Aufwand als normale Eigenschaften.

Wie und wofür sonst kann man Props selber definieren?

Das "Wie" ist in der Access-Hilfe beschrieben (CreateProperty bzw. Properties.Append).

Das "Wofür" hängt vom Anwendungsfall an. Normalerweise könnte man in solchen Properties Konfigurationsinformationen speichern. Oder allgemeiner: Alle Informationen, die die gleiche Struktur haben (Properties("StringA") = "StringB") , aber von denen man vorher nicht weiss, welche Namen die Properties genau haben bzw. wieviele es sind.

Properties sind ja eigentlich nur eine dynamische Liste von String-Zuweisungen. (=StringMap)

Die Frage, ob man dort selbst was speichert ist abhängig davon, ob MS die Schnittstellen ändert oder nicht...

  • 2 Wochen später...

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...