existe t'il une routine sous delphi qui me permet de savoir si un champ d'une table donnée (oracle, sql server, interbase) existe ou non.
exemple je veut tester sous delphi si le champ "nom" existe dans la table physique oracle "contact" ou non.
existe t'il une routine sous delphi qui me permet de savoir si un champ d'une table donnée (oracle, sql server, interbase) existe ou non.
exemple je veut tester sous delphi si le champ "nom" existe dans la table physique oracle "contact" ou non.
fait une requete sur ce champ que tu entoures d'un try catch...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 try existe:=true; ado1.sql.text:=select champ from table; ado1.open; except existe:=false; //existe pas end; ado1.close;
Si tu utilises les composants de la palette BDE (TQUEry,etc..) tu peux faire ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Liste:=tStringList.create; myquery.SQL.GetFieldNames(Liste); if pos(monchamp,liste.gettext)>0 then monchamp existe else monchamp n'existe pas
Utilise la méthode FindField
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Matable.Open; If MAtable.FindField('champx')=Nil Then Showmessage('Champ champx inexistant ! '); '
la méthode findfield ne permet pas de savoir si le champ existe ou non dans la table physique, mais seulement dans le dataset et dans le cas ou j'ajoute tous les champs dans le tdataset.
Je l'utilise avec les Objets Ttable et ça marche bien. ça me permet même de vérifier la version de la BDD. Méthode testée et éprouvée!
Bloon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 qry.SQL := 'SELECT * FROM CONTACT WHERE 1=0'; qry.Open; if assigned(qry.FindField('nom')) then ... existe ... else ... n'existe pas ... qry.Close;
Partager