遵循此问题线程,能够成功编码"使用C#"更改访问2007中链接表的源表的建议更改。但是,看起来该客户的查询使用在查询级别定义的关系进行编码,并且删除/追加过程会破坏关系。任何人都知道如何保持关系?为什么tabledef.Sourcetable无法更新?
代码片段:
选项比较数据库
子测试() Dim tdf As TableDef Dim db As Database
Set db = CurrentDb
Open "out.txt" For Output As #1
For Each tdf In db.TableDefs
If tdf.Connect <> vbNullString Then
Print #1, tdf.Name; " -- "; tdf.SourceTableName; " -- "; tdf.Connect
Select Case tdf.SourceTableName
Case "CTITLU.txt"
'tdf.SourceTableName = "dbo.GRANTSADJS"
'tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=DCFTDBCL01-L01\EDS_DEV;DATABASE=GRANTSDB2;UID=grants_reader;PWD=xxxxx;TABLE=DBO.GRANTSTABL"
tdf.RefreshLink
End Select
End If
Next
End Sub
当我在没有注释tdf.connect语法的情况下运行它时,在tdf.refreshlink调用时出现错误&#34;运行时错误&#39; 3011&#39;:Microsoft Access数据库引擎无法找到对象&#39; objectname&#39; ...&#34;我试图将文本链接表更新为等效的基于SQL Server的链接表。对象名中包含空格和连字符,但它正确显示错误消息中的名称。无论出于何种原因,以前的开发人员都将表的转储发送到文件系统,而不是直接链接表。这是一个交易活动很少的小型数据库,因此几乎没有机会导致任何问题。当取消注释tdf.SourceTableName时,抛出&#34;运行时错误&#39; 3268&#39;:一旦对象是集合的一部分,就不能设置此属性。&#34;
我按照其他线程指出了这个问题(如上所述),并成功使用tdf.delete / tdf.append调用来复制tabledef,其中包含新的源表名和连接信息。但是,依赖查询的关系定义已消失,查询无法使用,无需重新定义所有链接。
答案 0 :(得分:0)