OrFlying VB6版产生的代码示例

鉴于VB6依然在使用,VB6的代码和工具我也将进行介绍和公布:

VB6:Class示例

Option Explicit


'属性声明
Private mEmployeeID As String
Private mEmployeeName As String
Private mGender As String
Private mDeptID As String
Private mPassword As String
Private mPositionID As String
Private mUserGroup As String
Private mCalendarUniqueID As Integer
Private mDefaultDeviceID As String
Private mEmployeeType As Integer
Private mLiteracy As String
Private mBirth As Date
Private mWorkCenterID As String
Private mEmployeeEmail As String
Private mEmployeeSmsID As String
Private mStrMsg As String '返回错误信息
Private mIsNew As Boolean '是否为新建对象,需要插入数据库
Private mDirty As Boolean '是否修改对象,需要更新到数据库
Private mClassStorage As Boolean '用于判断是否需要校验
Private mDeleteFlag As Boolean '是否为删除,需要更新到数据库

'属性过程
Public Property Let EmployeeID(ByVal vData As String)
mEmployeeID = vData
End Property

Public Property Get EmployeeID() as String
EmployeeID = mEmployeeID
End Property

Public Property Let EmployeeName(ByVal vData As String)
mEmployeeName = vData
End Property

Public Property Get EmployeeName() as String
EmployeeName = mEmployeeName
End Property

Public Property Let Gender(ByVal vData As String)
mGender = vData
End Property

Public Property Get Gender() as String
Gender = mGender
End Property

Public Property Let DeptID(ByVal vData As String)
mDeptID = vData
End Property

Public Property Get DeptID() as String
DeptID = mDeptID
End Property

Public Property Let Password(ByVal vData As String)
mPassword = vData
End Property

Public Property Get Password() as String
Password = mPassword
End Property

Public Property Let PositionID(ByVal vData As String)
mPositionID = vData
End Property

Public Property Get PositionID() as String
PositionID = mPositionID
End Property

Public Property Let UserGroup(ByVal vData As String)
mUserGroup = vData
End Property

Public Property Get UserGroup() as String
UserGroup = mUserGroup
End Property

Public Property Let CalendarUniqueID(ByVal vData As Integer)
mCalendarUniqueID = vData
End Property

Public Property Get CalendarUniqueID() as Integer
CalendarUniqueID = mCalendarUniqueID
End Property

Public Property Let DefaultDeviceID(ByVal vData As String)
mDefaultDeviceID = vData
End Property

Public Property Get DefaultDeviceID() as String
DefaultDeviceID = mDefaultDeviceID
End Property

Public Property Let EmployeeType(ByVal vData As Integer)
mEmployeeType = vData
End Property

Public Property Get EmployeeType() as Integer
EmployeeType = mEmployeeType
End Property

Public Property Let Literacy(ByVal vData As String)
mLiteracy = vData
End Property

Public Property Get Literacy() as String
Literacy = mLiteracy
End Property

Public Property Let Birth(ByVal vData As Date)
mBirth = vData
End Property

Public Property Get Birth() as Date
Birth = mBirth
End Property

Public Property Let WorkCenterID(ByVal vData As String)
mWorkCenterID = vData
End Property

Public Property Get WorkCenterID() as String
WorkCenterID = mWorkCenterID
End Property

Public Property Let EmployeeEmail(ByVal vData As String)
mEmployeeEmail = vData
End Property

Public Property Get EmployeeEmail() as String
EmployeeEmail = mEmployeeEmail
End Property

Public Property Let EmployeeSmsID(ByVal vData As String)
mEmployeeSmsID = vData
End Property

Public Property Get EmployeeSmsID() as String
EmployeeSmsID = mEmployeeSmsID
End Property

Public Property Let IsNew(ByVal vData As Boolean)
mIsNew = vData
End Property

Public Property Get IsNew() as Boolean
IsNew = mIsNew
End Property

Public Property Let Dirty(ByVal vData As Boolean)
mDirty = vData
End Property

Public Property Get Dirty() as Boolean
Dirty = mDirty
End Property

Public Property Let DeleteFlag(ByVal vData As Boolean)
mDeleteFlag = vData
End Property

