PDA

Vollständige Version anzeigen : Feld-Attribute


Rolf
26.04.2001, 08:39
Hallo,
weiß jemand wie ich an das Attribut "Beschreibung" einer Felddefinition komme?
Mit:
>>> Dim tdf As TableDef Dim fld As Field
>>> Set tdf = db.TableDefs("XY_TAB")
>>> For Each fld In tdf.Fields
>>> MsgBox (fld.Beschreibung????)
>>> Next fld
finde ich nichts.
Gruß Rolf

Birgit Dannenberg
26.04.2001, 09:19
===> fld.Properties("Description")

Hierzu mein Tipp:
Um solche versteckten Eigenschaften zu finden, schreibe ich eine kleine Testprozedur und setze entsprechende Breakpoints, um mir die vollständige Auflistung der Objekte im Testfenster ansehen zu können.

Gruss Birgit

Manuela Kulpa
26.04.2001, 09:22
Hallo Rolf!

Anbei ein kleines Beispiel! Erklärungen findest du in den Sourcen.

<FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Sub</FONT> GetDescription(sDatabasName <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>)

<FONT COLOR=#008000>' Das folgende Beispiel gibt den Tabellen-Namen, und</FONT>
<FONT COLOR=#008000>' die Beschreibung der Tabelle, die jeweiligen Tabellen-</FONT>
<FONT COLOR=#008000>' Felder, deren Typen und die Beschreibung im Direktfenster</FONT>
<FONT COLOR=#008000>' aus. Da dabei (aus den o.g. Gründen) Fehler auftreten</FONT>
<FONT COLOR=#008000>' können, behilft sich die Routine mit der Anweisung</FONT>
<FONT COLOR=#008000>' On Error Resume Next und überprüft nach jedem Versuch</FONT>
<FONT COLOR=#008000>' den Wert der Eigenschaft zu ermitteln, ob ein Fehler</FONT>
<FONT COLOR=#008000>' aufgetreten ist. Falls es sich bei einem Fehler um</FONT>
<FONT COLOR=#008000>' den zu erwartenden Fehler mit der Nummer 3270 handelt,</FONT>
<FONT COLOR=#008000>' hat DAO den Lesezugriff auf die Eigenschaft verweigert,</FONT>
<FONT COLOR=#008000>' und die Routine gibt die Fehlermeldung aus. Anderenfalls</FONT>
<FONT COLOR=#008000>' überlässt der Code die Fehlerbehandlung dem Error-Komando</FONT>

<FONT COLOR=#000080>Dim</FONT> db <FONT COLOR=#000080>As</FONT> DAO.Database
<FONT COLOR=#000080>Dim</FONT> tblDef <FONT COLOR=#000080>As</FONT> DAO.TableDef
<FONT COLOR=#000080>Dim</FONT> fldDef <FONT COLOR=#000080>As</FONT> DAO.Field
<FONT COLOR=#000080>Dim</FONT> sDescription <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>

<FONT COLOR=#000080>If</FONT> Len(sDatabasName) > 0 <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>Set</FONT> db = DBEngine.Workspaces(0).OpenDatabase(sDatabasName)
<FONT COLOR=#000080>Else</FONT>
<FONT COLOR=#000080>Set</FONT> db = CurrentDb()
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#000080>For</FONT> Each tblDef In db.TableDefs
<FONT COLOR=#000080>If</FONT> Left(tblDef.Name, 4) <> "MSys" <FONT COLOR=#000080>Then</FONT>
sDescription = ""
Debug.<FONT COLOR=#000080>Print</FONT> "Name der Tabelle: " & tblDef.Name

<FONT COLOR=#008000>' Fehlerbehandlung ausschalten</FONT>
<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> Resume <FONT COLOR=#000080>Next</FONT>
sDescription = tblDef.Properties("Description").Value

<FONT COLOR=#008000>' Fehlernummer prüfen</FONT>
<FONT COLOR=#000080>If</FONT> Err = 3270 <FONT COLOR=#000080>Then</FONT>
sDescription = "Nicht vorhanden"
<FONT COLOR=#000080>ElseIf</FONT> Err <> 0 <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>Error</FONT> Err
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#008000>' Fehlerbehandlung wieder einschalten</FONT>
<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> GoTo 0
Debug.<FONT COLOR=#000080>Print</FONT> "Beschreibung: " & sDescription
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
<FONT COLOR=#000080>For</FONT> Each fldDef In tblDef.Fields
Debug.<FONT COLOR=#000080>Print</FONT> " Name des Feldes: " & fldDef.Name
Debug.<FONT COLOR=#000080>Print</FONT> " Feldtyp: " & fldDef.<FONT COLOR=#000080>Type</FONT>

<FONT COLOR=#008000>' Fehlerbehandlung ausschalten</FONT>
<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> Resume <FONT COLOR=#000080>Next</FONT>
sDescription = fldDef.Properties("Description").Value

<FONT COLOR=#008000>' Fehlernummer prüfen</FONT>
<FONT COLOR=#000080>If</FONT> Err = 3270 <FONT COLOR=#000080>Then</FONT>
sDescription = "Nicht vorhanden"
<FONT COLOR=#000080>ElseIf</FONT> Err <> 0 <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>Error</FONT> Err
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#008000>' Fehlerbehandlung wieder einschalten</FONT>
<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> GoTo 0
Debug.<FONT COLOR=#000080>Print</FONT> " Beschreibung: " & sDescription

<FONT COLOR=#000080>Next</FONT> fldDef
<FONT COLOR=#000080>Next</FONT> tblDef

<FONT COLOR=#000080>If</FONT> <FONT COLOR=#000080>Not</FONT> db Is <FONT COLOR=#000080>Nothing</FONT> <FONT COLOR=#000080>Then</FONT> db.<FONT COLOR=#000080>Close</FONT>: <FONT COLOR=#000080>Set</FONT> db = <FONT COLOR=#000080>Nothing</FONT>

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>

</FONT>

LLAP

WAG
26.04.2001, 09:24
Hallo Rolf,
bei vorhandener Beschreibung mit

MsgBox (fld.Properties("Description"))

bei nicht vorhandener Beschreibung mußt Du den Fehler abfangen.

Dieter

Rolf
26.04.2001, 09:39
Danke, Gruß Rolf