受欢迎的博客标签

EXCEL VBA访问database access外部数据源查、改、增、删

Published

EXCEL VBA访问access外部数据源查、改、增、删

 

系统环境

windows 2016

office 2010

 

确定access数据库扩展名

2007版本以前的access文件扩展民是mdb

2007版本以后的access文件扩展名是accdb

An Access 2016 database has a limit of 255 concurrent users

source:https://database.guide/microsoft-access-vs-sql-server/

database access数据库访问原理及流程

 

1.第三方应用程序(excel vba ,c#)<--> 数据库驱动程序(windows 操作系统级别,运行应用程序的客户PC机,如windows10)<-- > 数据库access (服务器,不一定要求本机)

2.客户机可以选择的数据库驱动有很多种,由在客户机pc安装

accessdatabaseengine_X64.exe

accessdatabaseengine.exe

来提供多种数据驱动程序

3.在excel vba中,需通过引用的方式引入一种驱动,在操作使用数据库

 

 

 

vba访问access数据的驱动程序种类

OLE DB providers
Microsoft ACE OLEDB 12.0    AccessDatabaseEngine .exe(操作系统级)    Microsoft ActiveX Data Objects 6.1 Library(excel vba 引入)
Microsoft Jet OLE DB 4.0

ODBC drivers (用于ODBC 数据源)
Microsoft Access accdb ODBC Driver
Microsoft Access ODBC Driver

Wrappers and others
.NET Framework Data Provider for OLE DB
.NET Framework Data Provider for ODBC

sourece:https://www.connectionstrings.com/access/



 

vba访问access数据的驱动程序种类1 -OLE DB providers


ADO,OLE, ODBC

1 利用ODBC方式连接Access数据库

2 通过OLEDB方式连接Access数据库

3 通过DAO方式连接Access数据库

ODBC、OLEDB、ADO、ADO.NET之间的区别

ADO是建立在ODBC和OLEDB之上的又一次封装。而且ADO本身则是与数据源无关

(1)应用程序——ODBC——数据库,

(2)应用程序——OLEDB——ODBC——数据库,

(3)应用程序——ADO——OLEDB——ODBC——数据库。

ADO(ActiveX Data Object)ActiveX数据对象。基于OLE-DB建立连接的局部和远程数据库访问技术。同OLE-DB一样要“年轻”些。

使用中,我们一般用OLE-DB和ADO替代DAO和RDO。

https://zhuanlan.zhihu.com/p/641006775

 

vba访问access数据的驱动程序种类2 - ODBC drivers (用于ODBC 数据源)


1,Drive do Microsoft Access (.mdb)为ODBC驱动的数据源, ODBC的驱动兼容性好调用方便,但是速度稍慢;
2,Driver Microsoft Access(.mdb) 是微软优化驱动的数据源,速度快兼容性一般;

在使用中主要看你如何调用(.mdb)数据源, 如果是微软本身的SQL或者ACCESS 调用,建议你用后者;如果地三方调用,建议你用前者。

选择数据源时,有两种选择:“Driver do Microsoft Access(*.mdb)”或driver microsoft access(*mdb)

前者所选是的odbc驱动程序,后者则是微软提供的数据接口

本质上无任何区别,不过,微软的驱动是专门进行优化后的。我们一般选后者居多。效率更高一些。ODBC则是万能的,自然比不过专用的。

 

 如何添加access数据源驱动

https://blog.csdn.net/bcbobo21cn/article/details/109230973

 

 

在操作系统中需安装访问access的相关驱动程序

accessdatabaseengine_X64.exe

accessdatabaseengine.exe

此下载将安装一系列组件,帮助在现有的 Microsoft Office 文件(例如 Microsoft Office Access(*.mdb 和 *.accdb)文件和 Microsoft Office Excel(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 Microsoft SQL Server)之间传输数据。还支持与现有文本文件建立连接。此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。

source:https://www.microsoft.com/zh-cn/download/details.aspx?id=54920

 

 

 

远程连接Access数据库

Access属于单机型数据库,是一种桌面数据库。如果把他当网络多用户数据库,那也已经是超能力发挥了。

首先将远程服务器上的access数据库所在mdb文件所在文件夹设为共享。

3.设置Access连接字符串:
如果你用C#编程,可以这样写:

"Provider = Microsoft.Jet.OLEDB.4.0; Data Source =//远程服务器IP地址/共享文件夹名/数据库名.mdb;"

只要写上替换成远程服务器的IP地址、共享文件夹名(不要带盘符)、数据库名就可以了。

原文链接:https://blog.csdn.net/lllljz/article/details/121760683

 

 

 

 

测试情况

1.当用access图形化工具打开数据库时,excel vba 不能同时操作数据库,说明access图形化工具打开数据库是独占方式。

 

 

 

useful links

https://blog.csdn.net/qq_41777527/article/details/80810548

ODBC、OLEDB、ADO、ADO.NET之间的区别

ADO是建立在ODBC和OLEDB之上的又一次封装。而且ADO本身则是与数据源无关

(1)应用程序——ODBC——数据库,

(2)应用程序——OLEDB——ODBC——数据库,

(3)应用程序——ADO——OLEDB——ODBC——数据库。

https://blog.csdn.net/qq_27825451/article/details/86515141

OLE DB 驱动连接字符串说明

https://support.microsoft.com/zh-cn/office/%E5%B0%86-access-%E8%BF%9E%E6%8E%A5%E5%88%B0-sql-server-050d88f3-b2d6-4e76-b6f9-f3c556f139ea