我有一个带有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"
是否可以一步而不是两步?
答案 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的答案,因为它在各方面都更简单,更有效。