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

Savoir si un champ existe

6 réponses
Avatar
Alain MENARD
Bonjour à tous,

J'utilise VB6 SP5 avec des connexions ADO.

Je souhaiterai savoir si le champ TITI existe dans une table "Parametres".
C'est une table Access 2000.

Car s'il existe je ne fais rien sinon je dois créer 8 champs supplémentaires
de type Texte de longueur 20

Je sais détecter si une table existe mais pas un champ.

Merci de votre aide

--

Amicalement

Alain MENARD


Pour me joindre : amenard@vision-tech.fr

6 réponses

Avatar
vb
Pour rechercher l'existence tu as plusieurs techniques, a
toi mon ami programmeur de choisir:
1- ACCESS POSSEDE UNE TABLE SYSTEME MYSYSOBJECTS, VERIFIE
S'IL EXISTE. LE CHAMP NAME CORRESPOND AU NOM DE LA TABLE
ET LE CHAMP TYPE EST A 1 POUR LES TABLES NON LIEES ET A 6
POUR LES TABLES LIEES.

2.TU CREE UN RECORDSET ADO AVEC UN SELECT TITI FROM
PARAMETRES ET TU RECUPERES L'ERREUR SI IL Y A UNE ERREUR
TU PEUX CONSIDERE INTUITIVEMENT QUE TITI N'EXISTE PAS ET
SINON ERR.NUMBER=0 ET IL N'Y AURA PAS D'ERREUR.
ATTENTION IL FAUT OUVRIR LE RECORDSET ET L'ERREUR
APPARAITRA;


-----Message d'origine-----
Bonjour à tous,

J'utilise VB6 SP5 avec des connexions ADO.

Je souhaiterai savoir si le champ TITI existe dans une


table "Parametres".
C'est une table Access 2000.

Car s'il existe je ne fais rien sinon je dois créer 8


champs supplémentaires
de type Texte de longueur 20

Je sais détecter si une table existe mais pas un champ.

Merci de votre aide

--

Amicalement

Alain MENARD


Pour me joindre :


.



Avatar
vb
Pour rechercher l'existence tu as plusieurs techniques, a
toi mon ami programmeur de choisir:
1- ACCESS POSSEDE UNE TABLE SYSTEME MYSYSOBJECTS, VERIFIE
S'IL EXISTE. LE CHAMP NAME CORRESPOND AU NOM DE LA TABLE
ET LE CHAMP TYPE EST A 1 POUR LES TABLES NON LIEES ET A 6
POUR LES TABLES LIEES.

2.TU CREE UN RECORDSET ADO AVEC UN SELECT TITI FROM
PARAMETRES ET TU RECUPERES L'ERREUR SI IL Y A UNE ERREUR
TU PEUX CONSIDERE INTUITIVEMENT QUE TITI N'EXISTE PAS ET
SINON ERR.NUMBER=0 ET IL N'Y AURA PAS D'ERREUR.
ATTENTION IL FAUT OUVRIR LE RECORDSET ET L'ERREUR
APPARAITRA;


-----Message d'origine-----
Bonjour à tous,

J'utilise VB6 SP5 avec des connexions ADO.

Je souhaiterai savoir si le champ TITI existe dans une


table "Parametres".
C'est une table Access 2000.

Car s'il existe je ne fais rien sinon je dois créer 8


champs supplémentaires
de type Texte de longueur 20

Je sais détecter si une table existe mais pas un champ.

Merci de votre aide

--

Amicalement

Alain MENARD


Pour me joindre :


.



Avatar
Alain MENARD
Salut vb

J'aime bien la soluce 2 pour l'instant.

N'y a t'il pas de solution plus académique ?

En tout cas cela me suffit pour mes tests.

MERCI

--

Amicalement

Alain MENARD

Pour me joindre :

"vb" a écrit dans le message de
news:091801c3b8c1$e4790080$
Pour rechercher l'existence tu as plusieurs techniques, a
toi mon ami programmeur de choisir:
1- ACCESS POSSEDE UNE TABLE SYSTEME MYSYSOBJECTS, VERIFIE
S'IL EXISTE. LE CHAMP NAME CORRESPOND AU NOM DE LA TABLE
ET LE CHAMP TYPE EST A 1 POUR LES TABLES NON LIEES ET A 6
POUR LES TABLES LIEES.

