EXCEL VBA访问access外部数据源查、改、增、删
Table of Contents
系统环境
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数据的驱动程序种类
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 驱动连接字符串说明