Public Property Get DeleteFlag() as Boolean
DeleteFlag = mDeleteFlag
End Property

Public Property Let ClassStorage(ByVal vData As Boolean)
mClassStorage = vData
End Property

Public Property Get ClassStorage() as Boolean
ClassStorage = mClassStorage
End Property

VB6:Collection示例

Option Explicit

'集合的内部变量
Private mCol As New Collection

'存储错误信息的内部属性
Private mStrMsg As String

'表示该实例是否为变化
Private mIsChange As Boolean

'存储Fill Collection的SQL语句
Private mCreateSQL As String

'存储Fill Collection的SQL语句
Private mUpdateSQL As String

'获得集合的元素的数目
' Syntax: Debug.Print x.Count
Public Property Get Count() As Long
Count = mCol.Count
End Property

Public Property Get Item(vntIndexKey As Variant) As CEmployee
Attribute Item.VB_UserMemId = 0
mStrMsg = ""
Set Item = mCol(vntIndexKey)
End Property

Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Set NewEnum = mCol.[_NewEnum]
End Property

'往集合里面添加一个项目的时候
Public Function Add(Item As CEmployee, Optional Key As Variant) As Boolean
On Error GoTo ErrorHandler
Add = False
mStrMsg = ""

If IsMissing(Key) Then
mCol.Add Item
Else
mCol.Add Item, Key
End If
Add = True
Exit Function
ErrorHandler:
mStrMsg = "Add: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

Public Function Remove(vntIndexKey As Variant) As Boolean
On Error GoTo ErrorHandler
Remove = False
mStrMsg = ""
mCol.Remove vntIndexKey
Remove = True
Exit Function
ErrorHandler:
mStrMsg = "Remove: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

Public Function GetClsMsg() As String
On Error GoTo ErrorHandler
GetClsMsg = mStrMsg
Exit Function
ErrorHandler:
mStrMsg = "GetClsMsg: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

Public Function Clear() As Boolean
On Error GoTo ErrorHandler
Clear = False
mStrMsg = ""
'清空集合
Set mCol = Nothing
'重新创建集合
Set mCol = New Collection
Clear = True
Exit Function
ErrorHandler:
mStrMsg = "Clear: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

'取消删除标记
Public Function UnMarkForDelete(Optional ByVal Index As Variant) As Boolean
On Error GoTo ErrorHandler
UnMarkForDelete = False
mStrMsg = ""
Dim LowerLimit As Long
Dim UpperLimit As Long
Dim inx As Long
'Check Index
If Not IsMissing(Index) Then
If (Not IsNumeric(Index)) Or (Index < 1 Or Index > Me.Count) Then
mStrMsg = mStrMsg & "方法:MarkForDelete 索引Index超出边界 "
Exit Function
End If
'Toggle DeleteFlag
Me.Item(Index).DeleteFlag = False
Else
LowerLimit = 1
UpperLimit = Me.Count
For inx = LowerLimit To UpperLimit
Me.Item(inx).DeleteFlag = False
Next
End If
UnMarkForDelete = True
Exit Function
ErrorHandler:
mStrMsg = "UnMarkForDelete: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

'标记删除标志,可以针对一个Item,也可以是所有的Item
Public Function MarkForDelete(Optional ByVal Index As Variant) As Boolean
On Error GoTo ErrorHandler
MarkForDelete = False
mStrMsg = ""
Dim LowerLimit As Long
Dim UpperLimit As Long
Dim inx As Long
If Not IsMissing(Index) Then
'检查Index是否正确
If (Not IsNumeric(Index)) Or (Index < 1 Or Index > Me.Count) Then
mStrMsg = mStrMsg & "方法:MarkForDelete 索引Index超出边界 "
Exit Function
End If
'设定删除标记
Me.Item(Index).DeleteFlag = True
Else
LowerLimit = 1
UpperLimit = Me.Count
For inx = LowerLimit To UpperLimit
Me.Item(inx).DeleteFlag = True
Next
End If
MarkForDelete = True
MarkForDelete = True
Exit Function
ErrorHandler:
mStrMsg = "MarkForDelete: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

