首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Microsoft连接到多个Microsoft

Microsoft连接到多个Microsoft
EN

Stack Overflow用户
提问于 2018-09-30 04:46:17
回答 1查看 759关注 0票数 0

我目前正在尝试连接到两个单独的.mdb文件并执行一个INNER JOIN

所以,我有2 .mdb (Sample1.mdb & Sample2.mdb)。两者都有密码保护。

当我试图连接时,它显示了一个错误,说明了"it's already opened exclusively by another user, or you need permission..."

是否发生错误是因为我没有在此语句中插入password属性?如果是,如何在此语句中插入password属性?

[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Application.ActiveWorkbook.Path & "\Sample1.mdb]

下面是我的全部示例代码:

代码语言:javascript
运行
复制
Dim Conn As ADODB.Connection
Dim resultSet As ADODB.Recordset

Set Conn = New ADODB.Connection

sqlStatement = "SELECT * FROM [Excel 8.0;HDR=YES;IMEX=2;DATABASE=" &
Application.ActiveWorkbook.Path & "\Sample1.mdb].[SampleData$] a INNER JOIN 
[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Application.ActiveWorkbook.Path &
"\Sample2.mdb].[SampleInfo$] b ON a.Index = b.Index WHERE a.idCode = 2"

     With Conn
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = Application.ActiveWorkbook.Path + "\Sample2.mdb"
            .Properties("Jet OLEDB:Database Password") = "password"
            .Open

             Set resultSet = .Execute(sqlStatement)
         End With
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-30 05:52:21

这件事有些奇怪的地方。

  1. [Excel 8.0;HDR=YES;IMEX=2;是连接到Excel文件的连接字符串,而不是MDB数据库。由于要将MDB数据库作为参数传递给它,因此必然会出现奇怪的错误。因为连接到Access是本机访问,所以只需要指定路径。
  2. 我将指定连接字符串中的所有连接参数,包括uid。
代码语言:javascript
运行
复制
Dim Conn As ADODB.Connection
Dim resultSet As ADODB.Recordset

Set Conn = New ADODB.Connection

sqlStatement = "SELECT * FROM [" &
Application.ActiveWorkbook.Path & "\Sample1.mdb].[SampleData$] a INNER JOIN [SampleInfo$] b ON a.Index = b.Index WHERE a.idCode = 2"

     With Conn
            .Provider = ""
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source="Application.ActiveWorkbook.Path + "\Sample2.mdb;Jet OLEDB:Database Password=""password"""
            .Open
             Set resultSet = .Execute(sqlStatement)
         End With

若要使用密码查询Access数据库,请在ISAM连接字符串中指定密码:

代码语言:javascript
运行
复制
"SELECT * FROM [MS Access;PWD=password;DATABASE=" &
Application.ActiveWorkbook.Path & "\Sample1.mdb].[SampleData$] a INNER JOIN 
[MS Access;PWD=password;DATABASE=" & Application.ActiveWorkbook.Path &
"\Sample2.mdb].[SampleInfo$] b ON a.Index = b.Index WHERE a.idCode = 2"

当然,您需要确保对两个MDB数据库使用正确的连接字符串:对于当前代码,Sample2是受保护的,但Sample1不是,Sample2是由加密(仅提示密码)保护的,而不是用户级别的安全性(提示密码和用户名)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52574716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档