Ben*_*Ben 1 c# vb.net ms-access
我有一个包含数百个查询的Access 2003数据库文件.我想根据条件重命名我的查询中引用的所有表
If tableNameInQuery = "tableName" Then
tableNameInQuery = "newTableName"
End If
Run Code Online (Sandbox Code Playgroud)
任何建议或文章都会很棒.
谢谢
PS在C#或VB.NET中的一个例子将不胜感激
我有一个快速而肮脏的VBA sub,可以完成我认为你想要的东西.(你能把它翻译成你喜欢的一种语言吗?)你可以用你的数据库副本来试试它.(不要尝试使用您想保留的数据库的唯一副本!)
要在您的查询中将"tblBar"替换为"tblFoo",您可以从VBE立即窗口(来自Access,Ctrl+ g将使您到达)运行它,如下所示:
call swapTblNamesInQueryDefs("tblFoo", "tblBar")
Run Code Online (Sandbox Code Playgroud)
要实际保存更改的查询定义,请像这样调用它:
call swapTblNamesInQueryDefs("tblFoo", "tblBar", "savechanges")
Run Code Online (Sandbox Code Playgroud)
代码:
Public Sub swapTblNamesInQueryDefs(ByVal pstrFind As String, _
ByVal pstrReplace As String, _
Optional ByVal pstrMode As String = "DisplayOnly")
Dim qd As QueryDef
Dim re As Object
Dim strSql As String
Set re = CreateObject("vbscript.regexp")
re.Global = True
re.IgnoreCase = True
re.Pattern = "\b" & pstrFind & "\b"
For Each qd In CurrentDb.QueryDefs
If Left$(qd.Name, 1) <> "~" Then
Debug.Print qd.Name
Debug.Print "Before: " & qd.SQL
strSql = re.Replace(qd.SQL, pstrReplace)
Debug.Print "After: " & strSql
'only save the modified SQL statement if called
'with SaveChanges parameter
'If pstrMode = "SaveChanges" Then
If StrComp(pstrMode, "SaveChanges", vbTextCompare) = 0 Then
qd.SQL = strSql
End If
Debug.Print String(20, "-")
End If
Next qd
Set re = Nothing
Set qd = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:更改评估pstrMode以保证不区分大小写的比较(如果模块包含"选项比较二进制").
| 归档时间: |
|
| 查看次数: |
2415 次 |
| 最近记录: |