clsIte.cls
上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:6k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsIte"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '*********************************************************************
  15. '*    模 块 名 称 :项目毛利率分析类模块
  16. '*    功 能 描 述 :
  17. '*    程序员姓名  :白石军
  18. '*    最后修改人  :
  19. '*    最后修改时间:2002/1/21
  20. '*    备        注:程序中所有依实际情况自定义部分均用[>>  <<]括起
  21. '*
  22. '*********************************************************************
  23. Option Explicit
  24. Private Const costCode = &H100
  25. Private Const comeInCode = &H200
  26. Private Enum FLAG_CODE
  27.     COST_CODE = costCode
  28.     COMEIN_CODE = comeInCode
  29. End Enum
  30. Private SumAssiRs As New ADODB.Recordset '科目总帐表记录集
  31. Private IteRs As New ADODB.Recordset '产品
  32. Private iCompYear As Integer '比较期年
  33. Private iCompMonth As Integer  '比较期月
  34. Private iThisMonth As Integer '本年月
  35. Private iThisThreeMonthBegin As Integer '本年查询季开始
  36. Private iThisThreeMonthEnd As Integer '本年查询季结束
  37. Private myCode As FLAG_CODE
  38. Private strSubExp As String '当前资产负债表公式,用来保存用户设定的公式
  39. Public iRecordCount As Integer '数组记录条数
  40. Private codeColl As New Collection  '公式中的科目集合
  41. Private Sub Class_Initialize()
  42.     If DEBUG_FLAG = False Then On Error Resume Next
  43.     Dim SqlStr As String
  44.     SqlStr = "SELECT A.*,B.ItemName,C.ItemClassName FROM cwfx_ItemGrossProfitSet A,Cwzz_Item B,Cwzz_ItemClass C where A.ItemCode=B.ItemCode and A.ItemClassCode=B.ItemClassCode and C.ItemClassCode=A.ItemClassCode"
  45.     Set IteRs = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  46.     'Call GetParm
  47. End Sub
  48. Public Function GetParm(nIndex As Integer, sText As String)
  49.     '得到查询参数
  50.     If DEBUG_FLAG = False Then On Error Resume Next
  51.     
  52.         Select Case nIndex
  53.         Case 0 '按年
  54.             
  55.         Case 1 '按月
  56.             iThisMonth = CInt(Right(sText, 2))
  57.         Case 2 '按季
  58.             iThisThreeMonthBegin = Mid(sText, 6, 2)
  59.             iThisThreeMonthEnd = CInt(Right(sText, 2))
  60.         End Select
  61.     
  62. End Function
  63. Public Function MakeData(nIndex As Integer) As Boolean
  64.     '此过程为公共接口
  65.     If DEBUG_FLAG = False Then On Error Resume Next
  66.     Dim i As Integer
  67.     iRecordCount = IteRs.RecordCount - 1
  68.     If iRecordCount < 0 Then
  69.         MakeData = False
  70.         Exit Function
  71.     End If
  72.     ReDim IteArry(iRecordCount)
  73.     
  74.     For i = 0 To iRecordCount
  75.         With IteRs
  76.             IteArry(i).strItemClass = Trim(!ItemClassName) '项目大类
  77.             IteArry(i).strItemName = Trim(!ItemName)
  78.             myCode = COMEIN_CODE '设置标志:收入科目
  79.             IteArry(i).lngInCome = GetVal(Trim(!ItemCode), Trim(!ItemClasscode), nIndex)
  80.             myCode = COST_CODE '设置标志:成本科目
  81.             IteArry(i).lngCost = GetVal(Trim(!ItemCode), Trim(!ItemClasscode), nIndex)
  82.             IteArry(i).lngMaoLi = IteArry(i).lngInCome - IteArry(i).lngCost
  83.             If IteArry(i).lngInCome <> 0 Then
  84.                 IteArry(i).lngMaoLiLv = (IteArry(i).lngMaoLi / IteArry(i).lngInCome) * 100
  85.             Else
  86.                 IteArry(i).lngMaoLiLv = 0
  87.             End If
  88.             .MoveNext
  89.         End With
  90.     Next
  91.     MakeData = True
  92. End Function
  93. Private Function GetVal(ByVal strItem As String, ByVal strItemClass As String, nIndex As Integer) As Long
  94.     If DEBUG_FLAG = False Then On Error Resume Next
  95.     Dim sigReturn As Long '返回数
  96.     Dim strTem As String
  97.     Dim iLen As Integer
  98.     Dim iWordBegin As Integer
  99.     Dim iWordEnd As Integer
  100.     Dim i As Integer
  101.     Dim j As Integer
  102.     Dim strSql As String
  103.     
  104.     If SumAssiRs.State = adStateOpen Then SumAssiRs.Close
  105.     strSql = MakeSQL(strItem, strItemClass, nIndex)
  106.     Set SumAssiRs = Cw_DataEnvi.DataConnect.Execute(strSql)
  107.     If Not (SumAssiRs.EOF And SumAssiRs.BOF) Then
  108.         '如果是收入则(此处可进一步优化,即同时查出成本和收入,同时累加到数据对象中)
  109.         If myCode = COMEIN_CODE Then
  110.             sigReturn = sigReturn + IIf(IsNull(SumAssiRs!dje), 0, SumAssiRs!dje)
  111.         ElseIf myCode = COST_CODE Then  '是成本则
  112.             sigReturn = sigReturn + IIf(IsNull(SumAssiRs!jje), 0, SumAssiRs!jje)
  113.         End If
  114.     End If
  115.     
  116.     GetVal = sigReturn
  117. End Function
  118. Private Function MakeSQL(ByVal strItem As String, ByVal strItemClass As String, nIndex As Integer) As String
  119.     '根据查询条件,生成SQL语句
  120.     If DEBUG_FLAG = False Then On Error Resume Next
  121.     Dim strTemSql As String
  122.     '---------------------------------------------------------------------------
  123.     strTemSql = ""
  124.     If myCode = COMEIN_CODE Then
  125.         strTemSql = "SELECT Sum(Mdje) as dje FROM Cwzz_AccSumAssi o ,Cwzz_AccCode m  WHERE o.cCode=m.cCode AND m.BalanceOri='贷' and  o.ItemCode='" & strItem & "' AND o.ItemClassCode='" & strItemClass & "' "
  126.     ElseIf myCode = COST_CODE Then  '是成本则
  127.         strTemSql = "SELECT Sum(Mjje) as jje FROM Cwzz_AccSumAssi o ,Cwzz_AccCode m  WHERE o.cCode=m.cCode AND m.BalanceOri='借' and  o.ItemCode='" & strItem & "' AND o.ItemClassCode='" & strItemClass & "' "
  128.     End If
  129.     Select Case nIndex
  130.     Case 0 '按年
  131.         strTemSql = strTemSql & " AND  Year=" & Xtyear
  132.     Case 1 '按月
  133.         strTemSql = strTemSql & " AND Period=" & iThisMonth & " AND Year=" & Xtyear
  134.     Case 2 '按季
  135.         strTemSql = strTemSql & " AND Period  Between " & iThisThreeMonthBegin & " AND " & iThisThreeMonthEnd & " AND Year=" & Xtyear
  136.     End Select
  137.     '-----------------------------------------------------------------------------
  138.     MakeSQL = strTemSql
  139. End Function
  140. Private Sub Class_Terminate()
  141.     If DEBUG_FLAG = False Then On Error Resume Next
  142.     If SumAssiRs.State = adStateOpen Then SumAssiRs.Close
  143.     If IteRs.State = adStateOpen Then IteRs.Close
  144.     
  145.     Set SumAssiRs = Nothing
  146.     Set IteRs = Nothing
  147.     
  148.     Set codeColl = Nothing
  149.     
  150. End Sub