Public Property Let IsChange(ByVal vData As Boolean)
mIsChange = vData
End Property

Public Property Get IsChange() As Boolean
IsChange = mIsChange
End Property

Public Property Let CreateSQL(ByVal vData As String)
mCreateSQL = vData
End Property

Public Property Get CreateSQL() As String
CreateSQL = mCreateSQL
End Property

Public Property Let UpdateSQL(ByVal vData As String)
mUpdateSQL = vData
End Property

Public Property Get UpdateSQL() As String
UpdateSQL = mUpdateSQL
End Property

VB6:Engine示例

Option Explicit

'返回类内部消息的变量
Private mStrMsg As String

Private Date_Init As Date
Public Function GetClsMsg() As String
GetClsMsg = mStrMsg
End Function

Public Function GetEmployee(iStrEmployeeID As String, oClsEmployee As CEmployee, iIsCulAvail As Integer) As Boolean
On Error GoTo ErrorHandler
GetEmployee = False

iIsCulAvail = 1
Dim rstTmp As New ADODB.Recordset
Dim cnTmp As New CMMCn
Dim clsEmployee As New CEmployee
rstTmp.Open "Select * from Employee Where EmployeeID=" & iStrEmployeeID, cnTmp.Connect
If rstTmp.BOF Or rstTmp.EOF Then
Set oClsEmployee = New CEmployee
iIsCulAvail = 0
mStrMsg = "GetEmployee:找不到相关记录!"
GoTo RightExit
End If
rstTmp.MoveFirst
If Not TransEmployeeRTC(rstTmp, clsEmployee) Then
mStrMsg = "GetEmployee:" & mStrMsg
GoTo CleanExit
End If
Set oClsEmployee = clsEmployee
Set cnTmp = Nothing
Set rstTmp = Nothing
RightExit:
GetEmployee = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "GetEmployee: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function GetEmployeeS(oColEmployeeS As CEmployeeS, iStrCondition As String) As Boolean
On Error GoTo ErrorHandler
GetEmployeeS = False

Dim rstTmp As New ADODB.Recordset
Dim cnTmp As New CMMCn
Dim clsEmployeeS As New CEmployeeS
Dim clsEmployee As New CEmployee
If iStrCondition = "" Then iStrCondition = " 1=1 "
rstTmp.Open "Select * from Employee Where " & iStrCondition, cnTmp.Connect
If rstTmp.BOF Or rstTmp.EOF Then
Set oColEmployeeS = New CEmployeeS
mStrMsg = "GetEmployeeS:找不到相关记录!"
GoTo RightExit
End If
rstTmp.MoveFirst
Do
With clsEmployee
.EmployeeID = IIf(IsNull(rstTmp("EmployeeID")), "", rstTmp("EmployeeID"))
.EmployeeName = IIf(IsNull(rstTmp("EmployeeName")), "", rstTmp("EmployeeName"))
.Gender = IIf(IsNull(rstTmp("Gender")), "", rstTmp("Gender"))
.DeptID = IIf(IsNull(rstTmp("DeptID")), "", rstTmp("DeptID"))
.Password = IIf(IsNull(rstTmp("Password")), "", rstTmp("Password"))
.PositionID = IIf(IsNull(rstTmp("PositionID")), "", rstTmp("PositionID"))
.UserGroup = IIf(IsNull(rstTmp("UserGroup")), "", rstTmp("UserGroup"))
.CalendarUniqueID = IIf(IsNull(rstTmp("CalendarUniqueID")), 0, rstTmp("CalendarUniqueID"))
.DefaultDeviceID = IIf(IsNull(rstTmp("DefaultDeviceID")), "", rstTmp("DefaultDeviceID"))
.EmployeeType = IIf(IsNull(rstTmp("EmployeeType")), 0, rstTmp("EmployeeType"))
.Literacy = IIf(IsNull(rstTmp("Literacy")), "", rstTmp("Literacy"))
.Birth = IIf(IsNull(rstTmp("Birth")), Date_Init, rstTmp("Birth"))
.WorkCenterID = IIf(IsNull(rstTmp("WorkCenterID")), "", rstTmp("WorkCenterID"))
.EmployeeEmail = IIf(IsNull(rstTmp("EmployeeEmail")), "", rstTmp("EmployeeEmail"))
.EmployeeSmsID = IIf(IsNull(rstTmp("EmployeeSmsID")), "", rstTmp("EmployeeSmsID"))
End With

