Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

将业务规则封装到类模块中

时 间:2013-12-13 11:51:01
作 者:Aaron   ID:20267  城市:闵行
摘 要:Access用类模块封装业务规则
正 文:

  表的很多字段都设置了规则,如必填、长度限制、有一定的格式。我们通常的做法是在窗体中对控件中的输入内容进行验证,然后再将数据保存到表中。实际应用中,业务规则是会变化的,当你的表出现在多个窗体中时,你不得不修改每一个窗体的规则。面向对象的思路是将规则封装到类模块中。我们的Access也可以做到!当你用了这个方法后,你会爱上它的:)

  这里要用到类的事件,用来为调用它的模块返回信息。

  把业务规则转移到属性的写入过程中,如果不符合规则,那么就会触发不合规则的事件,并将错误的信息传递出来。输入数据后,可以用检验数据的方法来获取输入的数据是否正确。你可以输一个数据检验一次,也可以全部输入数据后,最后再检验。


  例子只是用来说明思路,不是可直接应用于实际业务的代码。

  类模块代码:


Option Compare Database
Option Explicit

Private strSupplierName As String
Private mblnCorrectData As Boolean
Private mstrWrongMessage As String
Public Event InvalidData(strMessage As String)

'//供应商的名称属性
Public Property Get SupplierName() As Variant
    SupplierName = strSupplierName
End Property

Public Property Let SupplierName(ByVal vNewValue As Variant)
    Dim strMessage As String

    '//规则验证在这里,如果以后修改规则,只要修改这里就可以了

    '//不用每个窗体中去修改了
    If IsNull(vNewValue) Then
        mstrWrongMessage = mstrWrongMessage & "Empty Parameter!" & vbCrLf
        mblnCorrectData = mblnCorrectData And False
        Exit Property
    End If
    mblnCorrectData = mblnCorrectData And True
    strSupplierName = vNewValue
End Property

'//判断输入的数据正确与否的方法

Public Function CorrectData() As Boolean
    CorrectData = mblnCorrectData
    If Not CorrectData Then
        RaiseEvent InvalidData(mstrWrongMessage)
    End If
End Function

Private Sub Class_Initialize()
    mblnCorrectData = True
End Sub


相关窗体的代码:


Option Compare Database
Option Explicit

Private WithEvents mclsSupplier As Supplier '//这句是必需的,不然无法调用类的事件
Private blnWrongData As Boolean

Private Sub Command4_Click()
    mclsSupplier.SupplierName = Me.Text2
    If Not mclsSupplier.CorrectData Then Exit Sub
    MsgBox mclsSupplier.SupplierName
End Sub

Private Sub Form_Load()
    Set mclsSupplier = New Supplier
End Sub

'//类的事件,用来显示传递出来的错误信息
Private Sub mclsSupplier_InvalidData(strMessage As String)
    MsgBox strMessage
    blnWrongData = False
End Sub
 



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助