OVH Cloud OVH Cloud

Modifier les attributs des champs

2 réponses
Avatar
Mike
Bonjour,
Je modifie et ajoute des champs dans des tables de ma base=20
de donn=E9es via des ALTER table cod=E9s dans des modules.
Or, j'ai =E9galement besoin de pr=E9ciser les attributs de ces=20
champs (nombre de d=E9cimal, format, valeur par d=E9faut....)=20
mais je ne sais pas comment faire.

D'avance merci.

Micha=EBl.

2 réponses

Avatar
Xavier HUE
Bonjour Mike,

Voir la collection TableDefs:

Dim Db As Database
Dim Tbl As TableDef

Set Db = CurrentDB ou OpenDatabase...
Set Tbl = Db.TableDefs("NomTable")

Tbl.Fields("NomChamp").DefaultValue = ValeurDefaut
Tbl.Fields("NomChamp").DataType = TypeDeDonnee
Tbl.Fields("NomChamp").DecimalPlaces = NbDecimales (0 à 15)

Pour TypeDeDonne, je n'ai pas retrouvé les constantes
intrinsèques (si elles existent!).
Il suffit de contruire une table avec des champs de chacun
des types puis, par VBA de lister les champs et leur
propriété DataType:

Dim Db As Database
Dim Tbl As TableDef
Dim Fld As Field

Set Db = CurrentDB ou OpenDatabase...
Set Tbl = Db.TableDefs("NomTable")

For Each Fld In Tbl.Fields
Debug.Print Fld.DefaultValue
Debug.Print Fld.DataType
Debug.Print Fld.DecimalPlaces
Next Fld

Si ça peut aider.
Cordialement.
Avatar
Mike
Nickel,
ça devrait aller avec ça.
Merci Xavier.



-----Message d'origine-----
Bonjour Mike,

Voir la collection TableDefs:

Dim Db As Database
Dim Tbl As TableDef

Set Db = CurrentDB ou OpenDatabase...
Set Tbl = Db.TableDefs("NomTable")

Tbl.Fields("NomChamp").DefaultValue = ValeurDefaut
Tbl.Fields("NomChamp").DataType = TypeDeDonnee
Tbl.Fields("NomChamp").DecimalPlaces = NbDecimales (0 à
15)


Pour TypeDeDonne, je n'ai pas retrouvé les constantes
intrinsèques (si elles existent!).
Il suffit de contruire une table avec des champs de
chacun

des types puis, par VBA de lister les champs et leur
propriété DataType:

Dim Db As Database
Dim Tbl As TableDef
Dim Fld As Field

Set Db = CurrentDB ou OpenDatabase...
Set Tbl = Db.TableDefs("NomTable")

For Each Fld In Tbl.Fields
Debug.Print Fld.DefaultValue
Debug.Print Fld.DataType
Debug.Print Fld.DecimalPlaces
Next Fld

Si ça peut aider.
Cordialement.
.