将业务规则封装到类模块中
时 间: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群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(11)-人性化操...(04.15)
- 32位的Access软件转化为64...(04.12)
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)