OVH Cloud OVH Cloud

Ou sont les vedettes ?

6 réponses
Avatar
Jean Claude
Bonjour a tous

Beaucoup de difficult=E9s pour obtenie une r=E9ponse sur un=20
probl=E8me simple pour les AS DE VB

dans une proc=E9dure de cr=E9ation d'une table Access, je=20
voudrais imput=E9 a un field :

Null interdit=3Dnon
chaine vide autoris=E9e=3Doui

je pense que qu'il faut ajouter : Required et=20
AllowZeroLength

mais je ne vois pas comment, voici mon code :

tbl.Name =3D TableName
tbl.Columns.Append "zone", adVarWChar, 2
cat.Tables.Append tbl

Merci de vos r=E9ponses
Cordialement
JCM

6 réponses

Avatar
Jean-Marc
"Jean Claude" a écrit dans le message de
news:685a01c493db$c65b7560$
Bonjour a tous
dans une procédure de création d'une table Access, je
voudrais imputé a un field :



Null interdit=non
chaine vide autorisée=oui



je pense que qu'il faut ajouter : Required et
AllowZeroLength



mais je ne vois pas comment, voici mon code :



tbl.Name = TableName
tbl.Columns.Append "zone", adVarWChar, 2
cat.Tables.Append tbl



Hello,
comme ça par exemple:
-----------------------------
Private Sub creation()

Dim db As Database
Dim rs As Recordset
Dim t As TableDef

Kill "c:/test.mdb"

Set db = CreateDatabase("c:/test.mdb", dbLangGeneral)
Set t = db.CreateTableDef("toto")

t.Fields.Append t.CreateField("tutu", dbInteger)

t.Fields("tutu").AllowZeroLength = True
t.Fields("tutu").Required = True

db.TableDefs.Append t

End Sub
---------------------------------

Il faut jouer avec les propriétés d'un objet field. Le field doit exister
avant de changer les propriétés. Le code donné en exemple n'est qu'une des
multiples façons de faire (testé avc référence à DAO 3.6)

--
Jean-marc
Avatar
Jean claude
Salut Jean-Marc

Merci pour ta réponse, mais cela ne règle pas mon probleme,

cat.ActiveConnection = ADOcn
' Ajout de la table
Set tbl = New ADOX.Table
tbl.Name = TableName
tbl.Columns.Append "Num", adInteger

si j'écris tblCcolumns("Num"). la liste déroulante ne me
propose pas AllowZeroLength

Vois-tu pourquoi ?

Cordialement
Jean Claude
-----Message d'origine-----
"Jean Claude" a écrit


dans le message de
news:685a01c493db$c65b7560$
Bonjour a tous
dans une procédure de création d'une table Access, je
voudrais imputé a un field :



Null interdit=non
chaine vide autorisée=oui



je pense que qu'il faut ajouter : Required et
AllowZeroLength



mais je ne vois pas comment, voici mon code :



tbl.Name = TableName
tbl.Columns.Append "zone", adVarWChar, 2
cat.Tables.Append tbl



Hello,
comme ça par exemple:
-----------------------------
Private Sub creation()

Dim db As Database
Dim rs As Recordset
Dim t As TableDef

Kill "c:/test.mdb"

Set db = CreateDatabase("c:/test.mdb", dbLangGeneral)
Set t = db.CreateTableDef("toto")

t.Fields.Append t.CreateField("tutu", dbInteger)

t.Fields("tutu").AllowZeroLength = True
t.Fields("tutu").Required = True

db.TableDefs.Append t

End Sub
---------------------------------

Il faut jouer avec les propriétés d'un objet field. Le


field doit exister
avant de changer les propriétés. Le code donné en exemple


n'est qu'une des
multiples façons de faire (testé avc référence à DAO 3.6)

--
Jean-marc



.



Avatar
Jean-Marc
"Jean claude" a écrit dans le message de
news:6b7a01c49416$40f9f190$
Salut Jean-Marc



Merci pour ta réponse, mais cela ne règle pas mon probleme,



cat.ActiveConnection = ADOcn
' Ajout de la table
Set tbl = New ADOX.Table
tbl.Name = TableName
tbl.Columns.Append "Num", adInteger



si j'écris tblCcolumns("Num"). la liste déroulante ne me
propose pas AllowZeroLength



Vois-tu pourquoi ?



Non je ne vois pas, et je n'ai jamais cherché en fait.
Ceci dit, je pense qu'un coup de Google avec
"ADO field AllowZeroLength" ou "ADO field NULL authorized"
devrait donner des résultats.

Mais à mon avis, tu peux essayer de récupérer ton field dans un vrai objet
field.
Voir alors si il ne propose pas contextuellement ces 2 pptés.