2.TU CREE UN RECORDSET ADO AVEC UN SELECT TITI FROM
PARAMETRES ET TU RECUPERES L'ERREUR SI IL Y A UNE ERREUR
TU PEUX CONSIDERE INTUITIVEMENT QUE TITI N'EXISTE PAS ET
SINON ERR.NUMBER=0 ET IL N'Y AURA PAS D'ERREUR.
ATTENTION IL FAUT OUVRIR LE RECORDSET ET L'ERREUR
APPARAITRA;


-----Message d'origine-----
Bonjour à tous,

J'utilise VB6 SP5 avec des connexions ADO.

Je souhaiterai savoir si le champ TITI existe dans une


table "Parametres".
C'est une table Access 2000.

Car s'il existe je ne fais rien sinon je dois créer 8


champs supplémentaires
de type Texte de longueur 20

Je sais détecter si une table existe mais pas un champ.

Merci de votre aide

--

Amicalement

Alain MENARD


Pour me joindre :


.



Avatar
Clive Lumb
Il me semble que les recordsets en ADO ont une collection "Fields" que l'on
peut énumerer ...
du style
For each Field in MonRecordset.fields
debug.print field.name
next field


"Alain MENARD" a écrit dans le message de
news:3fcc6a7c$0$26804$
Bonjour à tous,

J'utilise VB6 SP5 avec des connexions ADO.

Je souhaiterai savoir si le champ TITI existe dans une table "Parametres".
C'est une table Access 2000.

Car s'il existe je ne fais rien sinon je dois créer 8 champs


supplémentaires
de type Texte de longueur 20

Je sais détecter si une table existe mais pas un champ.

Merci de votre aide

--

Amicalement

Alain MENARD


Pour me joindre :




Avatar
Adrien Gaudel
exacte, normalement toutes les collections des objet VB peuvent être
parcourue par ce genre de methode

"Clive Lumb" a écrit dans le message
de news:
Il me semble que les recordsets en ADO ont une collection "Fields" que


l'on
peut énumerer ...
du style
For each Field in MonRecordset.fields
debug.print field.name
next field


"Alain MENARD" a écrit dans le message de
news:3fcc6a7c$0$26804$
> Bonjour à tous,
>
> J'utilise VB6 SP5 avec des connexions ADO.
>
> Je souhaiterai savoir si le champ TITI existe dans une table


"Parametres".
> C'est une table Access 2000.
>
> Car s'il existe je ne fais rien sinon je dois créer 8 champs
supplémentaires
> de type Texte de longueur 20
>
> Je sais détecter si une table existe mais pas un champ.
>
> Merci de votre aide
>
> --
>
> Amicalement
>
> Alain MENARD
>
>
> Pour me joindre :
>
>




Avatar
Alain MENARD
Bonjour,

Merci Clive et Adrien pour cette remarque fort intéressante.

J'ai donc créé une fonction pour savoir si un champ existe et j'ai fait mon
prog pour ajouter les champs dans la table. Seulement je ne sais pas
enregistrer la table. C'est bête hein ?

Voila la fonction :

Public Function FieldExists(cat As ADOX.Catalog, TableName As String,
FieldName As String) As Boolean
On Error Resume Next

Dim tbl As New ADOX.Table
Dim Fiel As New ADOX.Column

For Each Fiel In tbl.Columns
If Fiel.Name = FieldName Then
FieldExists = True
Exit For
End If
Next

End Function


Voila mon prog :

Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

cat.ActiveConnection = conADO

If Not FieldExists(cat, "Achats", "Faciale") Then
'=> Ajout des champs
tbl.Name = "Achats"
tbl.Columns.Append "Faciale", adLongVarWChar, 20
tbl.Columns.Append "Couleurs", adLongVarWChar, 20
tbl.Columns.Append "fType", adLongVarWChar, 20
tbl.Columns.Append "Serie", adLongVarWChar, 20
tbl.Columns.Append "Dentelure", adLongVarWChar, 20
tbl.Columns.Append "Particularite", adLongVarWChar, 20
tbl.Columns.Append "Dessinateur", adLongVarWChar, 20
tbl.Columns.Append "Graveur", adLongVarWChar, 20

' MAIS QU'EST CE QUE JE MET ICI POUR SAUVEGARDER LA TABLE ?

Set tbl = Nothing
Set cat = Nothing
End If


Merci d' avance

--

Amicalement

Alain MENARD

Pour me joindre :