⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datamanager.cls

📁 财务信息管理系统,适合做毕业论文的人使用
💻 CLS
📖 第 1 页 / 共 2 页
字号:
                        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 + -