2010-02-02 5 views
2

Access 데이터베이스에서 8 개 테이블의 모든 열 이름을 업데이트해야합니다. 즉, 열 이름의 각 밑줄은 공백으로 대체해야합니다. 이 작업을 수행하는 빠른 방법을 권장 할 수 있습니까? 이 경우MS Access : 프로그래밍 방식으로 열 이름 바꾸기

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 

, 이전 개발자가 바보 사용했다 :

답변

2

난 그냥 지난주 앱이 코드를 작성하여 시도 했 필드 이름에 대한 VBA 변수 명명 규칙 (예 : LastName이어야하는 txtLastName) 및 모든 항목을 제거해야했습니다. 코드는 다음과 같이 호출됩니다

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 

쉽게 새로운 이름을() 대체 사용) (서브를 RenameFields 적응할 수있는, 뭔가를 같이 :

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 

가 말했다 모두, 내가 ' d 정말로, 정말로 강력하게 추천합니다. 은 밑줄을 공백으로 바꾸는 것이 좋습니다. SQL 및 코드의 필드 이름을 사용하여 작업하기가 훨씬 어려워지기 때문입니다. 하여 코드() 라인을 교체하도록 나는 위가 될 것없이 밑줄 또는 공백이나 대시 CAMEL 케이스를 사용합니다 :

strNewName = Replace(StrConv(Replace(strFieldName, "_"," "), vbProper)," ", vbNullString) 

즉, "LAST_NAME"또는 "LAST_NAME"을 "성"을 변환합니다. 필드 이름의 가독성을위한 카멜 케이스는 Access 개발자가 Access (1996 년부터)에서 프로그래밍하고 특수 문자 나 공백으로 인해 발생하는 문제를 피하는 한 표준으로 사용되었습니다 (즉, 필드 이름을 대괄호로 묶어야합니다.).

관련 문제