Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access: Tabelle: Feld: Beschreibung

Empfohlene Antworten

Veröffentlicht

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

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...
  • Autor

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

(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...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.