--
Jean-marc
Avatar
Jean claude
Salut

j'ai essayé sur google et rien trouvé qui puisses m'aider
Cordialement
JC
-----Message d'origine-----
"Jean claude" a écrit


dans le message de
news:6b7a01c49416$40f9f190$
Salut Jean-Marc



Merci pour ta réponse, mais cela ne règle pas mon




probleme,

cat.ActiveConnection = ADOcn
' Ajout de la table
Set tbl = New ADOX.Table
tbl.Name = TableName
tbl.Columns.Append "Num", adInteger



si j'écris tblCcolumns("Num"). la liste déroulante ne me
propose pas AllowZeroLength



Vois-tu pourquoi ?



Non je ne vois pas, et je n'ai jamais cherché en fait.
Ceci dit, je pense qu'un coup de Google avec
"ADO field AllowZeroLength" ou "ADO field NULL authorized"
devrait donner des résultats.

Mais à mon avis, tu peux essayer de récupérer ton field


dans un vrai objet
field.
Voir alors si il ne propose pas contextuellement ces 2


pptés.

--
Jean-marc


.



Avatar
Eric
Bonjour Jean-Claude,

Le code ci-dessous crée une table avec 2 champs (IdZone NuméroAuto et un
champ Zone Texte 30, dont la propriété Null Interdit est à Non et la
propriété Chaine Vide Autorisée à Oui) dans la bd D:Test.mdb.

Les propriétés que tu cherches sont :
- Nullable
- Jet OLEDB:Allow Zero Length
Dans le code, j'ai mis une boucle pour avoir les différentes propriétés
d'une colonne.

(Adapter le chemin et le nom de la bd)

Private Sub Command1_Click()
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim col As New ADOX.Column
cat.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:Test.mdb;"
With tbl
.Name = "TableCrééeADOX"
.Columns.Append "IDZone", adInteger
.Columns.Append "Zone", adVarWChar, 30
Set col = tbl.Columns("IdZone")
With col
Set .ParentCatalog = cat
.Properties("AutoIncrement") = True
End With
Set col = tbl.Columns("Zone")
With col
Set .ParentCatalog = cat
.Properties("Nullable") = True
.Properties("Jet OLEDB:Allow Zero Length") = True
' Pour info : boucle donnant les properties d'une column
For Each p In col.Properties
Debug.Print p.Name
Next p
End With
End With
Set col = Nothing
cat.Tables.Append tbl
Set cat = Nothing
End Sub

Dans les références de ton projet, ajoutes la ref Microsoft ADO Ext 2.7 for
DDL and Security, si nécessaire.

Espérant que ca résolve ton problème,

A+
Eric


"Jean claude" écrivait news:04c601c4949f
$23459490$:

Salut

j'ai essayé sur google et rien trouvé qui puisses m'aider
Cordialement
JC


Avatar
JCM
Bonjour Eric

Merci pour ta réponse, cela règle un problème qui m'a fait
perdre beaucoup de temps

Cordialement
Jean Claude
-----Message d'origine-----
Bonjour Jean-Claude,

Le code ci-dessous crée une table avec 2 champs (IdZone


NuméroAuto et un
champ Zone Texte 30, dont la propriété Null Interdit est


à Non et la
propriété Chaine Vide Autorisée à Oui) dans la bd


D:Test.mdb.

Les propriétés que tu cherches sont :
- Nullable
- Jet OLEDB:Allow Zero Length
Dans le code, j'ai mis une boucle pour avoir les


différentes propriétés
d'une colonne.

(Adapter le chemin et le nom de la bd)

Private Sub Command1_Click()
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim col As New ADOX.Column
cat.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:Test.mdb;"
With tbl
.Name = "TableCrééeADOX"
.Columns.Append "IDZone", adInteger
.Columns.Append "Zone", adVarWChar, 30
Set col = tbl.Columns("IdZone")
With col
Set .ParentCatalog = cat
.Properties("AutoIncrement") = True
End With
Set col = tbl.Columns("Zone")
With col
Set .ParentCatalog = cat
.Properties("Nullable") = True
.Properties("Jet OLEDB:Allow Zero Length") = True
' Pour info : boucle donnant les properties d'une


column
For Each p In col.Properties
Debug.Print p.Name
Next p
End With
End With
Set col = Nothing
cat.Tables.Append tbl
Set cat = Nothing
End Sub

Dans les références de ton projet, ajoutes la ref


Microsoft ADO Ext 2.7 for
DDL and Security, si nécessaire.

Espérant que ca résolve ton problème,

A+
Eric


"Jean claude" écrivait


news:04c601c4949f
$23459490$:

Salut

j'ai essayé sur google et rien trouvé qui puisses




m'aider
Cordialement
JC


.