If Not clsEmployeeS.Add(clsEmployee, CStr(clsEmployee.EmployeeID)) Then
mStrMsg = "GetEmployeeS" & clsEmployeeS.GetClsMsg
GoTo CleanExit
End If
Set clsEmployee = Nothing
Set clsEmployee = New CEmployee
rstTmp.MoveNext
Loop Until rstTmp.EOF
Set oColEmployeeS = clsEmployeeS
Set cnTmp = Nothing
Set rstTmp = Nothing
RightExit:
GetEmployeeS = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "GetEmployeeS: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function TransEmployeeRTC(iRst As ADODB.Recordset, oObject As Object) As Boolean
On Error GoTo ErrorHandler
TransEmployeeRTC = False

Dim Date_Init As Date

With oObject
.EmployeeID = IIf(IsNull(iRst("EmployeeID")), "", iRst("EmployeeID"))
.EmployeeName = IIf(IsNull(iRst("EmployeeName")), "", iRst("EmployeeName"))
.Gender = IIf(IsNull(iRst("Gender")), "", iRst("Gender"))
.DeptID = IIf(IsNull(iRst("DeptID")), "", iRst("DeptID"))
.Password = IIf(IsNull(iRst("Password")), "", iRst("Password"))
.PositionID = IIf(IsNull(iRst("PositionID")), "", iRst("PositionID"))
.UserGroup = IIf(IsNull(iRst("UserGroup")), "", iRst("UserGroup"))
.CalendarUniqueID = IIf(IsNull(iRst("CalendarUniqueID")), 0, iRst("CalendarUniqueID"))
.DefaultDeviceID = IIf(IsNull(iRst("DefaultDeviceID")), "", iRst("DefaultDeviceID"))
.EmployeeType = IIf(IsNull(iRst("EmployeeType")), 0, iRst("EmployeeType"))
.Literacy = IIf(IsNull(iRst("Literacy")), "", iRst("Literacy"))
.Birth = IIf(IsNull(iRst("Birth")), Date_Init, iRst("Birth"))
.WorkCenterID = IIf(IsNull(iRst("WorkCenterID")), "", iRst("WorkCenterID"))
.EmployeeEmail = IIf(IsNull(iRst("EmployeeEmail")), "", iRst("EmployeeEmail"))
.EmployeeSmsID = IIf(IsNull(iRst("EmployeeSmsID")), "", iRst("EmployeeSmsID"))
End With

RightExit:
TransEmployeeRTC = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "TransEmployeeRTC: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function TransEmployeeCTR(iObject As Object, oRst As ADODB.Recordset) As Boolean
On Error GoTo ErrorHandler
TransEmployeeCTR = False

With iObject
If .EmployeeID <> "" Then oRst("EmployeeID") = .EmployeeID
If .EmployeeName <> "" Then oRst("EmployeeName") = .EmployeeName
If .Gender <> "" Then oRst("Gender") = .Gender
If .DeptID <> "" Then oRst("DeptID") = .DeptID
If .Password <> "" Then oRst("Password") = .Password
If .PositionID <> "" Then oRst("PositionID") = .PositionID
If .UserGroup <> "" Then oRst("UserGroup") = .UserGroup
If .CalendarUniqueID <> "" Then oRst("CalendarUniqueID") = .CalendarUniqueID
If .DefaultDeviceID <> "" Then oRst("DefaultDeviceID") = .DefaultDeviceID
If .EmployeeType <> "" Then oRst("EmployeeType") = .EmployeeType
If .Literacy <> "" Then oRst("Literacy") = .Literacy
If .Birth <> "" Then oRst("Birth") = .Birth
If .WorkCenterID <> "" Then oRst("WorkCenterID") = .WorkCenterID
If .EmployeeEmail <> "" Then oRst("EmployeeEmail") = .EmployeeEmail
If .EmployeeSmsID <> "" Then oRst("EmployeeSmsID") = .EmployeeSmsID
End With

