Modifier le nom d'une colonne

Résolu
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 16 mai 2005 à 10:08
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 17 mai 2005 à 11:43
bonjour,

j'essaie de modifier le nom d'une des colonne de ma bdd access. pour cela, j'utilise l'instruction "execute" d'une connection adodb.
le compilateur me signale une erreur de syntaxe dans l'instruction "alter talbe ..." que je n'arrive pas a corriger.

pourriez-vous me dire ce qui cloche dans le code ci-dessous ?
j'ai laisse une 2eme commande "alter table" qui est celle generee automatiquement par mysql pour modifier le nom d'une colonne mais qui ne fonction guere mieux.

ancien_nom = "Colonne 1"
nouveau_nom = "col1"
connex.ConnectionString = chaine_connexion
connex.Open
connex.Execute "ALTER TABLE actions RENAME COLUMN [" & ancien_nom & "] TO [" & nouveau_nom & "];"
'commande tiree de mysql :
'connex.Execute "ALTER TABLE actions.[" & ancien_nom & "] CHANGE [" & ancien_nom & "] [" & nouveau_nom & "] DOUBLE;"
connex.Close

merci a vous,

alonsyl

3 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
16 mai 2005 à 12:55
Salut,

A ma connaissance, Access n'accepte pas "ALTER TABLE".

Une solution est d'ajouter une colonne avec le nouveau nom, transférer les données puis effacer l'ancienne colonne.

C'est plus compliqué mais je ne vois rien d'autre pour Access.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
17 mai 2005 à 09:36
bonjour canislupus,

si je suis ta technique, il me sermble que la colonne que je vais dupliquer puis recree sera situee en derniere position de ma table.

est-il possible de la repositionner a son emplacement d'origine ?

merci a toi,

alonsyl
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
17 mai 2005 à 11:43
Ton problème m'a intéressé car ça pourrait me servir et j'ai trouvé une autre soluce en ADO mais qui ne fonctionne qu'à partir du provider "Provider=Microsoft.Jet.OLEDB.4.0" :

' Ajoute dans les références du projet : Microsoft ADO Ext. 2.x for DDL and Security
' et, à la place de "connex.execute ..." place ça :

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


Set cat.ActiveConnection = connex
Set tbl = cat.Tables(TaTable)
Set champ = tbl.Columns(ancien_nom)
champ.Name = nouveau_nom

' pour libérer les ressources
Set cat = Nothing
Set tbl = Nothing
Set champ = Nothing

Chez moi ça marche avec une base access 97. J'espère que ça fonctionnera pour toi.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous