gargourifahmi
Messages postés31Date d'inscriptiondimanche 23 juillet 2006StatutMembreDernière intervention 3 décembre 2008
-
21 nov. 2006 à 23:58
gargourifahmi
Messages postés31Date d'inscriptiondimanche 23 juillet 2006StatutMembreDernière intervention 3 décembre 2008
-
1 déc. 2006 à 19:43
Salut,
Je suis en train d'utiliser la table Customers de sql server.
J'ai ajouté des champs a cette table afin de l'adapter a mes besoins.
Le probleme est lorsque je deplace mon application a un autre pc je doit réajouter
ces champs la.
Est ce qu'il y a une méthode qui me permet d'ajouter ces champs automatiquement si ils ne se trouvent dans la table.
Aidez moi SVP,c'est trés urgent.
A voir également:
Ajouter un champ dans une table sql
Ajouter un champs dans une table sql - Meilleures réponses
Requete sql pour afficher les champs d'une table - Meilleures réponses
nbaduraux
Messages postés24Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention15 septembre 2017 1 déc. 2006 à 15:30
Ma méthode pour répondre à ce genre de problème :
Tout d'abord, je teste si la colonne désirée existe dans la table.
Pour cela je récupère le nombre d'occurrences de cette colonne (1 si elle exise, sinon 0) dans la table système syscolumns, pour la table Customers, grâce à la requête suivante :
SELECT count(*) FROM syscolumns WHERE name= 'NOM COLONNE'
AND id = (SELECT id FROM sysobjects
WHERE name='Customers' AND type='U')
Note : je récupère l'id de la table Customers dans sysobjects (le type 'U' est celui des Users Datatables ;-) pour ne compter que les colonnes correspondant à cette dernière.
Si le résultat est 1, la colonne existe déjà.
Si le résultat est 0, il suffit de la créer en exécutant une nouvelle requete du genre :
ALTER TABLE [Customers ] ADD [NOM COLONNE] [int] NULL
Pour illustration : mes deux fonctions VB2005 pour cet exemple :
Public
Function
TesterSiLaColonneExiste(
ByVal
psNomColonne
As
String
, _
ByVal
psNomTable
As
String
, _
ByVal
poConn
As
SqlClient.SqlConnection)
As
Boolean
If
poConn
Is
Nothing
Then
Return
False
Dim
sqlCmd
As
New
SqlClient.SqlCommand( _
"SELECT count(*) FROM syscolumns WHERE name ='"
& psNomColonne &
"' "
& _
"AND id = (SELECT id FROM sysobjects " & _
"WHERE name='"
& psNomTable &
"' AND type='U')"
, poConn)
If
CType
(sqlCmd.ExecuteScalar(),
Integer
) = 0
Then
Return
False
Else
:
Return
True
End
If
End
Function
Public
Function
AjouterUneColonneEntier(
ByVal
psNomColonne
As
String
, _
ByVal
psNomTable
As
String
, _
ByVal
poConn
As
SqlClient.SqlConnection)
As
Boolean
If
poConn
Is
Nothing
Then
Return
False
Dim
sqlCmd
As
New
SqlClient.SqlCommand( _
"ALTER TABLE ["
& psNomTable &
"] ADD ["
& psNomColonne &
"] [int] NULL "
, _
poConn)
If
sqlCmd.ExecuteNonQuery > 0
Then 'la requête renvoie 1 si la colonne est bien créée
nbaduraux
Messages postés24Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention15 septembre 2017 1 déc. 2006 à 15:35
Désolée pour la mise en page des fonctions : ça n'a pas pris mes modifications de polices. A copier - coller dans un éditeur de texte pour plus de clarté :-((