c# - 如何使用 VBA(或 C#)将 MS Access 2007 中的链接表复制到本地表?

标签 c# vba ms-access

我有一个 Access 2007 数据库 c:\myDb.accdb,其中有一个名为 MASTER_TABLE 的表,该表链接到名为 TBL.MASTER_TABLE< 的表 在名为 PRODUCTION 的 DB2 数据库中。

当我打开 MASTER_TABLE 时,系统会提示我输入 PRODUCTION 数据库的登录凭据。

我用 C# 编写了一个使用 MASTER_TABLE 表的应用程序,但它当然会提示用户登录。为了避免这种情况,我需要将链接表复制到 myDb.accdb 中名为 LOCAL_MASTER_TABLE 的现有本地表。

此副本需要自动执行,因此需要以编程方式传递用户名/密码,而不是发出提示。

在 Access 中,我尝试了以下方法来创建本地副本,但如果某个字段已编入索引,则它不会捕获:

DoCmd.TransferDatabase acImport, "ODBC Database", "ODBC; DSN=PRODUCTION; UID=username; PWD=password; LANGUAGE=us_english; Database=PRODUCTION", acTable, "TBL.MASTER_TABLE", "LOCAL_MASTER_TABLE"

我也试过这个:How to copy a linked table to a local table in Ms Access programmatically?

但我得到一个错误 3001: Arguments are the wrong type, are out of acceptable range, or are in conflict with another

我正在使用以下代码调用 CopySchemaAndData_ADOX 函数:

调用 CopySchemaAndData_ADOX(TBL.MASTER_TABLE, LOCAL_MASTER_TABLE)

无论如何,任何人都可以想出一种在 VBA 或可能在 C# 中执行此操作的方法吗?或者为什么我在尝试使用的代码中遇到错误?

谢谢!

最佳答案

在 Access session 中使用“生成表”查询。

SELECT *
INTO LOCAL_MASTER_TABLE
FROM MASTER_TABLE;

您可能需要在执行该查询时提供您的凭据。

由于 MASTER_TABLE 是一个工作链接表,LOCAL_MASTER_TABLE 将使用与 Access 兼容的字段类型创建。

事实证明该建议并不合适,因为您希望自动执行导入并避免每次都向用户询问 DB2 凭据。

但是您确实有 DoCmd.TransferDatabase 工作,只是它不引入索引。所以我建议您执行 TransferDatabase 然后执行 CREATE INDEX 来跟进声明得到你需要的东西。

关于c# - 如何使用 VBA(或 C#)将 MS Access 2007 中的链接表复制到本地表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678767/

相关文章:

excel - 使用 VBA 在 Access 中创建多个链接表

sql - 为什么 ADO 记录集返回的记录多于基础 Access 查询

C# Treeview 检查节点是否存在

c# - 如何为 XDocument 设置默认的 XML 命名空间

excel - Excel散点图背景颜色可以根据数据值自定义吗?

vba - Excel VBA 函数在某些地方有效,但在其他地方无效

ms-access - 是否可以将二进制变量显示为数据 TableView 表单中的复选框?

c# - 一般读取格式正确的二进制文件

c# - 什么时候使用大括号,什么时候不用?

ms-access - Access 2000 Report -- 交替行颜色