8
votes

Quel est le DDL pour renommer la colonne dans l'accès MS?

Quel est le DDL pour renommer une colonne dans l'accès MS? Quelque chose sur les lignes de:

Alter table Mytable Renommer Col1 à Col2

qui ne fonctionne pas pour les bases de données de format MSAccess 2000. J'utilise OLEDB ou ADO.NET avec un DB au format MSAccess 2000, mais vous en seriez reconnaissant à la syntaxe ou à une suggestion sur la manière de réaliser cela en utilisant ADO.NET d'une autre manière.


0 commentaires

6 Réponses :


7
votes

Je suis à la maison et je ne peux pas tester cela pour le moment, mais je pense que cela devrait fonctionner. Ce site a des informations à ce sujet.

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


0 commentaires

8
votes

Je ne crois pas que vous puissiez le faire, autrement qu'en ajoutant une nouvelle colonne, à la mise à jour de la colonne existante, puis en supprimant la colonne "ancienne".

Il est cependant assez simple dans VBA: P >

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


2 commentaires

... utiliser DAO, bien sûr. DAO est l'interface naturelle pour contrôler le jet et, tandis que DDL peut être pratique, il n'a jamais été pris en charge par Jet / Ace. Je ne me suis jamais soucié, car je ne modifie pas mon schéma via le code (je le fais à la main, car c'est quelque chose qui se passe une fois dans une lune bleue - il faudrait plus de temps pour le script et le testerait que ce serait fais-le).


J'ai constaté que je devais mettre la variable de base de données à dbengine (0) (0) pour garder l'objet ouvert sinon je reçois une erreur "objet invalide ou non enfoncé"



2
votes

J'ai déjà examiné cela et il n'y a pas de déclaration DDL qui peut le faire pour vous. Seule méthode consiste à ajouter une nouvelle colonne, à copier les données et à supprimer l'ancienne colonne.


0 commentaires

3
votes

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


0 commentaires

5
votes

Ma solution, simple mais efficace: xxx


0 commentaires

4
votes

La réponse fournie par Fionnuala à l'aide de 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]


0 commentaires