从ODBC导出表到另一个访问文件

时间:2017-07-31 20:46:07

标签: vba ms-access access-vba

我有一个带有ODBC连接的SQL Server数据库。我希望能够将sqlserver中的表导入访问数据库。

我已经能够将表导入访问权限,然后将其导出到另一个访问文件中。

像这样:

DoCmd.TransferDatabase acImport, "ODBC Database", _
  "ODBC connectionstring" _
  , acTable, "SOURCE1", "DEST1", False, True

DoCmd.TransferDatabase acExport, "Microsoft Access", _
  "P:\Main-Copy.accdb" _
  , acTable, "DEST1", "DEST2"

是否可以一步而不是两步?

3 个答案:

答案 0 :(得分:2)

考虑一个纯SQL解决方案,您可以在同一个操作查询中连接到SQL Server数据库和远程Access数据库。下面的示例假设MSSQL和MS Office安装在相同的位版本(32/64位)上,以通过DAO进行适当连接。

附加查询 (假设两个表之间的所有字段都对齐,否则请选择特定列)

INSERT INTO [P:\Main-Copy.accdb].DEST2
SELECT *
FROM [ODBC;DRIVER={SQL Server};Server=INSTANCE\myServer;database=dbName;UID=XX;PWD=***].SOURCE1;

制作表格查询 (假设不存在先前的表格,否则需要DROP TABLE ...

SELECT *
INTO [P:\Main-Copy.accdb].DEST2
FROM [ODBC;DRIVER={SQL Server};Server=INSTANCE\myServer;database=dbName;UID=XX;PWD=***].SOURCE1;

答案 1 :(得分:0)

罗伯特,

您想复制数据吗?如果没有,只是将表附加到第二个数据库(在您的示例中)一个选项?在这种情况下,数据永远不会移动到Access DB中,而是在请求时获取(即双击数据库容器中的表)。如果表附加在第二个数据库中,那么您可以运行“生成表”查询以将数据置于本地,这将是单步执行。

您也可以将数据从SQL Server推送到数据库,假设SQL Server可以访问正确的数据库路径。

答案 2 :(得分:0)

我在这方面进行了一些讨论

在第一个数据库中使用它。它调用外部数据库中的sub

JavaScript

和外部数据库中的此方法。实际转移是哪个

Set appAccess = CreateObject("Access.Application")     
appAccess.OpenCurrentDatabase "DATABASE PATH", False     
appAccess.Run "ImportTableToExternalDB", "Clients"     
Set appAccess = Nothing

感谢大家的帮助

编辑:我决定采用Parfait的答案,因为它在各方面都更简单,更有效。