在 Delphi 中的不同数据库中的 MS Access 连接表

Posted

技术标签:

【中文标题】在 Delphi 中的不同数据库中的 MS Access 连接表【英文标题】:Ms Access Join tables in separate databases in delphi 【发布时间】:2018-05-15 14:36:58 【问题描述】:

我使用 ADOConnection 和 AdoQuery 在 MS Access (mdb) 数据库上执行查询。我想加入不同数据库(mdb 文件)中的两个表。我在网上搜索并找到了这个解决方案:(示例)

select [ZRDocs].* from [ZRDocs] left join [;database=d:\2222.mdb].[ZRDocItems] AS abc on [ZRDocs].[ID] = [abc].[DocID];

当我在 MSAccess 中查询它时,它工作正常,但是当我使用 ADOQuery 执行它时,它会引发异常:

Parameter object is improperly defined. Inconsistent or incomplete information was provided.

我使用 Microsoft.Jet.OLEDB.4.0 提供程序。

我也使用了这样的完整连接字符串:

select [ZRDocs].* from [ZRDocs] 
left join [Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=d:
\2222.mdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;].[ZRDocItems] AS abc 
on [ZRDocs].[ID] = [abc].[DocID];

我搜索了谷歌和许多网页,但一无所获。 那么,如何使用 delphi (ADO) 连接来自不同 mdb (access) 数据库的两个表?

【问题讨论】:

包含(链接)外部表(包括数据库 A 中的数据库 B 的表)怎么样?菜单插入 -> 表格 -> 链接表(我想,我使用不同的语言)。无论如何检查这个:support.office.com/en-us/article/… 我的应用程序是可移植的,但 MS Access 内部的链接不是相对的。所以在其他电脑上安装我的应用会出现链接问题。 【参考方案1】:

试试这个代码:

select [ZRDocs].* 
from [ZRDocs] left join ([ZRDocItems] IN "D:\2222.mdb") AS abc 
     on [ZRDocs].[ID] = [abc].[DocID];

【讨论】:

在 MS Access 中运行:连接操作中的语法错误。然后它在查询中显示“IN”。 在访问中,我认为所有连接都需要放在括号中 即使有括号也不成功

以上是关于在 Delphi 中的不同数据库中的 MS Access 连接表的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MS-Access 中的 Teradata 查询比 SQL Server 更快

了解 Julia 中的多线程行为

MS Access 应用程序需要登录用户/密码

使用 Delphi 将文本文件加载到 MS ACCESS TABLE

将文本框中的值插入 2 个不同的表 ms-access

将多用户环境中的表中的 ms 访问数据附加到 sql server 表中