我试图从另一个mdb文件访问一个表。这不是链接表可以解决的问题,请不要提出建议。
编辑:这是归档工具的一部分,该工具从特定日期范围创建数据库后端的备份文件,然后删除数据。在删除数据之前,建议我检查并确保将所有数据复制到创建的备份中。 (IE,如果最坏的情况发生并且共享文件夹丢失连接或者其他东西,并且没有复制过的所有数据,但访问数据库仍然删除了该数据)
如果有一种方法可以在访问中创建一个链接表,然后删除最后一个WITH VBA的链接,而不是手动,也许这会起作用(?)但我希望这样做,所以希望它不会导致数据库膨胀的程度与过去一样多。
在删除当前数据库中的数据之前,我试图检查是否所有数据都复制到备份文件中。
Dim rs as ADODB.Recordset
rs.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=Backup.mdb;DefaultDir=C:\Fish;"
我在语法方面遇到了麻烦。我知道它适用于currentdb,但是如果该表位于不同的mdb文件中该怎么办?我尝试使用DefaultDir = C:\ Fish和DefaultDir = C:\ Fish \我有什么遗漏或者这比我应该尝试的要复杂得多吗?
其余部分我认为我理解如何让字段值进行比较,但是尝试连接到不同mdb文件中的表会给我带来麻烦。
答案 0 :(得分:2)
首先:就像戈德在评论中已经说过的那样,我也看不出使用链接表的原因。
但最后,如果您创建链接表并在其上打开本地Recordset
,或者直接在其他Access数据库中的表上打开Recordset
,则无关紧要
因此,我将展示两种方式的解决方案:
您的连接字符串适用于我,但其余代码中存在错误:
ADODB.Recordset
没有属性ConnectionString
...而是名为ActiveConnection
。ADODB.Recordset
以下代码适用于我:
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.ActiveConnection = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=Backup.mdb;DefaultDir=C:\Fish;"
rs.Open "select * from foo"
创建它:
DoCmd.TransferDatabase acLink, "ODBC", ";DATABASE=C:\Fish\Backup.mdb", acTable, "TableName", "TableNameLocal", False
注意:TableName
是源表的原始名称,TableNameLocal
是链接表在本地数据库中的名称。 (当然,如果你愿意,可以使用相同的名称)
删除它:
DoCmd.DeleteObject acTable, "TableNameLocal"