更改所有文本字段中的字符

时间:2013-11-15 20:16:15

标签: ms-access replace access-vba

我需要你的帮助。我想在另一个更改一个字符,但在所有数据库中,我有几个表和字段。所以我在VB中构建一个函数但是没有任何改变,我没有错误。我认为我的情况是错误的,但我不知道如何纠正它:/

Public Sub updateField()
Dim db As DAO.Database, td As DAO.TableDef, field As DAO.field
Dim rs As DAO.Recordset, sSQL As String, sData As String

Set db = CurrentDb

Change = "\"""
replaced = """"

'each table in db
For Each tbd In db.TableDefs
    'each field in table
    For Each fld In tbd.Fields
        'check if String Data have my character
        If InStr(1, fld.Name, Change) Then
            sSQL = "UPDATE " & tbd.Name & " SET " & fld.Name & " = replace([" & fld.Name & "], " & Change & ", " & replaced & ")"
            db.Execute sSQL
        End If
    Next
Next
End Sub

编辑: 我终于找到了什么是错的。如果有人感兴趣:

Set db = CurrentDb

Change = "\"""
replaced = """"

'each table in db
For Each tbd In db.TableDefs
    'each field in table
    For Each fld In tbd.Fields
        If Left(tbd.Name, 4) <> "MSys" And Left(tbd.Name, 4) <> "~TMP" Then
            If fld.Type = dbText Or fld.Type = dbMemo Then
                sSQL = "UPDATE " & tbd.Name & " SET " & fld.Name & " = replace([" & fld.Name & "],'" & Chr(92) + Chr(34) & "','" & Chr(34) & "')"
                db.Execute sSQL
                'Debug.Print (sSQL)
            End If
        End If
    Next
Next

感谢你的帮助;)

1 个答案:

答案 0 :(得分:0)

如果它应该有帮助我的解决方案:

Public Sub updateField()
Dim db As DAO.Database, td As DAO.TableDef, field As DAO.field
Dim rs As DAO.Recordset, sSQL As String, sData As String, change As String, replace As String

change = "\'"
replace = "'"

' simple quote = 39
' doulbe quote = 34
' antislash = 92
' retour chariot = 13
' n = 110
' r = 114
Set db = CurrentDb

'each table in db
For Each tbd In db.TableDefs
    'each field in table
    For Each fld In tbd.Fields
        If Left(tbd.Name, 4) <> "MSys" And Left(tbd.Name, 4) <> "~TMP" Then
            If fld.Type = dbText Or fld.Type = dbMemo Then
                ' \r\n
                'sSQL = "UPDATE " & tbd.Name & " SET [" & fld.Name & "] = replace([" & fld.Name & "],'\r\n','" & Chr(13) & Chr(10) & "');"
                ' \"
                'sSQL = "UPDATE " & tbd.Name & " SET [" & fld.Name & "] = replace([" & fld.Name & "],'" & Chr(92) + Chr(34) & "','" & Chr(34) & "');"
                'db.Execute sSQL
                sSQL = "UPDATE " & tbd.Name & " SET [" & fld.Name & "] = replace([" & fld.Name & "],'\''','''');"
                db.Execute sSQL
                'Debug.Print (sSQL)
            End If
        End If
    Next
Next
End Sub

这对我有用;)