J'ai besoin de mettre à jour tous les noms de colonne dans une base de données Access de 8 tables. En résumé, chaque caractère de soulignement dans un nom de colonne doit être remplacé par un espace. Pouvez-vous recommander une méthode rapide pour cela?MS Access: renommer par programmation les colonnes
Répondre
J'écrit le code pour cela pour une application semaine dernière:
Public Sub RenameFields(ByRef tdf As DAO.TableDef)
Dim fld As DAO.Field
Dim strFieldName As String
Dim strNewName As String
Debug.Print "==============================================" & vbCrLf & UCase(tdf.Name)
For Each fld In tdf.Fields
strFieldName = fld.Name
strNewName = Mid(strFieldName, 4)
Select Case Left(strFieldName, 3)
Case "boo", "byt", "cur", "dat", "hyp", "int", "mem", "obj", "txt"
fld.Name = strNewName
Debug.Print tdf.Name & "." & strFieldName & "=>" & strNewName
End Select
Next fld
Set fld = Nothing
End Sub
Dans ce cas, un développeur précédent avait bêtement utilisé VBA conventions de nommage des variables pour les noms de champs (txtLastName pour ce qui devrait être LastName, par exemple) et j'ai eu besoin de tous les supprimer. Le code est appelé comme ceci:
Dim tdf As DAO.TableDef
For Each tdf in CurrentDB.TableDefs
If Left(tdf.Name,3) = "tbl" Then ' <= this line may differ for you
Call RenameFields(tdf)
End If
Next tdf
Set tdf = Nothing
Vous pouvez facilement adapter les RenameFields() sous utiliser Remplacer() pour le nouveau nom, quelque chose comme ceci:
Public Sub RenameFields(ByRef tdf As DAO.TableDef)
Dim fld As DAO.Field
Dim strFieldName As String
Dim strNewName As String
Debug.Print "==============================================" & vbCrLf & UCase(tdf.Name)
For Each fld In tdf.Fields
strFieldName = fld.Name
strNewName = Replace(strFieldName, "_"," ")
If strFieldName <> strNewName Then
fld.Name = strNewName
Debug.Print tdf.Name & "." & strFieldName & "=>" & strNewName
End If
Next fld
Set fld = Nothing
End Sub
Tout cela étant dit, je d vraiment, très fortement suggérer que vous pas remplacer les caractères de soulignement par des espaces, car cela rend beaucoup, beaucoup plus difficile de travailler avec les noms de champ dans SQL et dans le code. J'utiliser CamelCase sans soulignement ou des espaces ou des tirets de telle sorte que ce qui précède la ligne dans le code Remplacer() deviendrait:
strNewName = Replace(StrConv(Replace(strFieldName, "_"," "), vbProper)," ", vbNullString)
qui transformerait « Last_Name » ou « last_name » à « LastName ». Camel case pour la lisibilité des noms de champs a été standard pour les développeurs Access tant que j'ai été en programmation dans Access (depuis 1996), et évite les problèmes causés par des caractères spéciaux ou des espaces (à savoir, avoir à entourer le nom de champ avec des crochets).
Avez-vous essayez d'utiliser TableDefs
DatabaseName.TableDefs("TableName").Fields("FieldName").Name = "NewName"
- 1. Colonnes pivot MS-Access
- 2. Renommer par programme les tables dans les requêtes Access
- 3. Comment renommer une application Android par programmation?
- 4. Comment faire par programmation une requête dans MS Access par défaut à l'impression à l'impression
- 5. Tri par mois dans MS Access
- 6. renommer les tables colonnes dans mysql
- 7. PHP/MS Access Question
- 8. Annexer colonnes de deux tables dans MS Access
- 9. Comment copier une table liée à une table locale dans Ms Access par programmation?
- 10. Unicode Malheur! Ms-Access 97 migration vers Ms-Access 2007
- 11. MS Access Propriétés
- 12. MS Access: optimisation index
- 13. MS-Access: Remplacer "support"
- 14. Comportement bizarre dans MS Access
- 15. Evénements MS Access 2007
- 16. ms access if en sql
- 17. Comment gérer les valeurs NULL dans les colonnes de type boolean dans MS Access?
- 18. Compilateur MS-Access .mdb?
- 19. MS Access Atomic Transactions
- 20. transactions dans MS Access
- 21. Comment puis-je redimensionner automatiquement les colonnes ListView par programmation?
- 22. ms-access Propriété "Afficher les marges"
- 23. Les formulaires vides s'affichent dans MS Access
- 24. Lier MS Excel aux requêtes MS Access
- 25. MS Access 2003 runtime?
- 26. Portage application MS Access
- 27. ms-access 2007 .exe
- 28. MS Access Limit
- 29. Comment commentez-vous une requête MS-access?
- 30. Différentes pages impaires/paires dans les rapports MS Access