RightExit:
TransEmployeeCTR = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "TransEmployeeCTR: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function UpdateEmployee(iClsEmployee As CEmployee, Optional iRst As ADODB.Recordset) As Boolean
On Error GoTo ErrorHandler
UpdateEmployee = False

With iClsEmployee
If .DeleteFlag Then
If Not .IsNew Then DelEmployeeFromRst iClsEmployee
.DeleteFlag = False
.IsNew = False
.Dirty = False
Else
If .IsNew Then
AddEmployeeToRst iClsEmployee
.IsNew = False
.Dirty = False
Else
If .Dirty Then
UpdateEmployeeToRst iClsEmployee
.Dirty = False
End If
End If
End If
End With
RightExit:
UpdateEmployee = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "UpdateEmployee: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function UpdateEmployeeS(iColEmployeeS As CEmployeeS) As Boolean
On Error GoTo ErrorHandler
UpdateEmployeeS = False

mStrMsg = ""

Dim i As Integer
Dim rstUpdate As ADODB.Recordset
Dim cnTmp As New CMMCn
If iColEmployeeS.UpdateSQL = "" Then
mStrMsg = "UpdateEmployeeS:没有定义更新SQL语句,无法更新集合!"
GoTo CleanExit
End If

Set rstUpdate = New ADODB.Recordset
rstUpdate.Open iColEmployeeS.UpdateSQL, cnTmp.Connect, adOpenStatic, adLockBatchOptimistic
If Not iColEmployeeS.IsChange Then GoTo RightExit
Dim clsEmployee As CEmployee
'依次更新每一个对象
For i = 1 To iColEmployeeS.Count
If i > iColEmployeeS.Count Then Exit For
Set clsEmployee = iColEmployeeS(i)
'删除
If clsEmployee.DeleteFlag Then
If Not clsEmployee.IsNew Then
rstUpdate.Filter = " EmployeeID='" & clsEmployee.EmployeeID & "'"
rstUpdate.Delete
End If
iColEmployeeS.Remove i
i = i - 1
Else
If clsEmployee.IsNew Then
rstUpdate.AddNew
ElseIf clsEmployee.Dirty Then
rstUpdate.Filter = " EmployeeID='" & clsEmployee.EmployeeID & "'"
End If
If clsEmployee.IsNew Or clsEmployee.Dirty Then
rstUpdate("EmployeeID") = clsEmployee.EmployeeID
rstUpdate("EmployeeName") = clsEmployee.EmployeeName
rstUpdate("Gender") = clsEmployee.Gender
rstUpdate("DeptID") = clsEmployee.DeptID
rstUpdate("Password") = clsEmployee.Password
rstUpdate("PositionID") = clsEmployee.PositionID
rstUpdate("UserGroup") = clsEmployee.UserGroup
rstUpdate("CalendarUniqueID") = clsEmployee.CalendarUniqueID
rstUpdate("DefaultDeviceID") = clsEmployee.DefaultDeviceID
rstUpdate("EmployeeType") = clsEmployee.EmployeeType
rstUpdate("Literacy") = clsEmployee.Literacy
rstUpdate("Birth") = clsEmployee.Birth
rstUpdate("WorkCenterID") = clsEmployee.WorkCenterID
rstUpdate("EmployeeEmail") = clsEmployee.EmployeeEmail
rstUpdate("EmployeeSmsID") = clsEmployee.EmployeeSmsID
End If
End If

clsEmployee.DeleteFlag = False
clsEmployee.IsNew = False
clsEmployee.Dirty = False
Set clsEmployee = Nothing
Next
'更新数据到数据库
rstUpdate.UpdateBatch adAffectAllChapters
RightExit:
UpdateEmployeeS = True
CleanExit:
Set rstUpdate = Nothing
Set cnTmp = Nothing
Exit Function
ErrorHandler:
mStrMsg = "UpdateEmployeeS: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
End Function


Public Function AddEmployeeToRst(iClsEmployee As CEmployee, Optional iRst As ADODB.Recordset) As Boolean
On Error GoTo ErrorHandler
AddEmployeeToRst = False

