繁体   English   中英

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

[英]How to copy a linked table in MS Access 2007 to local table with VBA (or C#)?

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

当我打开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"

我也试过这个: 如何以编程方式将链接表复制到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#中这样做的方法吗? 或者为什么我在我试图使用的代码中收到错误?

谢谢!

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

SELECT *
INTO LOCAL_MASTER_TABLE
FROM MASTER_TABLE;

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

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

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

但是,您确实有DoCmd.TransferDatabase工作,但它不会DoCmd.TransferDatabase索引。 因此,我建议您执行TransferDatabase ,然后执行CREATE INDEX语句以获得所需内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM