2010-01-12 6 views
5

Quel est le DDL pour renommer une colonne dans MS Access? Quelque chose le long des lignes de:Quelle est la colonne DDL à renommer dans MSAccess?

alter table myTable rename col1 to col2

qui ne fonctionne pas pour les bases de données de format MSAccess 2000. J'utilise OLEDB ou ADO.NET avec un db de format MSAccess 2000 mais je serais reconnaissant de tout indice à la syntaxe ou une suggestion quant à la façon d'y parvenir en utilisant ADO.NET d'une autre manière.

Répondre

6

Je suis chez moi et je ne peux pas tester ça pour le moment, mais je pense que ça devrait marcher. Cette site a des informations à ce sujet.

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype 

Modifier Je l'ai testé ce un peu et assez curieusement, vous ne pouvez pas renommer une colonne que je peux trouver. La syntaxe ALTER COLUMN permet uniquement de changer de type. En utilisant SQL, il semble nécessaire de supprimer la colonne et de la rajouter. Je suppose que les données pourraient être sauvegardées dans une table temporaire.

alter table test drop column i; 
alter table test add column j integer; 
4

Je ne crois pas que vous pouvez faire, autrement que par l'ajout d'une nouvelle colonne, la mise à jour de la colonne existante puis de supprimer la colonne « vieux ».

Il est cependant tout à fait simple dans VBA:

Set db = CurrentDb 
Set fld = db.TableDefs("Table1").Fields("Field1") 
fld.Name = "NewName" 
+3

... en utilisant DAO, bien sûr. DAO est l'interface naturelle pour contrôler Jet, et bien que le DDL puisse être pratique, il n'a jamais été bien supporté par Jet/ACE. Je ne m'en suis jamais soucié, puisque je ne modifie pas mon schéma par le code (je le fais à la main, puisque c'est quelque chose qui arrive une fois dans une lune bleue). Il faudrait plus de temps pour l'écrire et le tester. fais-le). –

2

J'ai regardé dans ce avant et il n'y a pas de déclaration DDL qui peut le faire pour vous. La seule méthode consiste à ajouter une nouvelle colonne, copier les données et supprimer l'ancienne colonne.

3

Dans VBA, vous pouvez le faire pour renommer une colonne:

Dim acat As New ADOX.Catalog 
Dim atab As ADOX.Table 
Dim acol As ADOX.Column 
Set acat = New ADOX.Catalog 
acat.ActiveConnection = CurrentProject.Connection 
Set atab = acat.Tables("yourTable") 
For Each acol In atab.Columns 
    If StrComp(acol.Name, "oldName", vbTextCompare) = 0 Then 
     acol.Name = "newName" 
     Exit For 
    End If 
Next acol 
5

Ma solution, simple mais efficace:

Dim tbl as tabledef 
set tbl = currentdb.TableDefs("myTable") 
tbl.fields("OldName").name = "Newname" 
0

La réponse fournie par Fionnuala en utilisant DDL est

ALTER TABLE [your table] ADD COLUMN [your newcolumn] Text(250) 
UPDATE [your table] SET [your table].[newcolumn] = [your table].[old column] 
ALTER TABLE [your table] DROP COLUMN [oldcolumn] 

Notez que vous pouvez évidemment spécifier n'importe quel type de colonne pour votre nouvelle colonne, et Text (250) est juste pour illustrati sur

Questions connexes