?? datamanager.cls
字號:
recChild.Fields.Item(objFO.SourceField) = CByte(objFO.Value) / 255
Else
recChild.Fields.Item(objFO.SourceField) = objFO.Value
End If
End If
Next
'----遞歸調用
If Not objChildEO.EOS.EOMetaData Is Nothing Then
Me.Save con, objChildEO
End If
Next
'----批量更新
recChild.UpdateBatch
recChild.Close
Set recChild = Nothing
End If
'----因為鎖定的原因,將設置EO.State的任務交給Client端
' '----
' eo.State = esoInstance
Set objFO = Nothing
Set objChildEO = Nothing
Save = True
Exit Function
lblHandle:
Select Case Err.Number
Case -2147217873
If EO.BIType = 1 Then MsgBox "賬戶號不能相同!", vbInformation, "用友ERP-U8資金管理"
If EO.BIType = 2 Then MsgBox "賬戶類型代碼不能相同!", vbInformation, "用友ERP-U8資金管理"
If EO.BIType = 3 Then MsgBox "結息日代碼不能相同!", vbInformation, "用友ERP-U8資金管理"
If EO.BIType = 8 Then
If EO.State = esoAddNew Then
MsgBox "利率代碼不能相同!", vbInformation, "用友ERP-U8資金管理"
ElseIf EO.State = esoEdit Then
MsgBox "調整日期不能相同!", vbInformation, "用友ERP-U8資金管理"
End If
End If
If EO.BIType = 9 Then MsgBox "單位代碼不能相同!", vbInformation, "用友ERP-U8資金管理"
Case -2147217833
MsgBox "字段值超出允許范圍!", vbInformation, "用友ERP-U8資金管理"
End Select
End Function
'----裝載實體對象的Meta Data
Public Function LoadEOMetaData(DataSourceName As String, BIType As Long, Optional OnlyEO As Boolean = False) As U8FDEso.EntityObject
Dim objEO As New U8FDEso.EntityObject
Dim objFO As U8FDEso.FieldObject
Dim sql As String
Dim rec As New ADODB.Recordset
Dim recFields As New ADODB.Recordset
Dim recChild As New ADODB.Recordset
'----初始化實體對象
If con.State = adStateClosed Then con.Open DataSourceName
sql = "Select * From FD_Entities Where iID = " & BIType
rec.Open sql, con
With objEO
.ID = rec!iID
.Name = rec!sName
.Caption = rec!sCaption
.State = esoInitialized
.BIType = rec!iBIType
.SourceOIDField = rec!sOIDSourceField
.SourceTable = rec!sSourceTable
.ParentField = IIf(IsNull(rec!sParentField), "", rec!sParentField)
.TaskID = IIf(IsNull(rec!sTaskID), "", rec!sTaskID)
.HelpContextID = IIf(IsNull(rec!sHelpContextID), "", rec!sHelpContextID)
.Description = IIf(IsNull(rec!sDescription), "", rec!sDescription)
.SheetID = IIf(IsNull(rec!iSheet), 0, rec!iSheet)
.Rows = IIf(IsNull(rec!iRows), 0, rec!iRows)
.Cols = IIf(IsNull(rec!iCols), 0, rec!iCols)
.IsUsed = IIf(IsNull(rec!iIsUsed), 0, rec!iIsUsed)
.PzSign = IIf(IsNull(rec!sPzSign), "", rec!sPzSign)
.VchType = IIf(IsNull(rec!iVchType), 0, rec!iVchType)
.DeriveBIType = IIf(IsNull(rec!iDeriveBIType), 0, rec!iDeriveBIType)
.Width = IIf(IsNull(rec!iWidth), 0, rec!iWidth)
.Height = IIf(IsNull(rec!iHeight), 0, rec!iHeight)
.IsAutoAlarm = IIf(IsNull(rec!bIsAutoAlarm), 0, rec!bIsAutoAlarm)
.AlarmDays = IIf(IsNull(rec!iAlarmDays), 0, rec!iAlarmDays)
End With
If OnlyEO Then GoTo lblOnlyEO
'----初始化實體對象的域對象集
sql = "Select * From FD_Fields Where iEntityID = " & objEO.ID
recFields.Open sql, con
With recFields
While Not .EOF
Set objFO = New U8FDEso.FieldObject
objFO.ID = !iID
objFO.Name = !sName
objFO.Caption = !sCaption
objFO.EntityID = !iEntityID
objFO.FieldOption = !iFieldOption
objFO.HelpContextID = IIf(IsNull(!sHelpContextID), "", !sHelpContextID)
objFO.Persistent = !bPersistent
objFO.ReferenceType = IIf(IsNull(!iReferenceType), 0, !iReferenceType)
objFO.RefFldSqc = IIf(IsNull(!iRefFldSqc), 0, !iRefFldSqc)
objFO.QryFldSqc = IIf(IsNull(!iQryFldSqc), 0, !iQryFldSqc)
objFO.IsUsed = !bIsUsed
objFO.TaskID = IIf(IsNull(!sTaskID), "", !sTaskID)
objFO.EditProp = !iEditProp
objFO.DataType = !iDataType
objFO.Length = !iLength
objFO.Decimals = IIf(IsNull(!iDecimals), 0, !iDecimals)
objFO.AllowNull = !bAllowNull
objFO.DefaultValue = !sDefaultValue
objFO.SourceField = IIf(IsNull(!sSourceField), "", !sSourceField)
objFO.Row = IIf(IsNull(!iRow), 0, !iRow)
objFO.StartCol = IIf(IsNull(!iStartCol), 0, !iStartCol)
objFO.EndCol = IIf(IsNull(!iEndCol), 0, !iEndCol)
objFO.InputCol = IIf(IsNull(!iInputCol), 0, !iInputCol)
objFO.Left = IIf(IsNull(!dblLeft), 0, !dblLeft)
objFO.Width = IIf(IsNull(!dblWidth), 0, !dblWidth)
objFO.InputLeft = IIf(IsNull(!dblInputLeft), 0, !dblInputLeft)
objFO.InputWidth = IIf(IsNull(!dblInputWidth), 0, !dblInputWidth)
objFO.Top = IIf(IsNull(!dblTop), 0, !dblTop)
objFO.Height = IIf(IsNull(!dblHeight), 0, !dblHeight)
objFO.Min = !dblMin
objFO.Max = !dblMax
'----添加域對象到Fields集合
objEO.Fields.AppendEx objFO
.MoveNext
Wend
End With
recFields.Close
Set recFields = Nothing
'----初始化實體對象的子表及孫子表等(默認實體對象只有一個子表)
sql = "Select * From FD_Entities Where iParentID = " & BIType
recChild.Open sql, con
If Not recChild.EOF Then
Set objEO.EOS.EOMetaData = LoadEOMetaData(DataSourceName, recChild!iID)
End If
recChild.Close
Set recChild = Nothing
lblOnlyEO:
rec.Close
Set rec = Nothing
Set LoadEOMetaData = objEO
Set objFO = Nothing
Set objEO = Nothing
End Function
'------------------------------------------
'-函數名稱:SaveEOMetaData
'-功能描述:保存實體對象的Meta Data
'-參數:DataSourceName
'- eo
'- OnlyEO
'-備注:考慮到事務特性,應將參數
'- DataSourceName換成數據庫連接。
'------------------------------------------
Public Function SaveEOMetaData(DataSourceName As String, EO As EntityObject, Optional OnlyEO As Boolean = False, Optional SetChildEO As Boolean = True) As Boolean
Dim objFO As U8FDEso.FieldObject
Dim rec As New ADODB.Recordset
Dim recFields As New ADODB.Recordset
Dim sql As String
On Error GoTo lblError
'----打開數據庫連接
If con.State = adStateClosed Then con.Open DataSourceName
sql = "select count(*) from fd_entities where sCaption='" & EO.Caption & "' and iBIType <> " & EO.BIType
rec.Open sql, con, adOpenDynamic, adLockOptimistic
If rec.Fields(0) <> 0 Then
MsgBox "單據類型名稱不能重復!", vbInformation, "用友ERP-U8資金管理"
Exit Function
End If
rec.Close
con.BeginTrans
If EO.State = esoAddNew Then
'增加
rec.Open "FD_Entities", con, adOpenDynamic, adLockOptimistic
With EO
rec.AddNew
rec!iID = .ID
rec!sName = .Name
rec!sCaption = .Caption
rec!iBIType = .BIType
rec!sMaxOID = .BIType & "0000000000000"
rec!sOIDSourceField = .SourceOIDField
rec!sSourceTable = .SourceTable
rec!sParentField = IIf(.ParentField = "", Null, .ParentField)
rec!sTaskID = IIf(.TaskID = "", Null, .TaskID)
rec!sHelpContextID = IIf(.HelpContextID = "", Null, .HelpContextID)
rec!sDescription = IIf(.Description = "", Null, .Description)
rec!iSheet = IIf(.SheetID = 0, Null, .SheetID)
rec!iRows = IIf(.Rows = 0, Null, .Rows)
rec!iCols = IIf(.Cols = 0, Null, .Cols)
rec!iIsUsed = IIf(.IsUsed, 1, 0)
rec!sPzSign = IIf(.PzSign = "", Null, .PzSign)
rec!iVchType = .VchType
rec!iDeriveBIType = .DeriveBIType
rec!iWidth = .Width
rec!iHeight = .Height
rec!bIsAutoAlarm = .IsAutoAlarm
rec!iAlarmDays = .AlarmDays
'----
rec.Update
End With
Else
'修改
rec.Open "Select * From FD_Entities Where iID = " & EO.BIType, con, adOpenDynamic, adLockOptimistic
With EO
rec!iID = .ID
rec!sName = .Name
rec!sCaption = .Caption
rec!iBIType = .BIType
rec!sOIDSourceField = .SourceOIDField
rec!sSourceTable = .SourceTable
rec!sParentField = IIf(.ParentField = "", Null, .ParentField)
rec!sTaskID = IIf(.TaskID = "", Null, .TaskID)
rec!sHelpContextID = IIf(.HelpContextID = "", Null, .HelpContextID)
rec!sDescription = IIf(.Description = "", Null, .Description)
rec!iSheet = IIf(.SheetID = 0, Null, .SheetID)
rec!iRows = IIf(.Rows = 0, Null, .Rows)
rec!iCols = IIf(.Cols = 0, Null, .Cols)
rec!iIsUsed = IIf(.IsUsed, 1, 0)
rec!sPzSign = IIf(.PzSign = "", Null, .PzSign)
If .Width > 0 Then rec!iWidth = .Width
If .Height > 0 Then rec!iHeight = .Height
rec!bIsAutoAlarm = .IsAutoAlarm
rec!iAlarmDays = .AlarmDays
'----
rec.Update
End With
End If
If OnlyEO Then GoTo lblOnlyEO
'----
con.Execute "Delete From FD_Fields Where iEntityID = " & EO.ID
'----初始化實體對象的域對象集
recFields.Open "FD_Fields", con, adOpenDynamic, adLockOptimistic
With recFields
For Each objFO In EO.Fields
' For i = 1 To EO.Fields.Count
' Set objFO = EO.Fields.Item(i)
.AddNew
!iID = objFO.ID
!sName = objFO.Name
!sCaption = objFO.Caption
!iEntityID = objFO.EntityID
!iFieldOption = objFO.FieldOption
!sHelpContextID = IIf(objFO.HelpContextID = "", Null, objFO.HelpContextID)
!bPersistent = objFO.Persistent
!iReferenceType = objFO.ReferenceType
!iRefFldSqc = objFO.RefFldSqc
!iQryFldSqc = objFO.QryFldSqc
!bIsUsed = objFO.IsUsed
!sTaskID = IIf(objFO.TaskID = "", Null, objFO.TaskID)
!iEditProp = objFO.EditProp
!iDataType = objFO.DataType
!iLength = objFO.Length
!iDecimals = IIf(objFO.Decimals = 0, Null, objFO.Decimals)
!bAllowNull = objFO.AllowNull
!sDefaultValue = IIf(objFO.DefaultValue = "", Null, objFO.DefaultValue)
!sSourceField = IIf(objFO.SourceField = "", Null, objFO.SourceField)
!iRow = IIf(objFO.Row = 0, Null, objFO.Row)
!iStartCol = IIf(objFO.StartCol = 0, Null, objFO.StartCol)
!iEndCol = IIf(objFO.EndCol = 0, Null, objFO.EndCol)
!iInputCol = IIf(objFO.InputCol = 0, Null, objFO.InputCol)
!dblLeft = IIf(objFO.IsUsed = False, Null, objFO.Left) 'IIf(objFO.Left = 0, Null, objFO.Left)
!dblWidth = IIf(objFO.IsUsed = False, Null, objFO.Width)
!dblInputLeft = IIf(objFO.IsUsed = False, Null, objFO.InputLeft)
!dblInputWidth = IIf(objFO.IsUsed = False, Null, objFO.InputWidth)
!dblTop = IIf(objFO.IsUsed = False, Null, objFO.Top)
!dblHeight = IIf(objFO.IsUsed = False, Null, objFO.Height)
!dblMin = IIf(IsNumeric(objFO.Min), objFO.Min, Null)
!dblMax = IIf(IsNumeric(objFO.Max), objFO.Max, Null)
Next
'----批更新
.UpdateBatch
End With
recFields.Close
Set recFields = Nothing
'----初始化實體對象的子表及孫子表等(默認實體對象只有一個子表)
If Not EO.EOS.EOMetaData Is Nothing And SetChildEO Then
SaveEOMetaData DataSourceName, EO.EOS.EOMetaData
End If
lblOnlyEO:
rec.Close
Set rec = Nothing
con.CommitTrans
SaveEOMetaData = True
Set objFO = Nothing
Exit Function
lblError:
con.RollbackTrans
End Function
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -