设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 12859|回复: 56

[Access本身] 使用ADP进行mdb数据库开发的实现方案

[复制链接]

点击这里给我发消息

发表于 2013-7-11 10:31:21 | 显示全部楼层 |阅读模式
使用ADP进行mdb数据库开发的实现方案

优点:
1. 不依赖链接表
2. 纯粹使用ADO
3. 可轻松将mdb数据库应用升迁到SQLServer数据库应用
4. 可使用记录集作为报表的数据来源
5. 应用程序中无数据,数据安全容易得到保障
缺点:
1. 编程量相对较大
2. 开发不直观

实现原理:
1. ADO数据库连接的提供者一定是 “Microsoft.Access.OLEDB.10.0”,这样,记录集才能绑定到窗体和报表
2. ADO数据库连接的数据提供者是 “Microsoft.Jet.OLEDB.4.0” 或者 “Microsoft.ACE.OLEDB.12.0” 或者 “Microsoft.ACE.OLEDB.14.0”,即 mdb 数据库的提供者
3. 新建 ADP 时,取消数据库连接,即保证 ADP 处于断开状态, ADP 中无连接字符串。

对ADO进行了一次封装,作为全局的连接对象,放在 modADO 模块中
  1. Option Compare Database
  2. Option Explicit
  3. ' 作者:朱亦文(zhuyiwen)
  4. ' 时间:2013-07-11

  5. Public Const DBFileName = "Data.mdb"
  6. Public Const DBProvider = "Microsoft.Access.OLEDB.10.0"
  7. Public Const DBDataProvider = "Microsoft.Jet.OLEDB.4.0"
  8. Public Const DBPersistSecurityInfo = "False"
  9. Public Const DBCursorLocation = adUseServer

  10. Private m_Conn As ADODB.Connection
  11. Private m_DBErrorNum As Integer
  12. Private m_DBErrorMessage As String

  13. Public Property Get DBErrorNumber() As Integer
  14.     DBErrorNumber = m_DBErrorNum
  15. End Property

  16. Public Property Get DBErrorMessage() As String
  17.     DBErrorMessage = m_DBErrorMessage
  18. End Property

  19. Public Property Get DBConnectionString() As String
  20.     DBConnectionString = _
  21.         "Provider=" & DBProvider & ";" & _
  22.         "Persist Security Info=" & DBPersistSecurityInfo & ";" & _
  23.         "Data Source=" & CurrentProject.Path & "" & DBFileName & ";" & _
  24.         "Data Provider=" & DBDataProvider
  25. End Property

  26. Public Property Get DBConnection() As ADODB.Connection
  27. On Error GoTo err_GetDBConnection
  28.     If m_Conn Is Nothing Then
  29.         Set m_Conn = New ADODB.Connection
  30.         m_Conn.CursorLocation = DBCursorLocation
  31.     End If
  32.    
  33.     If m_Conn.State <> adStateOpen Then
  34.         m_Conn.Open DBConnectionString
  35.     End If
  36.    
  37.     Set DBConnection = m_Conn
  38.     Exit Property
  39.    
  40. err_GetDBConnection:
  41.     m_DBErrorNum = Err.Number
  42.     m_DBErrorMessage = Err.Description
  43.     Err.Clear
  44. End Property

  45. Public Function DBClearError() As Boolean
  46.     m_DBErrorNum = 0
  47.     m_DBErrorMessage = ""
  48.     DBClearError = True
  49. End Function

  50. Public Function DBCloseConnection() As Boolean
  51. On Error GoTo err_DBCloseConnection
  52.     If m_Conn Is Nothing Then
  53.         DBCloseConnection = True
  54.     End If
  55.    
  56.     If m_Conn.State <> adStateClosed Then
  57.         m_Conn.Close
  58.     End If
  59.    
  60.     Set m_Conn = Nothing
  61.     DBCloseConnection = True
  62.    
  63.     Exit Function
  64.    
  65. err_DBCloseConnection:
  66.     m_DBErrorNum = Err.Number
  67.     m_DBErrorMessage = Err.Description
  68.     Err.Clear
  69. End Function
复制代码
这样的好处,DBConnection 就相当于CurrentProject.Connection,便于程序移植。




游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

发表于 2013-7-11 10:34:18 | 显示全部楼层
顶 一个
回复

使用道具 举报

点击这里给我发消息

发表于 2013-7-11 10:35:43 | 显示全部楼层
先下手为强
发表于 2013-7-11 10:37:32 | 显示全部楼层
学习!
回复

使用道具 举报

点击这里给我发消息

发表于 2013-7-11 10:38:25 | 显示全部楼层
老朱,能实现报表了?

点击这里给我发消息

 楼主| 发表于 2013-7-11 10:46:58 | 显示全部楼层
示例就是报表

点击这里给我发消息

发表于 2013-7-11 11:39:14 | 显示全部楼层
good!
回复

使用道具 举报

发表于 2013-7-11 13:02:11 | 显示全部楼层
先下手为强
发表于 2013-7-11 21:12:52 | 显示全部楼层
非常厉害              
发表于 2013-7-11 21:14:59 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 22:45 , Processed in 0.097791 second(s), 40 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表