C# 以编程方式重命名Access查询中的表

C# 以编程方式重命名Access查询中的表,c#,vb.net,ms-access,C#,Vb.net,Ms Access,我有一个access 2003数据库文件,其中包含数百个查询。我想根据条件重命名查询中引用的所有表 If tableNameInQuery = "tableName" Then tableNameInQuery = "newTableName" End If PS如果您能在C#或VB.NET中找到一个示例,我们将不胜感激您可以查看。这个工具不是免费的,但我认为它相对便宜,可以为您提供非常可靠的表重命名。如果你的时间值得一试 如果使用Speed Ferret或其他类似工具,需要记住的

我有一个access 2003数据库文件,其中包含数百个查询。我想根据条件重命名查询中引用的所有表

If tableNameInQuery = "tableName" Then

    tableNameInQuery = "newTableName"

End If
PS如果您能在C#或VB.NET中找到一个示例,我们将不胜感激

您可以查看。这个工具不是免费的,但我认为它相对便宜,可以为您提供非常可靠的表重命名。如果你的时间值得一试

如果使用Speed Ferret或其他类似工具,需要记住的一件事是,重命名表的顺序非常重要。一定要考虑一下

赛斯·斯皮尔曼

你可以去看看。这个工具不是免费的,但我认为它相对便宜,可以为您提供非常可靠的表重命名。如果你的时间值得一试

如果使用Speed Ferret或其他类似工具,需要记住的一件事是,重命名表的顺序非常重要。一定要考虑一下


赛斯·斯皮尔曼(Seth Spearman)

我有一个又快又脏的VBA潜水艇,它能满足我的要求。(你能把它翻译成你喜欢的语言吗?)。(不要仅使用要保留的数据库副本进行尝试!)

要将查询中的“tblBar”替换为“tblFoo”,可以从VBE即时窗口(从Access,Ctrl+g将使您到达该窗口)运行它,如下所示:

调用swaptblnamesinquerydfs(“tblFoo”、“tblBar”)
要实际保存已更改的查询定义,请这样调用:

调用swaptblnamesinquerydfs(“tblFoo”、“tblBar”、“savechanges”)
守则:

公共子swaptblnamesinquerydfs(ByVal pstrFind As String_
ByVal pstrReplace作为字符串_
可选的ByVal pstrMode As String=“DisplayOnly”)
调暗qd为QueryDef
作为对象的模糊re
作为字符串的Dim strSql
Set re=CreateObject(“vbscript.regexp”)
re.Global=True
re.IgnoreCase=True
re.Pattern=“\b”&pstrFind&“\b”
对于CurrentDb.QueryDefs中的每个qd
如果左$(qd.Name,1)“~”则
Debug.Print qd.Name
Debug.Print“Before:”&qd.SQL
strSql=re.Replace(qd.SQL,pstrReplace)
Debug.Print“After:”&strSql
'仅在调用时保存修改后的SQL语句
'使用SaveChanges参数
'如果pstrMode=“SaveChanges”,则
如果StrComp(pstrMode,“SaveChanges”,vbTextCompare)=0,则
qd.SQL=strSql
如果结束
调试.打印字符串(20,“-”)
如果结束
下一个qd
设置re=无
设置qd=无
端接头

编辑:更改了对pstrMode的求值,以保证不区分大小写的比较(如果模块包含“Option Compare Binary”)。

我有一个快速脏的VBA sub,它可以满足您的要求。(你能把它翻译成你喜欢的语言吗?)。(不要仅使用要保留的数据库副本进行尝试!)

要将查询中的“tblBar”替换为“tblFoo”,可以从VBE即时窗口(从Access,Ctrl+g将使您到达该窗口)运行它,如下所示:

调用swaptblnamesinquerydfs(“tblFoo”、“tblBar”)
要实际保存已更改的查询定义,请这样调用:

调用swaptblnamesinquerydfs(“tblFoo”、“tblBar”、“savechanges”)
守则:

公共子swaptblnamesinquerydfs(ByVal pstrFind As String_
ByVal pstrReplace作为字符串_
可选的ByVal pstrMode As String=“DisplayOnly”)
调暗qd为QueryDef
作为对象的模糊re
作为字符串的Dim strSql
Set re=CreateObject(“vbscript.regexp”)
re.Global=True
re.IgnoreCase=True
re.Pattern=“\b”&pstrFind&“\b”
对于CurrentDb.QueryDefs中的每个qd
如果左$(qd.Name,1)“~”则
Debug.Print qd.Name
Debug.Print“Before:”&qd.SQL
strSql=re.Replace(qd.SQL,pstrReplace)
Debug.Print“After:”&strSql
'仅在调用时保存修改后的SQL语句
'使用SaveChanges参数
'如果pstrMode=“SaveChanges”,则
如果StrComp(pstrMode,“SaveChanges”,vbTextCompare)=0,则
qd.SQL=strSql
如果结束
调试.打印字符串(20,“-”)
如果结束
下一个qd
设置re=无
设置qd=无
端接头

编辑:更改了对
pstrMode的求值,以保证不区分大小写的比较(如果模块包含“Option Compare Binary”)。

我想我没有说清楚,我想重命名查询中表的引用。不是桌子本身吗?我们现在将检查链接。换句话说,您需要更改查询中引用的表。不是表名。你仍然可以用速度雪貂来做。是的,这是正确的。最新版本的Speed Ferret最多只支持access 2002。可惜Speed Ferret自2002年以来一直没有更新,因为它是一个非常棒的工具。Rick Fisher的Find&Replace很好,但它没有Speed Ferret那么精巧和友好。我想我没有说清楚,我想重命名查询中表的引用。不是桌子本身吗?我们现在将检查链接。换句话说,您需要更改查询中引用的表。不是表名。你仍然可以用速度雪貂来做。是的,这是正确的。最新版本的Speed Ferret最多只支持access 2002。可惜Speed Ferret自2002年以来一直没有更新,因为它是一个非常棒的工具。Rick Fisher的Find&Replace功能很好,但它并没有Speed Ferret那么精巧和友好。代码不错!我不能说我需要它(因为我有3个搜索和替换加载项可供选择),但我可以看到它在某些方面对我很有用,而且对OP肯定很有帮助。谢谢Hans,VBA也是我的一个选择。我将在第二天左右试用该代码,并向您报告。大卫,你用什么搜索和替换外接程序?很好的代码!我不能说我需要它(因为我需要它)