2013-11-15 3 views
1

Мне нужна ваша помощь. Я хотел изменить один символ другим, но во всей базе данных, и у меня есть несколько таблиц и полей. Поэтому я строю функцию в 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 

EDIT: я, наконец, найти то, что случилось. если некоторые люди заинтересованы:

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 

Thx за вашу помощь, ребята;)

+0

Ick, старые объекты DAO. Я чувствую себя грязным, просто читая это. –

+0

, так что вы хотите изменить имя полей в базе данных? или значения данных, хранящиеся в этих полях? Кажется, что ваша логика пытается заменить имена полей, а не значения. – xQbert

+0

Да, я пытаюсь изменить значения в поле ^^, но я не знаю, как это сделать:/Thx – user2822320

ответ

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 

То, что работает для меня;)

Смежные вопросы