Ajout de champs dans une table de sql server

gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008 - 21 nov. 2006 à 23:58
gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Derniè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:

3 réponses

nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 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

               Return



True

     Else
:

Return



False

     End



If

End



Function
0
nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 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é :-((
0
gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008
1 déc. 2006 à 19:43
merci beaucoup nbaduraux pour votre aide.
0
Rejoignez-nous