nw.*_*nw. 4 database ms-access database-design
我需要更新 8 个表的 Access 数据库中的所有列名。简而言之,列名中的每个下划线都应替换为空格。你能推荐一种快速的方法来做到这一点吗?
你有没有尝试使用 TableDefs
DatabaseName.TableDefs("TableName").Fields("FieldName").Name = "NewName"
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/bb220949.aspx
上周我为一个应用程序编写了代码:
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,以前的开发人员愚蠢地使用了 VBA 变量命名约定作为字段名称(例如 txtLastName 应该是 LastName),我需要删除所有这些约定。代码的调用方式如下:
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
Run Code Online (Sandbox Code Playgroud)
您可以轻松地调整 RenameFields() 子项以使用 Replace() 作为新名称,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
尽管如此,我真的、真的强烈建议您不要将下划线替换为空格,因为这使得在 SQL 和代码中使用字段名称变得非常非常困难。我将使用不带下划线、空格或破折号的 CAMEL 大小写,以便上面代码中的 Replace() 行将变为:
strNewName = Replace(StrConv(Replace(strFieldName, "_"," "), vbProper)," ", vbNullString)
Run Code Online (Sandbox Code Playgroud)
这会将“Last_Name”或“last_name”转换为“LastName”。自从我在 Access 中编程以来(自 1996 年以来),用于字段名称可读性的驼峰式大小写一直是 Access 开发人员的标准,并且避免了由特殊字符或空格引起的问题(即必须用方括号将字段名称括起来) )。