Dim bIsRstFrom As Boolean
Dim rstTmp As New ADODB.Recordset
bIsRstFrom = True
If iRst Is Nothing Then bIsRstFrom = False

If Not bIsRstFrom Then
Dim cnTmp As New CMMCn
rstTmp.Open "Select * from Employee Where 1=2 ", cnTmp.Connect, adOpenDynamic, adLockBatchOptimistic
Else
Set rstTmp = iRst
End If

'公用部分
rstTmp.AddNew
If Not TransEmployeeCTR(iClsEmployee, rstTmp) Then
mStrMsg = "AddEmployeeToRst:" & mStrMsg
GoTo CleanExit
End If
rstTmp.Update
If Not bIsRstFrom Then
rstTmp.UpdateBatch
Set cnTmp = Nothing
End If

Set rstTmp = Nothing
RightExit:
AddEmployeeToRst = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "AddEmployeeToRst: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function UpdateEmployeeToRst(iClsEmployee As CEmployee, Optional iRst As ADODB.Recordset) As Boolean
On Error GoTo ErrorHandler
UpdateEmployeeToRst = False

Dim bIsRstFrom As Boolean
Dim rstTmp As ADODB.Recordset
bIsRstFrom = True
If iRst Is Nothing Then bIsRstFrom = False

If Not bIsRstFrom Then
Dim cnTmp As New CMMCn
Set rstTmp = New ADODB.Recordset
rstTmp.Open "Select * from Employee Where EmployeeID='" & iClsEmployee.EmployeeID & "'", cnTmp.Connect, adOpenDynamic, adLockBatchOptimistic
Else
Set rstTmp = iRst
rstTmp.Filter = " EmployeeID='" & iClsEmployee.EmployeeID & "'"
End If

'公用部分
If Not TransEmployeeCTR(iClsEmployee, rstTmp) Then
mStrMsg = "UpdateEmployeeToRst:" & mStrMsg
GoTo CleanExit
End If
rstTmp.Update
If Not bIsRstFrom Then
rstTmp.UpdateBatch
Set cnTmp = Nothing
End If

Set rstTmp = Nothing
RightExit:
UpdateEmployeeToRst = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "UpdateEmployeeToRst: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function


Public Function DelEmployeeFromRst(iClsEmployee As CEmployee, Optional iRst As ADODB.Recordset) As Boolean
On Error GoTo ErrorHandler
DelEmployeeFromRst = False

Dim bIsRstFrom As Boolean
Dim rstTmp As ADODB.Recordset
bIsRstFrom = True
If iRst Is Nothing Then bIsRstFrom = False

If Not bIsRstFrom Then
Dim cnTmp As New CMMCn
cnTmp.Connect.Execute "Delete from Employee where EmployeeID='" & iClsEmployee.EmployeeID & "'"
Else
Set rstTmp = iRst
rstTmp.Filter = " EmployeeID='" & iClsEmployee.EmployeeID & "'"
rstTmp.Delete
rstTmp.Update
End If

If Not bIsRstFrom Then
Set cnTmp = Nothing
End If

Set rstTmp = Nothing
RightExit:
DelEmployeeFromRst = True
CleanExit:
Exit Function

ErrorHandler:
mStrMsg = "DelEmployeeFromRst: 发生意外错误 " & mStrMsg & vbCrLf & Err.Description
On Error GoTo 0
End Function

使用示例:

1 返回集合

Dim clsEmpEng As New CEmployeeEng '引擎类

'取得该类型的编码详细定义
Dim clsEmps As CEmployeeS '集合类 collection
'这里还要使用一部分SQL脚本,没办法,按照条件筛选,如果自己定义规则来解析执行,还不如用SQL
If Not clsEmpEng .GetEmployeeS(clsEmps , " EmployeeName like ''" & strCodeType & "' ") Then
mStrMsg = "取得编码规则时发生错误" & vbCrLf & clsCodeRuleEng.GetClsMsg
GoTo CleanExit
End If

2 新建、修改、删除

维护相应的flag

IsNew
Dirty
DeleteFlag

