1

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

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

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

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

在 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"

我也试过这个:如何以编程方式将链接表复制到 Ms Access 中的本地表?

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

我正在CopySchemaAndData_ADOX使用以下内容调用该函数:

Call CopySchemaAndData_ADOX(TBL.MASTER_TABLE, LOCAL_MASTER_TABLE)

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

谢谢!

4

1 回答 1

4

在 Access 会话中使用“制作表”查询。

SELECT *
INTO LOCAL_MASTER_TABLE
FROM MASTER_TABLE;

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

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

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

但是,您确实有DoCmd.TransferDatabase工作,只是它没有拉入索引。因此,我建议您执行CREATE INDEXTransferDatabase语句,然后执行后续操作以获取您需要的内容。

于 2013-07-16T14:11:55.857 回答