Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

attributs des tables access

2 réponses
Avatar
Francis SLAWNY
Bonjour tout le monde

XPPro SP3 Access 2003

Comment peut on accèder à la lecture et la signification des attributs des
tables dans une BD access ?
Plus précisément comment reconnaitre en VBA les tables systèmes ?

Merci pour vos reponses
FS

2 réponses

Avatar
Argyronet
Bonjour,

Si la base est constituée de tables liées, vous pouvez différencier une
table système par le biais de la propriété Connect qui doitretourner une
longueur de chaîne différente de 0.
Sinon bien évidement, par son nom, enfin, les 4 premiers caractères ("MSys")
Pour ce faire, utilsez un objet TableDef de la collection TableDefs de
l'objet Database.

Ex:
¯¯¯
CurrentDB.TableDefs("Nom d'une table iée").Connect = une chaîne... avec le
nom de la BDD
Len(CurrentDB.TableDefs("MSysObjects").Connect) = 0

Et pour les tables locales, vous pouvez faire une simple requête :
SELECT Name FROM MSysObjects WHERE Flags = 0 AND Type = 1
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"Francis SLAWNY" a écrit :

Bonjour tout le monde

XPPro SP3 Access 2003

Comment peut on accèder à la lecture et la signification des attributs des
tables dans une BD access ?
Plus précisément comment reconnaitre en VBA les tables systèmes ?

Merci pour vos reponses
FS






Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

J'ai trouvé du code quelque part il y a longtemps (je n'ai pas noté la
source) que j'ai adapté à mes besoins.
Attention : il utilise Excel. Il faut donc le référencer dans le VBA


Sub ListeTablesChamps()
Dim Db As DAO.Database, tdf As DAO.TableDef, Fld As DAO.Field
Dim strDescription As String
Dim L, Att As Long
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set Db = CurrentDb
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = True

For Each tdf In Db.TableDefs
If Not tdf.Properties("Attributes") And dbHiddenObject Then
Set xlSheet = xlBook.Worksheets.Add
With xlSheet
.Name = tdf.Name
.Cells(1, 1) = tdf.Name
.Cells(1, 2) = "Description"
.Cells(1, 3) = "Type"
.Cells(1, 4) = "Valeur Défaut"
.Cells(1, 5) = "Taille"
.Cells(1, 6) = "NumAuto"
.Cells(1, 7) = "tri Z-A"
.Cells(1, 8) = "Taille Fixe"
.Cells(1, 9) = "Requis"
.Cells(1, 10) = "Règle"

L = 2
For Each Fld In tdf.Fields
.Cells(L, 1) = Fld.Name
On Error Resume Next
.Cells(L, 2) = Fld.Properties("Description")
On Error GoTo 0
.Cells(L, 3) = TypeValeur(Fld.Properties("Type"))
.Cells(L, 4) = Fld.Properties("DefaultValue")
.Cells(L, 5) = Fld.Properties("Size")
Att = Fld.Properties("Attributes")
.Cells(L, 6) = IIf(Att And dbAutoIncrField, "X", "")
.Cells(L, 7) = IIf(Att And dbDescending, "X", "")
.Cells(L, 8) = IIf(Att And dbFixedField, "X", "")
.Cells(L, 9) = IIf(Fld.Properties("Required"), "X", "")
.Cells(L, 10) = Fld.Properties("ValidationRule")
L = L + 1
Next Fld
End With
End If
Next tdf

Set Fld = Nothing
Set tdf = Nothing
Set Db = Nothing
End Sub

Function TypeValeur(Tpe) As String
Select Case Tpe
Case dbBigInt: TypeValeur = "Big Integer"
Case dbBinary: TypeValeur = "Binary"
Case dbBoolean: TypeValeur = "Boolean"
Case dbByte: TypeValeur = "Byte"
Case dbChar: TypeValeur = "Char"
Case dbCurrency: TypeValeur = "Currency"
Case dbDate: TypeValeur = "Date / Time"
Case dbDecimal: TypeValeur = "Decimal"
Case dbDouble: TypeValeur = "Double"
Case dbFloat: TypeValeur = "Float"
Case dbGUID: TypeValeur = "Guid"
Case dbInteger: TypeValeur = "Integer"
Case dbLong: TypeValeur = "Long"
Case dbLongBinary: TypeValeur = "Long Binary (OLE object)"
Case dbMemo: TypeValeur = "Memo"
Case dbNumeric: TypeValeur = "Numeric"
Case dbSingle: TypeValeur = "Single"
Case dbText: TypeValeur = "Text"
Case dbTime: TypeValeur = "Time"
Case dbTimeStamp: TypeValeur = "Time Stamp"
Case dbVarBinary: TypeValeur = "VarBinary"
End Select
End Function


Cdt, Blaise
---- ---- ----


"Argyronet" a écrit dans le message de
news:
Bonjour,

Si la base est constituée de tables liées, vous pouvez différencier une
table système par le biais de la propriété Connect qui doitretourner une
longueur de chaîne différente de 0.
Sinon bien évidement, par son nom, enfin, les 4 premiers caractères
("MSys")
Pour ce faire, utilsez un objet TableDef de la collection TableDefs de
l'objet Database.

Ex:
¯¯¯
CurrentDB.TableDefs("Nom d'une table iée").Connect = une chaîne... avec le
nom de la BDD
Len(CurrentDB.TableDefs("MSysObjects").Connect) = 0

Et pour les tables locales, vous pouvez faire une simple requête :
SELECT Name FROM MSysObjects WHERE Flags = 0 AND Type = 1
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"Francis SLAWNY" a écrit :

Bonjour tout le monde

XPPro SP3 Access 2003

Comment peut on accèder à la lecture et la signification des attributs
des
tables dans une BD access ?
Plus précisément comment reconnaitre en VBA les tables systèmes ?

Merci pour vos reponses
FS