然后调用引擎类的相关更新函数,具体的大家可以自己捉摸,代码都在上面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原来一直从事企业管理软件的开发,经常苦恼于信息系统的开发困难。后来,公司产品要往面向对象方面转,希望能够通过新技术的应用,提高开发效率。不经意地发现了微软站点的一篇文章: 《Engine-Collection-Class,一种用来建立可重用企业组件的设计模式》。刚好,公司主要采用VB语言。经过仔细研读,不禁喜出望外。 经过短时间的验证、修改和使用,最终确定了公司采用这种模式作为对象的开发模式。确定了所有和数据库交互的业务对象全部采用这种模式封装,并且统一调用。由此,也走上了长达六年的摸索之路。 实际编写中发现,大量的类的创建过程都是在根据一个模板拷贝粘贴。于是开发一个类生成工具的想法自然而然的就出现了。开始的方法是通过Rose的VB代码生成模板创建,建立VB代码模板,然后通过Rose建立模型,通过Sterotype关联到我们的模板类,然后自动产生代码。效果不错,不过Rose仅仅生成代码框架,仍然需要大量手工操作。于是决定写一个独立的代码工具,来自动产生所有的代码。经过不断的模式和改进,一个简单实用的工具问世了。命名为:OrFlying ! 随着时间的进步,VB逐步淡出主力开发语言的阵营。我也转向了.net/j2ee的方向,使用vb.net ado.net重新定义ECC模式和编写ECC代码生成器的想法,一直在我心头。终于在2003年第一次写下了第一行代码,到目前为止,该方法已经经过我长时间的使用,基本稳定。 不敢说能够解决所有OR中的问题,但是能解决大量代码工作量我已经很知足了 期间,研究过hibernate JDO 等,仍然继续了OrFlying的工作,我想它的存在总是有其价值所在。我主要看重两点: 1 全部代码是生成的,和数据库的访问全部由具体的代码,而没有后台通用的组件和次,当然也注定了其应用面的狭窄; 2 这样产生的对象,通过 . 可以一级一级的不断出现提示,这个特点是我非常喜欢的,也就是所谓的对象形式化吧。不知道理解对不对 OrFlying 有vb和vb.net两个
原来一直从事企业管理软件的开发,经常苦恼于信息系统的开发困难。后来,公司产品要往面向对象方面转,希望能够通过新技术的应用,提高开发效率。不经意地发现了微软站点的一篇文章: 《Engine-Collection-Class,一种用来建立可重用企业组件的设计模式》。刚好,公司主要采用VB语言。经过仔细研读,不禁喜出望外。 经过短时间的验证、修改和使用,最终确定了公司采用这种模式作为对象的开发模式。确定了所有和数据库交互的业务对象全部采用这种模式封装,并且统一调用。由此,也走上了长达六年的摸索之路。 实际编写中发现,大量的类的创建过程都是在根据一个模板拷贝粘贴。于是开发一个类生成工具的想法自然而然的就出现了。开始的方法是通过Rose的VB代码生成模板创建,建立VB代码模板,然后通过Rose建立模型,通过Sterotype关联到我们的模板类,然后自动产生代码。效果不错,不过Rose仅仅生成代码框架,仍然需要大量手工操作。于是决定写一个独立的代码工具,来自动产生所有的代码。经过不断的模式和改进,一个简单实用的工具问世了。命名为:OrFlying ! 随着时间的进步,VB逐步淡出主力开发语言的阵营。我也转向了.net/j2ee的方向,使用vb.net ado.net重新定义ECC模式和编写ECC代码生成器的想法,一直在我心头。终于在2003年第一次写下了第一行代码,到目前为止,该方法已经经过我长时间的使用,基本稳定。 不敢说能够解决所有OR中的问题,但是能解决大量代码工作量我已经很知足了 期间,研究过hibernate JDO 等,仍然继续了OrFlying的工作,我想它的存在总是有其价值所在。我主要看重两点: 1 全部代码是生成的,和数据库的访问全部由具体的代码,而没有后台通用的组件和次,当然也注定了其应用面的狭窄; 2 这样产生的对象,通过 . 可以一级一级的不断出现提示,这个特点是我非常喜欢的,也就是所谓的对象形式化吧。不知道理解对不对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值