Quel est le DDL pour renommer une colonne dans l'accès MS? Quelque chose sur les lignes de: p>
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. P> Alter table Mytable Renommer Col1 à Col2 Code> P>
6 Réponses :
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;
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"
... 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é"
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. P>
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
Ma solution, simple mais efficace:
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]