在 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 更快