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

企业管理

开发平台:

Visual Basic

  1.             .m_biaoge.Enabled = True
  2.             .m_windows.Enabled = True
  3.             If Xtczybm <> "000" And Me.ml_edit_lx = 1 And Edit_Flag = False Then '判断是否管理员并设置菜单
  4.                 .m_edit.Visible = False
  5.                 .m_view.Visible = False
  6.                 .m_biaoge.Visible = False
  7.                 .m_page.Visible = False
  8.                 .m_data.Visible = False
  9.                 .m_manage.Visible = False
  10.                 .m_windows.Visible = False
  11.             Else
  12.                 .m_edit.Visible = True
  13.                 .m_view.Visible = True
  14.                 .m_biaoge.Visible = True
  15.                 .m_page.Visible = True
  16.                 .m_data.Visible = True
  17.                 .m_manage.Visible = True
  18.                 .m_windows.Visible = True
  19.             End If
  20.             
  21.         End If
  22.     End With
  23. End Sub
  24. Private Sub mf_settoolbar(ByVal ll_count As Long)
  25.     With MDI_frame
  26.         If ll_count = 0 Then
  27.             .CoolBar2.Visible = False
  28.             .CoolBar3.Visible = False
  29.             For i = 3 To 33
  30.                 .Toolbar1.Buttons(i).Visible = False
  31.             Next i
  32.             .Toolbar1.Buttons(3).Visible = False
  33.             
  34.         End If
  35.         If ll_count = 1 Then
  36.             .CoolBar2.Visible = True
  37.             .CoolBar3.Visible = True
  38.             .CoolBar1.Top = 0
  39.             .CoolBar2.Top = 390
  40.             .CoolBar3.Top = 780
  41.             For i = 3 To 33
  42.                 .Toolbar1.Buttons(i).Visible = True
  43.             Next i
  44.             For i = 1 To 24
  45.                 .Toolbar2.Buttons(i).Visible = True
  46.             Next i
  47.             For i = 1 To 23
  48.                 .Toolbar3.Buttons(i).Visible = True
  49.             Next i
  50.             
  51.             If Xtczybm = "000" Then
  52.                 For i = 16 To 23
  53.                     .Toolbar1.Buttons(i).Visible = False
  54.                 Next i
  55.                 If Me.ml_edit_lx = 1 Then
  56.                     Me.Cell1.GridReadOnly = True
  57.                     Me.Cell1.TopLabelVisible = False
  58.                     Me.Cell1.SideLabelVisible = False
  59.                 Else
  60.                     Me.Cell1.GridReadOnly = False
  61.                     Me.Cell1.TopLabelVisible = True
  62.                     Me.Cell1.SideLabelVisible = True
  63.                 End If
  64.             Else
  65.                 .Toolbar1.Buttons(16).Visible = False
  66.                 .Toolbar1.Buttons(17).Visible = False
  67.                 .Toolbar1.Buttons(18).Visible = False
  68.                 If Me.ml_edit_lx = 1 Then
  69.                     Me.Cell1.TopLabelVisible = False
  70.                     Me.Cell1.SideLabelVisible = False
  71.                 Else
  72.                     Me.Cell1.TopLabelVisible = True
  73.                     Me.Cell1.SideLabelVisible = True
  74.                 End If
  75.                 If Me.ml_edit_lx = 1 Or Me.ml_edit_lx = 4 Or Me.ml_edit_lx = 7 Then
  76.                     If Edit_Flag = False Then
  77.                         .CoolBar2.Visible = False
  78.                         .CoolBar3.Visible = False
  79.                         For i = 7 To 33
  80.                             .Toolbar1.Buttons(i).Visible = False
  81.                         Next i
  82.                         For i = 1 To 24
  83.                             .Toolbar2.Buttons(i).Visible = False
  84.                         Next i
  85.                         For i = 1 To 23
  86.                             .Toolbar3.Buttons(i).Visible = False
  87.                         Next i
  88.                     Else
  89.                         For i = 14 To 20
  90.                             .Toolbar2.Buttons(i).Visible = False
  91.                         Next i
  92.                         For i = 15 To 33
  93.                             .Toolbar1.Buttons(i).Visible = False
  94.                         Next i
  95.                         .Toolbar1.Buttons(30).Visible = True
  96.                     End If
  97.                 Else
  98.                     If Me.ml_edit_lx = 6 Or Me.ml_edit_lx = 3 Then '是否是文件 是文件是菜单可用
  99.                         For i = 24 To 33
  100.                             .Toolbar1.Buttons(i).Visible = True
  101.                         Next i
  102.                         For i = 14 To 20
  103.                             .Toolbar2.Buttons(i).Visible = True
  104.                         Next i
  105.                     Else
  106.                         For i = 24 To 33
  107.                             .Toolbar1.Buttons(i).Visible = False
  108.                         Next i
  109.                         For i = 14 To 20
  110.                             .Toolbar2.Buttons(i).Visible = False
  111.                         Next i
  112.                     End If
  113.                 End If
  114.             End If
  115.             
  116.         End If
  117.     End With
  118. End Sub
  119. Private Sub Cell1_OnCellChange(ByVal oldcol As Long, ByVal oldrow As Long, ByVal newcol As Long, ByVal newrow As Long)
  120.     
  121.     Dim ls_note As String, ll_backcolor, ll_forecolor, ls_data As String, ls_data1
  122.     If Cell1.IsFormulaCell(ml_col, ml_row) Then
  123.         ls_note = Cell1.DoGetCellNote(ml_col, ml_row)
  124.         Cell1.DoGetCellColor ml_col, ml_row, ll_forecolor, ll_backcolor
  125.         If MDI_frame.m_backcolor.Checked = True Then
  126.             If Left(ls_note, 1) = "1" Then
  127.                 Cell1.DoSetCellColor ml_col, ml_row, ll_forecolor, RGB(0, 128, 128)
  128.             Else
  129.                 Cell1.DoSetCellColor ml_col, ml_row, ll_forecolor, RGB(255, 0, 255)
  130.             End If
  131.         End If
  132.     End If
  133.     If Cell1.DoGetCellNote(ml_col, ml_row) = "转换1" Then
  134.         Cell1.DoGetCellData ml_col, ml_row, ls_data1
  135.         If IsNumeric(ls_data1) Then
  136.             ls_data = cell_zhdx1(ls_data1)
  137.             Cell1.DoSetCellData ml_col, ml_row, ls_data
  138.         End If
  139.     End If
  140.     If Cell1.DoGetCellNote(ml_col, ml_row) = "转换2" Then
  141.         Cell1.DoGetCellData ml_col, ml_row, ls_data1
  142.         If IsNumeric(ls_data1) Then
  143.             ls_data = cell_zhdx2(ls_data1)
  144.             Cell1.DoSetCellData ml_col, ml_row, ls_data
  145.         End If
  146.     End If
  147.     If Cell1.DoGetCellNote(ml_col, ml_row) = "转换3" Then
  148.         Cell1.DoGetCellData ml_col, ml_row, ls_data1
  149.         If IsNumeric(ls_data1) Then
  150.             ls_data = cell_zhdx3(ls_data1)
  151.             Cell1.DoSetCellData ml_col, ml_row, ls_data
  152.         End If
  153.     End If
  154.     Dim aa, j, i '定义必要的变量
  155.     '得到数据并去掉数据中的","
  156.     If Cell1.DoGetCellData(ml_col, ml_row, aa) = True Then aa = deleteword(aa, ",")
  157.     j = 0
  158.     '检查数据
  159.     For i = 1 To Len(aa)
  160.         If j > 1 Then
  161.             Cell1.DoUndo
  162.             MsgBox "输入数据不对!" & vbCrLf & "修改被取消", vbInformation + vbOKOnly, "百利/ERP5.0-电子报表"
  163.             Exit For
  164.         End If
  165.         If Not IsNumeric(Mid(aa, i, 1)) And Mid(aa, i, 1) <> "." Then Exit For
  166.         
  167.         If Mid(aa, i, 1) = "." Then
  168.             j = j + 1
  169.         End If
  170.     Next i
  171.     Cell1.DoRedrawAll
  172.     '''''''''''''''''''
  173.     
  174.     ml_col = newcol
  175.     ml_row = newrow
  176.     Cell1.DoClearSelection
  177.     Cell1.DoSelectRange ml_col, ml_row, ml_col, ml_row
  178.     MDI_frame.mb_setfont = False
  179.     mf_cell_toolbar '设置与当前单元相关的工具栏状态
  180.     MDI_frame.mb_setfont = True
  181. End Sub
  182. '执行用户自定义函数
  183. Private Sub Cell1_OnExecuteUserFunc(ByVal Name As String, ByVal rettype As Integer, ByVal paranum As Integer, paratype As Long, funcResult As Variant)
  184.     
  185.     Dim strQueryResult As String
  186.     Dim strOptional As String
  187.     Dim la_paravar() As Variant
  188.     Dim ls_select As String
  189.     ReDim la_paravar(paranum) As Variant
  190.     Dim i As Long
  191.     Dim lrst_all As ADODB.Recordset
  192.     Dim ls_year As String, ls_month As String
  193.     Dim ls_YearName As String, ls_MonthName As String
  194.     Dim ls_SQLselect As String
  195.     Dim ls_row As Integer, ls_col As Integer
  196.     Dim iInstr1, iInstr2
  197.     Dim tStr As String
  198.     Dim sqlstring As Variant
  199.     Dim prodata As Double               '中间数据
  200.     Dim proline As String
  201.     
  202.     On Error GoTo err_msg
  203.     
  204.     strOptional = ""
  205.     
  206.     For i = 0 To paranum - 1
  207.         la_paravar(i) = Cell1.DoFetchFuncParameter2(i)
  208.     Next
  209.     
  210.     '处理自定义函数
  211.     Select Case LCase(Name)
  212.     Case "je_ncye", "je_qcye", "je_qmye", "je_bqjfs", "je_bqdfs", "je_ljjfs", "je_ljdfs", "je_njfse", "je_yjfse"
  213.         ls_year = mf_exchange_nyr(la_paravar(1))
  214.         ls_month = mf_exchange_nyr(la_paravar(2))
  215.         '年月日合法性检查
  216.         If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  217.         '查询字符串赋值
  218.         If la_paravar(3) = "" Then     '辅助项1参数为空时
  219.             Select Case LCase(Name)
  220.             Case "je_ncye"
  221.                 ls_SQLselect = "SELECT ycye from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  222.             Case "je_qcye"
  223.                 ls_SQLselect = "SELECT qcye from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  224.             Case "je_qmye"
  225.                 ls_SQLselect = "SELECT qmye from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  226.             Case "je_bqjfs"
  227.                 ls_SQLselect = "SELECT mjje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  228.             Case "je_bqdfs"
  229.                 ls_SQLselect = "SELECT mdje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  230.             Case "je_ljjfs"
  231.                 ls_SQLselect = "SELECT byjfljje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  232.             Case "je_ljdfs"
  233.                 ls_SQLselect = "SELECT bydfljje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  234.             Case "je_njfse"
  235.                 ls_SQLselect = "SELECT byjfljje-bydfljje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  236.             Case "je_yjfse"
  237.                 ls_SQLselect = "SELECT mjje-mdje from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  238.             End Select
  239.         Else           '辅助项1参数不为空时
  240.             '检查辅助项1参数合法性
  241.             iInstr1 = UCase(Left(la_paravar(3), 1))
  242.             If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Then
  243.             Else
  244.                 GoTo err_msg
  245.             End If
  246.             iInstr2 = Right(la_paravar(3), Len(la_paravar(3)) - 1)
  247.             Select Case iInstr1
  248.             Case "P"
  249.                 tStr = "and PersonCode ='" & iInstr2 & "'"
  250.             Case "D"
  251.                 tStr = "and DeptCode ='" & iInstr2 & "'"
  252.             Case "C"
  253.                 tStr = "and CusCode ='" & iInstr2 & "'"
  254.             Case "I"
  255.                 tStr = "and ItemClassCode ='" & iInstr2 & "'"
  256.             Case "J"
  257.                 tStr = "and ItemCode ='" & iInstr2 & "'"
  258.             Case "S"
  259.                 tStr = "and Supplier_Code ='" & iInstr2 & "'"
  260.             End Select
  261.             If la_paravar(4) <> "" Then    '辅助项2参数不为空时
  262.                 '检查辅助项2参数合法性
  263.                 iInstr1 = UCase(Left(la_paravar(4), 1))
  264.                 If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Or iInstr1 = "*" Or iInstr1 = "#" Then
  265.                 Else
  266.                     GoTo err_msg
  267.                 End If
  268.                 iInstr2 = Right(la_paravar(4), Len(la_paravar(4)) - 1)
  269.                 Select Case iInstr1
  270.                 Case "P"
  271.                     tStr = tStr + "and PersonCode ='" & iInstr2 & "'"
  272.                 Case "D"
  273.                     tStr = tStr + "and DeptCode ='" & iInstr2 & "'"
  274.                 Case "C"
  275.                     tStr = tStr + "and CusCode ='" & iInstr2 & "'"
  276.                 Case "I"
  277.                     tStr = tStr + "and ItemClassCode ='" & iInstr2 & "'"
  278.                 Case "J"
  279.                     tStr = tStr + "and ItemCode ='" & iInstr2 & "'"
  280.                 Case "S"
  281.                     tStr = "and Supplier_Code ='" & iInstr2 & "'"
  282.                 End Select
  283.             End If
  284.             If iInstr1 = "*" Then    '辅助项2参数为*时
  285.                 Select Case LCase(Name)
  286.                 Case "je_ncye"
  287.                     ls_SQLselect = "SELECT sum(ycye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  288.                 Case "je_qcye"
  289.                     ls_SQLselect = "SELECT sum(qcye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  290.                 Case "je_qmye"
  291.                     ls_SQLselect = "SELECT sum(qmye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  292.                 Case "je_bqjfs"
  293.                     ls_SQLselect = "SELECT sum(mjje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  294.                 Case "je_bqdfs"
  295.                     ls_SQLselect = "SELECT sum(mdje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  296.                 Case "je_ljjfs"
  297.                     ls_SQLselect = "SELECT sum(byjfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  298.                 Case "je_ljdfs"
  299.                     ls_SQLselect = "SELECT sum(bydfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  300.                 Case "je_njfse"
  301.                     ls_SQLselect = "SELECT sum(byjfljje)-sum(bydfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  302.                 Case "je_yjfse"
  303.                     ls_SQLselect = "SELECT sum(mjje)-sum(mdje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  304.                 End Select
  305.             Else        '辅助项2参数不为*时
  306.                 If iInstr1 = "#" Then    '辅助项2参数为#时
  307.                     Select Case LCase(Name)
  308.                     Case "je_ncye"
  309.                         ls_SQLselect = "SELECT sum(ycye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  310.                     Case "je_qcye"
  311.                         ls_SQLselect = "SELECT sum(qcye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  312.                     Case "je_qmye"
  313.                         ls_SQLselect = "SELECT sum(qmye) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  314.                     Case "je_bqjfs"
  315.                         ls_SQLselect = "SELECT sum(mjje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  316.                     Case "je_bqdfs"
  317.                         ls_SQLselect = "SELECT sum(mdje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  318.                     Case "je_ljjfs"
  319.                         ls_SQLselect = "SELECT sum(byjfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  320.                     Case "je_ljdfs"
  321.                         ls_SQLselect = "SELECT sum(bydfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  322.                     Case "je_njfse"
  323.                         ls_SQLselect = "SELECT sum(byjfljje)-sum(bydfljje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  324.                     Case "je_yjfse"
  325.                         ls_SQLselect = "SELECT sum(mjje)-sum(mdje) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND substring(ccode,1," & Len(Trim(la_paravar(0))) & ") = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  326.                     End Select
  327.                 Else        '辅助项2参数不为*#时
  328.                     Select Case LCase(Name)
  329.                     Case "je_ncye"
  330.                         ls_SQLselect = "SELECT ycye from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  331.                     Case "je_qcye"
  332.                         ls_SQLselect = "SELECT qcye from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  333.                     Case "je_qmye"
  334.                         ls_SQLselect = "SELECT qmye from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  335.                     Case "je_bqjfs"
  336.                         ls_SQLselect = "SELECT mjje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  337.                     Case "je_bqdfs"
  338.                         ls_SQLselect = "SELECT mdje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  339.                     Case "je_ljjfs"
  340.                         ls_SQLselect = "SELECT byjfljje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  341.                     Case "je_ljdfs"
  342.                         ls_SQLselect = "SELECT bydfljje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  343.                     Case "je_njfse"
  344.                         ls_SQLselect = "SELECT byjfljje-bydfljje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  345.                     Case "je_yjfse"
  346.                         ls_SQLselect = "SELECT mjje-mdje from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  347.                     End Select
  348.                 End If
  349.             End If
  350.         End If
  351.         Set lrst_all = New ADODB.Recordset
  352.         lrst_all.CursorLocation = adUseClient
  353.         lrst_all.CursorType = adOpenKeyset
  354.         lrst_all.LockType = adLockBatchOptimistic
  355.         lrst_all.Open ls_SQLselect, Cw_DataEnvi.dataconnect
  356.         If lrst_all.RecordCount > 0 Then
  357.             lrst_all.MoveFirst
  358.             funcResult = lrst_all.Fields(0).Value
  359.         Else
  360.             funcResult = 0
  361.         End If
  362.         lrst_all.Close
  363.         Set lrst_all = Nothing
  364.         
  365.         '处理财务数量数据
  366.     Case "sl_nc", "sl_qc", "sl_qm", "sl_bqjf", "sl_bqdf", "sl_ljjf", "sl_ljdf", "sl_njfs", "sl_yjfs"
  367.         
  368.         ls_year = mf_exchange_nyr(la_paravar(1))
  369.         ls_month = mf_exchange_nyr(la_paravar(2))
  370.         '年月日合法性检查
  371.         If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  372.         '查询字符串赋值
  373.         If la_paravar(3) = "" Then     '辅助项1参数为空时
  374.             Select Case LCase(Name)
  375.             Case "sl_nc"
  376.                 ls_SQLselect = "SELECT ycsl  from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  377.             Case "sl_qc"
  378.                 ls_SQLselect = "SELECT qcsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  379.             Case "sl_qm"
  380.                 ls_SQLselect = "SELECT qmsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  381.             Case "sl_bqjf"
  382.                 ls_SQLselect = "SELECT mjsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  383.             Case "sl_bqdf"
  384.                 ls_SQLselect = "SELECT mdsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  385.             Case "sl_ljjf"
  386.                 ls_SQLselect = "SELECT byjfljsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  387.             Case "sl_ljdf"
  388.                 ls_SQLselect = "SELECT bydfljsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  389.             Case "sl_njfs"
  390.                 ls_SQLselect = "SELECT byjfljsl-bydfljsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  391.             Case "sl_yjfs"
  392.                 ls_SQLselect = "SELECT mjsl-mdsl from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  393.             End Select
  394.         Else           '辅助项1参数不为空时
  395.             '检查辅助项1参数合法性
  396.             iInstr1 = UCase(Left(la_paravar(3), 1))
  397.             If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Then
  398.             Else
  399.                 GoTo err_msg
  400.             End If
  401.             iInstr2 = Right(la_paravar(3), Len(la_paravar(3)) - 1)
  402.             Select Case iInstr1
  403.             Case "P"
  404.                 tStr = "and PersonCode ='" & iInstr2 & "'"
  405.             Case "D"
  406.                 tStr = "and DeptCode ='" & iInstr2 & "'"
  407.             Case "C"
  408.                 tStr = "and CusCode ='" & iInstr2 & "'"
  409.             Case "I"
  410.                 tStr = "and ItemClassCode ='" & iInstr2 & "'"
  411.             Case "J"
  412.                 tStr = "and ItemCode ='" & iInstr2 & "'"
  413.             Case "S"
  414.                 tStr = "and Supplier_Code ='" & iInstr2 & "'"
  415.             End Select
  416.             If la_paravar(4) <> "" Then    '辅助项2参数不为空时
  417.                 '检查辅助项2参数合法性
  418.                 iInstr1 = UCase(Left(la_paravar(4), 1))
  419.                 If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Or iInstr1 = "*" Then
  420.                 Else
  421.                     GoTo err_msg
  422.                 End If
  423.                 iInstr2 = Right(la_paravar(4), Len(la_paravar(4)) - 1)
  424.                 Select Case iInstr1
  425.                 Case "P"
  426.                     tStr = tStr + "and PersonCode ='" & iInstr2 & "'"
  427.                 Case "D"
  428.                     tStr = tStr + "and DeptCode ='" & iInstr2 & "'"
  429.                 Case "C"
  430.                     tStr = tStr + "and CusCode ='" & iInstr2 & "'"
  431.                 Case "I"
  432.                     tStr = tStr + "and ItemClassCode ='" & iInstr2 & "'"
  433.                 Case "J"
  434.                     tStr = tStr + "and ItemCode ='" & iInstr2 & "'"
  435.                 Case "S"
  436.                     tStr = "and Supplier_Code ='" & iInstr2 & "'"
  437.                 End Select
  438.             End If
  439.             If iInstr1 = "*" Then    '辅助项2参数为*时
  440.                 Select Case LCase(Name)
  441.                 Case "sl_nc"
  442.                     ls_SQLselect = "SELECT sum(ycsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  443.                 Case "sl_qc"
  444.                     ls_SQLselect = "SELECT sum(qcsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  445.                 Case "sl_qm"
  446.                     ls_SQLselect = "SELECT sum(qmsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  447.                 Case "sl_bqjf"
  448.                     ls_SQLselect = "SELECT sum(mjsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  449.                 Case "sl_bqdf"
  450.                     ls_SQLselect = "SELECT sum(mdsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  451.                 Case "sl_ljjf"
  452.                     ls_SQLselect = "SELECT sum(byjfljsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  453.                 Case "sl_ljdf"
  454.                     ls_SQLselect = "SELECT sum(bydfljsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  455.                 Case "sl_njfs"
  456.                     ls_SQLselect = "SELECT sum(byjfljsl)-sum(bydfljsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  457.                 Case "sl_yjfs"
  458.                     ls_SQLselect = "SELECT sum(mjsl)-sum(mdsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  459.                 End Select
  460.             Else        '辅助项2参数不为*时
  461.                 Select Case LCase(Name)
  462.                 Case "sl_nc"
  463.                     ls_SQLselect = "SELECT ycsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  464.                 Case "sl_qc"
  465.                     ls_SQLselect = "SELECT qcsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  466.                 Case "sl_qm"
  467.                     ls_SQLselect = "SELECT qmsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  468.                 Case "sl_bqjf"
  469.                     ls_SQLselect = "SELECT mjsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  470.                 Case "sl_bqdf"
  471.                     ls_SQLselect = "SELECT mdsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  472.                 Case "sl_ljjf"
  473.                     ls_SQLselect = "SELECT byjfljsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  474.                 Case "sl_ljdf"
  475.                     ls_SQLselect = "SELECT bydfljsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  476.                 Case "sl_njfs"
  477.                     ls_SQLselect = "SELECT byjfljsl-bydfljsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  478.                 Case "sl_yjfs"
  479.                     ls_SQLselect = "SELECT mjsl-mdsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  480.                 End Select
  481.             End If
  482.         End If
  483.         Set lrst_all = New ADODB.Recordset
  484.         lrst_all.CursorLocation = adUseClient
  485.         lrst_all.CursorType = adOpenKeyset
  486.         lrst_all.LockType = adLockBatchOptimistic
  487.         lrst_all.Open ls_SQLselect, Cw_DataEnvi.dataconnect
  488.         If lrst_all.RecordCount > 0 Then
  489.             lrst_all.MoveFirst
  490.             funcResult = lrst_all.Fields(0).Value
  491.         Else
  492.             funcResult = 0
  493.         End If
  494.         lrst_all.Close
  495.         Set lrst_all = Nothing
  496.         
  497.         '处理财务外币数据
  498.     Case "wb_nc", "wb_qc", "wb_qm", "wb_bqjf", "wb_bqdf", "wb_ljjf", "wb_ljdf", "wb_njfs", "wb_yjfs"
  499.         
  500.         ls_year = mf_exchange_nyr(la_paravar(1))
  501.         ls_month = mf_exchange_nyr(la_paravar(2))
  502.         '年月日合法性检查
  503.         If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  504.         '查询字符串赋值
  505.         If la_paravar(3) = "" Then     '辅助项1参数为空时
  506.             Select Case LCase(Name)
  507.             Case "wb_nc"
  508.                 ls_SQLselect = "SELECT ycwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  509.             Case "wb_qc"
  510.                 ls_SQLselect = "SELECT qcwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  511.             Case "wb_qm"
  512.                 ls_SQLselect = "SELECT qmwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  513.             Case "wb_bqjf"
  514.                 ls_SQLselect = "SELECT mjwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  515.             Case "wb_bqdf"
  516.                 ls_SQLselect = "SELECT mdwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  517.             Case "wb_ljjf"
  518.                 ls_SQLselect = "SELECT byjfljwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  519.             Case "wb_ljdf"
  520.                 ls_SQLselect = "SELECT bydfljwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  521.             Case "wb_njfs"
  522.                 ls_SQLselect = "SELECT byjfljwb-bydfljwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  523.             Case "wb_yjfs"
  524.                 ls_SQLselect = "SELECT mjwb-mdwb from cwzz_accsum WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "'"
  525.             End Select
  526.         Else           '辅助项1参数不为空时
  527.             '检查辅助项1参数合法性
  528.             iInstr1 = UCase(Left(la_paravar(3), 1))
  529.             If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Then
  530.             Else
  531.                 GoTo err_msg
  532.             End If
  533.             iInstr2 = Right(la_paravar(3), Len(la_paravar(3)) - 1)
  534.             Select Case iInstr1
  535.             Case "P"
  536.                 tStr = "and PersonCode ='" & iInstr2 & "'"
  537.             Case "D"
  538.                 tStr = "and DeptCode ='" & iInstr2 & "'"
  539.             Case "C"
  540.                 tStr = "and CusCode ='" & iInstr2 & "'"
  541.             Case "I"
  542.                 tStr = "and ItemClassCode ='" & iInstr2 & "'"
  543.             Case "J"
  544.                 tStr = "and ItemCode ='" & iInstr2 & "'"
  545.             Case "S"
  546.                 tStr = "and Supplier_Code ='" & iInstr2 & "'"
  547.             End Select
  548.             If la_paravar(4) <> "" Then    '辅助项2参数不为空时
  549.                 '检查辅助项2参数合法性
  550.                 iInstr1 = UCase(Left(la_paravar(4), 1))
  551.                 If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Or iInstr1 = "*" Then
  552.                 Else
  553.                     GoTo err_msg
  554.                 End If
  555.                 iInstr2 = Right(la_paravar(4), Len(la_paravar(4)) - 1)
  556.                 Select Case iInstr1
  557.                 Case "P"
  558.                     tStr = tStr + "and PersonCode ='" & iInstr2 & "'"
  559.                 Case "D"
  560.                     tStr = tStr + "and DeptCode ='" & iInstr2 & "'"
  561.                 Case "C"
  562.                     tStr = tStr + "and CusCode ='" & iInstr2 & "'"
  563.                 Case "I"
  564.                     tStr = tStr + "and ItemClassCode ='" & iInstr2 & "'"
  565.                 Case "J"
  566.                     tStr = tStr + "and ItemCode ='" & iInstr2 & "'"
  567.                 Case "S"
  568.                     tStr = "and Supplier_Code ='" & iInstr2 & "'"
  569.                 End Select
  570.             End If
  571.             If iInstr1 = "*" Then    '辅助项2参数为*时
  572.                 Select Case LCase(Name)
  573.                 Case "wb_nc"
  574.                     ls_SQLselect = "SELECT sum(ycwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  575.                 Case "wb_qc"
  576.                     ls_SQLselect = "SELECT sum(qcwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  577.                 Case "wb_qm"
  578.                     ls_SQLselect = "SELECT sum(qmwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  579.                 Case "wb_bqjf"
  580.                     ls_SQLselect = "SELECT sum(mjwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  581.                 Case "wb_bqdf"
  582.                     ls_SQLselect = "SELECT sum(mdwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  583.                 Case "wb_ljjf"
  584.                     ls_SQLselect = "SELECT sum(byjfljwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  585.                 Case "wb_ljdf"
  586.                     ls_SQLselect = "SELECT sum(bydfljwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  587.                 Case "wb_njfs"
  588.                     ls_SQLselect = "SELECT sum(byjfljwb)-sum(bydfljwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  589.                 Case "wb_yjfs"
  590.                     ls_SQLselect = "SELECT sum(mjwb)-sum(mdwb) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  591.                 End Select
  592.             Else        '辅助项2参数不为*时
  593.                 Select Case LCase(Name)
  594.                 Case "wb_nc"
  595.                     ls_SQLselect = "SELECT ycwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  596.                 Case "wb_qc"
  597.                     ls_SQLselect = "SELECT qcwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  598.                 Case "wb_qm"
  599.                     ls_SQLselect = "SELECT qmwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  600.                 Case "wb_bqjf"
  601.                     ls_SQLselect = "SELECT mjwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  602.                 Case "wb_bqdf"
  603.                     ls_SQLselect = "SELECT mdwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  604.                 Case "wb_ljjf"
  605.                     ls_SQLselect = "SELECT byjfljwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  606.                 Case "wb_ljdf"
  607.                     ls_SQLselect = "SELECT bydfljwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  608.                 Case "wb_njfs"
  609.                     ls_SQLselect = "SELECT byjfljwb-bydfljwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  610.                 Case "wb_yjfs"
  611.                     ls_SQLselect = "SELECT mjwb-mdwb from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  612.                 End Select
  613.             End If
  614.         End If
  615.         Set lrst_all = New ADODB.Recordset
  616.         lrst_all.CursorLocation = adUseClient
  617.         lrst_all.CursorType = adOpenKeyset
  618.         lrst_all.LockType = adLockBatchOptimistic
  619.         lrst_all.Open ls_SQLselect, Cw_DataEnvi.dataconnect
  620.         If lrst_all.RecordCount > 0 Then
  621.             lrst_all.MoveFirst
  622.             funcResult = lrst_all.Fields(0).Value
  623.         Else
  624.             funcResult = 0
  625.         End If
  626.         lrst_all.Close
  627.         Set lrst_all = Nothing
  628.         
  629.         '处理辅助核算帐中项目数量数据
  630.     Case "xmsl_bqjf", "xmsl_bqdf", "xmsl_ljjf", "xmsl_ljdf"
  631.         
  632.         ls_year = mf_exchange_nyr(la_paravar(1))
  633.         ls_month = mf_exchange_nyr(la_paravar(2))
  634.         '年月日合法性检查
  635.         If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  636.         '查询字符串赋值
  637.         If la_paravar(3) = "" Then     '辅助项1参数为空时
  638.             GoTo err_msg
  639.         Else           '辅助项1参数不为空时
  640.             '检查辅助项1参数合法性
  641.             iInstr1 = UCase(Left(la_paravar(3), 1))
  642.             If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Then
  643.             Else
  644.                 GoTo err_msg
  645.             End If
  646.             iInstr2 = Right(la_paravar(3), Len(la_paravar(3)) - 1)
  647.             Select Case iInstr1
  648.             Case "P"
  649.                 tStr = "and PersonCode ='" & iInstr2 & "'"
  650.             Case "D"
  651.                 tStr = "and DeptCode ='" & iInstr2 & "'"
  652.             Case "C"
  653.                 tStr = "and CusCode ='" & iInstr2 & "'"
  654.             Case "I"
  655.                 tStr = "and ItemClassCode ='" & iInstr2 & "'"
  656.             Case "J"
  657.                 tStr = "and ItemCode ='" & iInstr2 & "'"
  658.             Case "S"
  659.                 tStr = "and Supplier_Code ='" & iInstr2 & "'"
  660.             End Select
  661.             If la_paravar(4) <> "" Then    '辅助项2参数不为空时
  662.                 '检查辅助项2参数合法性
  663.                 iInstr1 = UCase(Left(la_paravar(4), 1))
  664.                 If iInstr1 = "P" Or iInstr1 = "D" Or iInstr1 = "C" Or iInstr1 = "I" Or iInstr1 = "J" Or iInstr1 = "S" Or iInstr1 = "*" Then
  665.                 Else
  666.                     GoTo err_msg
  667.                 End If
  668.                 iInstr2 = Right(la_paravar(4), Len(la_paravar(4)) - 1)
  669.                 Select Case iInstr1
  670.                 Case "P"
  671.                     tStr = tStr + "and PersonCode ='" & iInstr2 & "'"
  672.                 Case "D"
  673.                     tStr = tStr + "and DeptCode ='" & iInstr2 & "'"
  674.                 Case "C"
  675.                     tStr = tStr + "and CusCode ='" & iInstr2 & "'"
  676.                 Case "I"
  677.                     tStr = tStr + "and ItemClassCode ='" & iInstr2 & "'"
  678.                 Case "J"
  679.                     tStr = tStr + "and ItemCode ='" & iInstr2 & "'"
  680.                 Case "S"
  681.                     tStr = "and Supplier_Code ='" & iInstr2 & "'"
  682.                 End Select
  683.             End If
  684.             If iInstr1 = "*" Then    '辅助项2参数为*时
  685.                 Select Case LCase(Name)
  686.                 Case "xmsl_bqjf"
  687.                     ls_SQLselect = "SELECT sum(ItemMjsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  688.                 Case "xmsl_bqdf"
  689.                     ls_SQLselect = "SELECT sum(ItemMdsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  690.                 Case "xmsl_ljjf"
  691.                     ls_SQLselect = "SELECT sum(ItemByljjfsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  692.                 Case "xmsl_ljdf"
  693.                     ls_SQLselect = "SELECT sum(ItemByljdfsl) from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  694.                 End Select
  695.             Else        '辅助项2参数不为*时
  696.                 Select Case LCase(Name)
  697.                 Case "xmsl_bqjf"
  698.                     ls_SQLselect = "SELECT ItemMjsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  699.                 Case "xmsl_bqdf"
  700.                     ls_SQLselect = "SELECT ItemMdsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  701.                 Case "xmsl_ljjf"
  702.                     ls_SQLselect = "SELECT ItemByljjfsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  703.                 Case "xmsl_ljdf"
  704.                     ls_SQLselect = "SELECT ItemByljdfsl from cwzz_accsumassi WHERE year =" & ls_year & " and period= " & ls_month & " AND ccode = '" & Trim(la_paravar(0)) & "' " & tStr & " "
  705.                 End Select
  706.             End If
  707.         End If
  708.         Set lrst_all = New ADODB.Recordset
  709.         lrst_all.CursorLocation = adUseClient
  710.         lrst_all.CursorType = adOpenKeyset
  711.         lrst_all.LockType = adLockBatchOptimistic
  712.         lrst_all.Open ls_SQLselect, Cw_DataEnvi.dataconnect
  713.         If lrst_all.RecordCount > 0 Then
  714.             lrst_all.MoveFirst
  715.             funcResult = lrst_all.Fields(0).Value
  716.         Else
  717.             funcResult = 0
  718.         End If
  719.         lrst_all.Close
  720.         Set lrst_all = Nothing
  721.         
  722.        
  723.     Case "date_y"
  724.         '***************************************************
  725.         If MDI_frame.ml_new_lx = 1 Then
  726.             funcResult = Year(Xtrq) & "年"
  727.         Else
  728.             '***********************************************
  729.             funcResult = la_paravar(0) & "年"
  730.         End If
  731.     Case "date_m"
  732.         '***************************************************
  733.         If MDI_frame.ml_new_lx = 1 Then
  734.             funcResult = Month(Xtrq) & "月"
  735.         Else
  736.             '***********************************************
  737.             funcResult = la_paravar(0) & "月"
  738.         End If
  739.     Case "date_d"
  740.         '***************************************************
  741.         If MDI_frame.ml_new_lx = 1 Then
  742.             funcResult = Day(Xtrq) & "日"
  743.         Else
  744.             '***********************************************
  745.             funcResult = la_paravar(0) & "日"
  746.         End If
  747.     Case "getdatafpage"
  748.         
  749.         Cell1.DoGetPageCellData Val(la_paravar(2)) - 1, Val(la_paravar(1)) - 1, Val(la_paravar(0)) - 1, funcResult
  750.     Case "enterprise"
  751.         funcResult = "编制单位: " & Xtdwm
  752.         
  753.     Case "operator"
  754.         funcResult = "操作员: " & Xtczy
  755.         
  756.     Case "read_data"
  757.         Dim ll_nr_len As Long
  758.         Dim ls_filename As String, ll_filenumber As Long
  759.         Dim lrst_open As ADODB.Recordset
  760.         Dim laby_nr() As Byte, ls_path As String
  761.         Dim ls_ny As String
  762.         MDI_frame.m_recompute.Enabled = False
  763.         If la_paravar(2) = "" Or la_paravar(3) = "" Then      '年?月参数为空判断
  764.             MsgBox "年或月参数不能为空!"
  765.             funcResult = CVErr(funcResult)
  766.             Exit Sub
  767.         Else        '年?月参数均不为空
  768.             ls_year = mf_exchange_nyr(la_paravar(2))   '年月转换
  769.             ls_month = mf_exchange_nyr(la_paravar(3))
  770.             '年月日有效性校验
  771.             If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  772.         End If
  773.         ls_ny = ls_year & "-" & ls_month
  774.         Set lrst_open = New ADODB.Recordset
  775.         ls_select = "select report_nr from dzbb_bb where system_code='" & Trim(la_paravar(0)) _
  776.         & "' and report_model_id='" & Trim(la_paravar(1)) _
  777.         & "' and report_time='" & ls_ny & "'"
  778.         lrst_open.Open ls_select, Cw_DataEnvi.dataconnect, adOpenDynamic, adLockOptimistic, adCmdText
  779.         If lrst_open.EOF = True Then
  780.             MsgBox Trim(la_paravar(0)) & "系统" & Trim(la_paravar(1)) & "报表" & ls_ny & "年月数据不存在!"
  781.             funcResult = CVErr(funcResult)
  782.             lrst_open.Close
  783.             Set lrst_open = Nothing
  784.             Exit Sub
  785.         End If
  786.         lrst_open.MoveFirst
  787.         ll_nr_len = lrst_open("report_nr").ActualSize
  788.         ReDim laby_nr(ll_nr_len)
  789.         laby_nr = lrst_open("report_nr").GetChunk(ll_nr_len)
  790.         ls_path = App.Path
  791.         If Right(ls_path, 1) <> "" Then
  792.             ls_path = ls_path & ""
  793.         End If
  794.         ls_filename = ls_path & "hbbb_tmp.cll"
  795.         ll_filenumber = FreeFile()
  796.         Open ls_filename For Binary As #ll_filenumber
  797.         Put #ll_filenumber, 1, laby_nr
  798.         Close #ll_filenumber
  799.         Cell1.DoAppendPageFromFile ls_filename, 0, 1
  800.         Cell1.DoSetPageLabel Cell1.DoGetTotalPages - 1, "基础数据页"
  801.         Kill ls_filename
  802.         lrst_open.Close
  803.         Set lrst_open = Nothing
  804.         
  805.     Case "sql_odbc"
  806.         Dim temp_iia As Long, temp_jja As Long
  807.         Dim tcols As Variant, trows As Variant
  808.         Dim sqlstringa
  809.         temp_iia = 0
  810.         For i = 0 To Cell1.Rows - 1
  811.             For j = 0 To Cell1.Cols - 1
  812.                 If Cell1.IsFormulaCell(j, i) = True Then
  813.                     Cell1.DoGetFormula j, i, sqlstringa
  814.                     If InStr(1, sqlstringa, la_paravar(0)) <> 0 Then
  815.                         temp_iia = 1
  816.                         Exit For
  817.                     End If
  818.                 End If
  819.             Next j
  820.             If temp_iia <> 0 Then
  821.                 Exit For
  822.             End If
  823.         Next i
  824.         
  825.         If temp_iia = 0 Then
  826.             i = Cell1.DoGetCurrentRow
  827.             temp_iia = i
  828.             temp_jja = Cell1.DoGetCurrentCol
  829.         Else
  830.             temp_iia = i
  831.             temp_jja = j
  832.         End If
  833.         Dim lqq_table As Variant
  834.         Dim con_str As String
  835.         con_str = "DSN=" & Trim(la_paravar(1)) & ";UID=" & la_paravar(2) & ";PWD=" & la_paravar(3) & ""
  836.         If Trim(la_paravar(1)) <> "" Then
  837.             If Cell1.DoOpenODBCDbase(con_str, lqq_table) = False Then Exit Sub
  838.         End If
  839.         Cell1.DoDumpDbaseData la_paravar(0), temp_jja, temp_iia + 1, 0, True, tcols, trows
  840.         
  841.         '使用SQL语句查询
  842.     Case "sql_all"
  843.         Dim ret As New ADODB.Recordset
  844.         Dim temp_ii As Integer, temp_jj As Integer
  845.         Dim sum_data() As Double
  846.         
  847.         temp_ii = 0
  848.         For i = 0 To Cell1.Rows - 1    '取得公式所在的行?列号
  849.             For j = 0 To Cell1.Cols - 1
  850.                 If Cell1.IsFormulaCell(j, i) = True Then
  851.                     Cell1.DoGetFormula j, i, sqlstring
  852.                     If InStr(1, sqlstring, la_paravar(0)) <> 0 Then
  853.                         temp_ii = 1
  854.                         Exit For
  855.                     End If
  856.                 End If
  857.             Next j
  858.             If temp_ii <> 0 Then
  859.                 Exit For
  860.             End If
  861.         Next i
  862.         
  863.         If temp_ii = 0 Then
  864.             i = Cell1.DoGetCurrentRow
  865.             temp_ii = i
  866.             temp_jj = Cell1.DoGetCurrentCol
  867.         Else
  868.             temp_ii = i
  869.             temp_jj = j
  870.         End If
  871.         If la_paravar(1) = "" Then      '年月字段名为空
  872.             ls_SQLselect = la_paravar(0)
  873.         Else        '年月字段名不为空
  874.             ls_year = mf_exchange_nyr(la_paravar(2))   '年月转换
  875.             ls_month = mf_exchange_nyr(la_paravar(3))
  876.             '年月日有效性校验
  877.             If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  878.             
  879.             iInstr1 = InStr(1, la_paravar(1), ",")
  880.             iInstr2 = InStr(1, la_paravar(1), "$")
  881.             
  882.             If iInstr2 > 0 Then  '去除la_paravar(1)中的"$"
  883.                 la_paravar(1) = Left(la_paravar(1), Len(la_paravar(1)) - 1)
  884.             End If
  885.             
  886.             If iInstr2 > 0 Then          '数据库中年月字段为字符型
  887.                 If iInstr1 > 0 Then      '数据库中年月字段为两个字段
  888.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  889.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  890.                     If InStr(1, la_paravar(0), "where") Then
  891.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " ='" & ls_year & "' and " & ls_MonthName & " = '" & ls_month & "'"
  892.                     Else
  893.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " ='" & ls_year & "'  and " & ls_MonthName & "= '" & ls_month & "'"
  894.                     End If
  895.                 Else
  896.                     If InStr(1, la_paravar(0), "where") Then
  897.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  898.                     Else
  899.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  900.                     End If
  901.                 End If
  902.             Else                         '数据库中年月字段为数字型
  903.                 If iInstr1 > 0 Then      '数据库中年月字段为两个字段
  904.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  905.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  906.                     
  907.                     If InStr(1, la_paravar(0), "where") Then
  908.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " =" & CInt(ls_year) & " and " & ls_MonthName & " = " & CInt(ls_month) & ""
  909.                     Else
  910.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " =" & CInt(ls_year) & "  and " & ls_MonthName & "= " & CInt(ls_month) & ""
  911.                     End If
  912.                 Else
  913.                     If InStr(1, la_paravar(0), "where") Then
  914.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " =" & CInt(ls_year) & "" & CInt(ls_month) & ""
  915.                     Else
  916.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " =" & CInt(ls_year) & "" & ls_month & ""
  917.                     End If
  918.                 End If
  919.             End If
  920.         End If
  921.         ret.Open ls_SQLselect, Cw_DataEnvi.dataconnect, adOpenKeyset, adLockPessimistic, 8
  922.         If ret.RecordCount = 0 Then
  923.             '           MsgBox "表中无数据!"
  924.             Do While i < Cell1.Rows
  925.                 For j = 0 To Cell1.Cols - 1
  926.                     Cell1.DoSetCellData j, i, Empty
  927.                     Cell1.DoClearLine j, i, j, i, 2
  928.                     Cell1.DoClearLine j, i, j, i, 3
  929.                     Cell1.DoClearLine j, i + 1, j, i + 1, 4
  930.                 Next j
  931.                 i = i + 1
  932.             Loop
  933.             Exit Sub
  934.         End If
  935.         If ret.RecordCount > 0 Then
  936.             If Cell1.Cols - j < ret.Fields.Count Then
  937.                 Cell1.DoAppendCol ret.Fields.Count + j - Cell1.Cols
  938.             End If
  939.             If Cell1.Rows - i < ret.RecordCount + 1 Then
  940.                 Cell1.DoAppendRow ret.RecordCount + i - Cell1.Rows + 2
  941.             End If
  942.             Cell1.DoDrawLine temp_jj, i, temp_jj, i, 2, 1, 0
  943.             
  944.             ReDim sum_data(1, ret.Fields.Count)
  945.             If la_paravar(4) = "1" Then    '画字段名
  946.                 For j = 0 To ret.Fields.Count - 1
  947.                     
  948.                     Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 4, 1, 0
  949.                     Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 3, 1, 0
  950.                     Cell1.DoSetCellData temp_jj + j, i, ret.Fields.Item(j).Name
  951.                 Next j
  952.                 Do While Not ret.EOF And i < Cell1.Rows - 1
  953.                     Cell1.DoDrawLine temp_jj, i + 1, temp_jj, i + 1, 2, 1, 0
  954.                     For j = 0 To ret.Fields.Count - 1
  955.                         sqlstring = ret.Fields(ret.Fields.Item(j).Name)
  956.                         If IsNumeric(sqlstring) Then
  957.                             sum_data(1, j) = sum_data(1, j) + sqlstring
  958.                         End If
  959.                         If IsNull(sqlstring) Then
  960.                             sqlstring = ret.Fields(ret.Fields.Item(j).Name)
  961.                         Else
  962.                             sqlstring = CStr(ret.Fields(ret.Fields.Item(j).Name))
  963.                         End If
  964.                         Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 4, 1, 0
  965.                         Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 3, 1, 0
  966.                         Cell1.DoSetCellData temp_jj + j, i + 1, sqlstring
  967.                     Next j
  968.                     i = i + 1
  969.                     ret.MoveNext
  970.                 Loop
  971.                 For j = 0 To ret.Fields.Count - 1
  972.                     If j = 0 Then
  973.                         sqlstring = "合    计"
  974.                     Else
  975.                         sqlstring = CStr(sum_data(1, j))
  976.                     End If
  977.                     Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 4, 1, 0
  978.                     Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 3, 1, 0
  979.                     Cell1.DoSetCellData temp_jj + j, i + 1, sqlstring
  980.                 Next j
  981.                 For j = 0 To ret.Fields.Count - 1
  982.                     Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 5, 1, 0
  983.                 Next j
  984.                 ret.Close
  985.                 i = i + 1
  986.             Else
  987.                 Do While Not ret.EOF And i < Cell1.Rows
  988.                     Cell1.DoDrawLine temp_jj, i, temp_jj, i, 2, 1, 0
  989.                     For j = 0 To ret.Fields.Count - 1
  990.                         sqlstring = ret.Fields(ret.Fields.Item(j).Name)
  991.                         If IsNumeric(sqlstring) Then
  992.                             sum_data(1, j) = sum_data(1, j) + sqlstring
  993.                         End If
  994.                         If IsNull(sqlstring) Then
  995.                             sqlstring = ret.Fields(ret.Fields.Item(j).Name)
  996.                         Else
  997.                             sqlstring = CStr(ret.Fields(ret.Fields.Item(j).Name))
  998.                         End If
  999.                         Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 4, 1, 0
  1000.                         Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 3, 1, 0
  1001.                         Cell1.DoSetCellData temp_jj + j, i, sqlstring
  1002.                     Next j
  1003.                     i = i + 1
  1004.                     ret.MoveNext
  1005.                 Loop
  1006.                 For j = 0 To ret.Fields.Count - 1
  1007.                     If j = 0 Then
  1008.                         sqlstring = "合    计"
  1009.                     Else
  1010.                         sqlstring = CStr(sum_data(1, j))
  1011.                     End If
  1012.                     Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 4, 1, 0
  1013.                     Cell1.DoDrawLine temp_jj + j, i, temp_jj + j, i, 3, 1, 0
  1014.                     Cell1.DoSetCellData temp_jj + j, i, sqlstring
  1015.                 Next j
  1016.                 For j = 0 To ret.Fields.Count - 1
  1017.                     Cell1.DoDrawLine temp_jj + j, i + 1, temp_jj + j, i + 1, 4, 1, 0
  1018.                 Next j
  1019.                 ret.Close
  1020.             End If
  1021.             i = i + 1
  1022.             Do While i < Cell1.Rows    '清除模版多余的表线
  1023.                 For j = 0 To Cell1.Cols - 1
  1024.                     Cell1.DoSetCellData temp_jj + j, i, Empty
  1025.                     Cell1.DoClearLine temp_jj + j, i, temp_jj + j, i, 2
  1026.                     Cell1.DoClearLine temp_jj + j, i, temp_jj + j, i, 3
  1027.                     Cell1.DoClearLine temp_jj + j, i + 1, temp_jj + j, i + 1, 4
  1028.                 Next j
  1029.                 i = i + 1
  1030.             Loop
  1031.         End If
  1032.         Cell1.DoGetCellData temp_jj, temp_ii, funcResult
  1033.         
  1034.     Case "sql_rowcol"
  1035.         Dim ret_rowcol As New ADODB.Recordset
  1036.         Dim temp_iii As Integer, temp_jjj As Integer
  1037.         
  1038.         temp_iii = 0
  1039.         For i = 0 To Cell1.Rows - 1    '取得公式所在的行?列号
  1040.             For j = 0 To Cell1.Cols - 1
  1041.                 If Cell1.IsFormulaCell(j, i) = True Then
  1042.                     Cell1.DoGetFormula j, i, sqlstring
  1043.                     If InStr(1, sqlstring, la_paravar(0)) <> 0 Then
  1044.                         temp_iii = 1
  1045.                         Exit For
  1046.                     End If
  1047.                 End If
  1048.             Next j
  1049.             If temp_iii <> 0 Then
  1050.                 Exit For
  1051.             End If
  1052.         Next i
  1053.         
  1054.         If temp_iii = 0 Then
  1055.             i = Cell1.DoGetCurrentRow
  1056.             temp_iii = i
  1057.             temp_jjj = Cell1.DoGetCurrentCol
  1058.         Else
  1059.             temp_iii = i
  1060.             temp_jjj = j
  1061.         End If
  1062.         If la_paravar(1) = "" Then      '年月字段名为空
  1063.             ls_SQLselect = la_paravar(0)
  1064.         Else        '年月字段名不为空
  1065.             ls_year = mf_exchange_nyr(la_paravar(2))   '年月转换
  1066.             ls_month = mf_exchange_nyr(la_paravar(3))
  1067.             '年月日有效性校验
  1068.             If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  1069.             
  1070.             iInstr1 = InStr(1, la_paravar(1), ",")
  1071.             iInstr2 = InStr(1, la_paravar(1), "$")
  1072.             
  1073.             If iInstr2 > 0 Then  '去除la_paravar(1)中的"$"
  1074.                 la_paravar(1) = Left(la_paravar(1), Len(la_paravar(1)) - 1)
  1075.             End If
  1076.             
  1077.             If iInstr2 > 0 Then          '数据库中年月字段为字符型
  1078.                 If iInstr1 > 0 Then      '数据库中年月字段为两个字段
  1079.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  1080.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  1081.                     If InStr(1, la_paravar(0), "where") Then
  1082.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " ='" & ls_year & "' and " & ls_MonthName & " = '" & ls_month & "'"
  1083.                     Else
  1084.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " ='" & ls_year & "'  and " & ls_MonthName & "= '" & ls_month & "'"
  1085.                     End If
  1086.                 Else
  1087.                     If InStr(1, la_paravar(0), "where") Then
  1088.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  1089.                     Else
  1090.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  1091.                     End If
  1092.                 End If
  1093.             Else                         '数据库中年月字段为数字型
  1094.                 If iInstr1 > 0 Then      '数据库中年月字段为两个字段
  1095.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  1096.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  1097.                     
  1098.                     If InStr(1, la_paravar(0), "where") Then
  1099.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " =" & CInt(ls_year) & " and " & ls_MonthName & " = " & CInt(ls_month) & ""
  1100.                     Else
  1101.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " =" & CInt(ls_year) & "  and " & ls_MonthName & "= " & CInt(ls_month) & ""
  1102.                     End If
  1103.                 Else
  1104.                     If InStr(1, la_paravar(0), "where") Then
  1105.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " =" & CInt(ls_year) & "" & CInt(ls_month) & ""
  1106.                     Else
  1107.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " =" & CInt(ls_year) & "" & ls_month & ""
  1108.                     End If
  1109.                 End If
  1110.             End If
  1111.         End If
  1112.         ret_rowcol.Open ls_SQLselect, Cw_DataEnvi.dataconnect, adOpenKeyset, adLockPessimistic, 8
  1113.         If ret_rowcol.RecordCount = 0 Then
  1114.             
  1115.         End If
  1116.         If ret_rowcol.RecordCount > 0 Then
  1117.             If Cell1.Cols - j < ret_rowcol.Fields.Count Then
  1118.                 Cell1.DoAppendCol ret_rowcol.Fields.Count + j - Cell1.Cols
  1119.             End If
  1120.             If Cell1.Rows - i < ret_rowcol.RecordCount + 1 Then
  1121.                 Cell1.DoAppendRow ret_rowcol.RecordCount + i - Cell1.Rows + 1
  1122.             End If
  1123.             
  1124.             Do While Not ret_rowcol.EOF And i < Cell1.Rows
  1125.                 For j = 0 To ret_rowcol.Fields.Count - 1
  1126.                     sqlstring = ret_rowcol.Fields(ret_rowcol.Fields.Item(j).Name)
  1127.                     Cell1.DoSetCellData temp_jjj + j, i, sqlstring
  1128.                 Next j
  1129.                 i = i + 1
  1130.                 ret_rowcol.MoveNext
  1131.             Loop
  1132.             ret_rowcol.Close
  1133.             i = i + 1
  1134.         End If
  1135.         Cell1.DoGetCellData temp_jjj, temp_iii, funcResult
  1136.         
  1137.     Case "sql_cell", "sql_col", "sql_row"
  1138.         If la_paravar(1) = "" Then      '年月字段名为空
  1139.             ls_SQLselect = la_paravar(0)
  1140.         Else        '年月字段名不为空
  1141.             ls_year = mf_exchange_nyr(la_paravar(2))
  1142.             ls_month = mf_exchange_nyr(la_paravar(3))
  1143.             If mf_check_nyr(ls_year, ls_month) Then funcResult = CVErr(funcResult): Exit Sub
  1144.             
  1145.             iInstr1 = InStr(1, la_paravar(1), ",")
  1146.             iInstr2 = InStr(1, la_paravar(1), "$")
  1147.             
  1148.             If iInstr2 > 0 Then
  1149.                 la_paravar(1) = Left(la_paravar(1), Len(la_paravar(1)) - 1)
  1150.             End If
  1151.             
  1152.             If iInstr2 > 0 Then
  1153.                 If iInstr1 > 0 Then
  1154.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  1155.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  1156.                     If InStr(1, la_paravar(0), "where") Then
  1157.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " ='" & ls_year & "' and " & ls_MonthName & " = '" & ls_month & "'"
  1158.                     Else
  1159.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " ='" & ls_year & "'  and " & ls_MonthName & "= '" & ls_month & "'"
  1160.                     End If
  1161.                 Else
  1162.                     If InStr(1, la_paravar(0), "where") Then
  1163.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  1164.                     Else
  1165.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " ='" & ls_year & "-" & ls_month & "'"
  1166.                     End If
  1167.                 End If
  1168.             Else
  1169.                 If iInstr1 > 0 Then
  1170.                     ls_YearName = Left(la_paravar(1), iInstr1 - 1)
  1171.                     ls_MonthName = Right(la_paravar(1), Len(la_paravar(1)) - iInstr1)
  1172.                     
  1173.                     If InStr(1, la_paravar(0), "where") Then
  1174.                         ls_SQLselect = la_paravar(0) & " and " & ls_YearName & " =" & CInt(ls_year) & " and " & ls_MonthName & " = " & CInt(ls_month) & ""
  1175.                     Else
  1176.                         ls_SQLselect = la_paravar(0) & " where " & ls_YearName & " =" & CInt(ls_year) & "  and " & ls_MonthName & "= " & CInt(ls_month) & ""
  1177.                     End If
  1178.                 Else
  1179.                     If InStr(1, la_paravar(0), "where") Then
  1180.                         ls_SQLselect = la_paravar(0) & " and " & la_paravar(1) & " =" & CInt(ls_year) & "" & CInt(ls_month) & ""
  1181.                     Else
  1182.                         ls_SQLselect = la_paravar(0) & " where " & la_paravar(1) & " =" & CInt(ls_year) & "" & ls_month & ""
  1183.                     End If
  1184.                 End If
  1185.             End If
  1186.         End If
  1187.         Set lrst_all = New ADODB.Recordset
  1188.         lrst_all.CursorLocation = adUseClient
  1189.         lrst_all.CursorType = adOpenKeyset
  1190.         lrst_all.LockType = adLockBatchOptimistic
  1191.         lrst_all.Open ls_SQLselect, Cw_DataEnvi.dataconnect
  1192.         If lrst_all.RecordCount > 0 Then
  1193.             If LCase(Name) = "sql_cell" Then
  1194.                 lrst_all.MoveFirst
  1195.                 sqlstring = lrst_all.Fields(0).Value
  1196.                 funcResult = sqlstring
  1197.             ElseIf LCase(Name) = "sql_col" Then
  1198.                 lrst_all.MoveFirst
  1199.                 funcResult = lrst_all.Fields(0).Value
  1200.                 lrst_all.MoveNext
  1201.                 ls_row = Cell1.DoGetCurrentRow + 1
  1202.                 ls_col = Cell1.DoGetCurrentCol
  1203.                 Do While Not lrst_all.EOF
  1204.                     sqlstring = lrst_all.Fields(0).Value
  1205.                     Cell1.DoSetCellData ls_col, ls_row, sqlstring
  1206.                     lrst_all.MoveNext
  1207.                     ls_row = ls_row + 1
  1208.                 Loop
  1209.                 Cell1.DoRedrawAll
  1210.             ElseIf LCase(Name) = "sql_row" Then
  1211.                 lrst_all.MoveFirst
  1212.                 funcResult = lrst_all.Fields(0).Value
  1213.                 ls_row = Cell1.DoGetCurrentRow
  1214.                 ls_col = Cell1.DoGetCurrentCol + 1
  1215.                 
  1216.                 lrst_all.MoveNext
  1217.                 Do While Not lrst_all.EOF
  1218.                     sqlstring = lrst_all.Fields(0).Value
  1219.                     Cell1.DoSetCellData ls_col, ls_row, sqlstring
  1220.                     lrst_all.MoveNext
  1221.                     ls_col = ls_col + 1
  1222.                 Loop
  1223.                 
  1224.                 Cell1.DoRedrawAll
  1225.             End If
  1226.         Else
  1227.             funcResult = 0
  1228.         End If
  1229.         lrst_all.Close
  1230.         Set lrst_all = Nothing
  1231.         
  1232.     Case "save_data"
  1233.         ls_select = "要增加" & la_paravar(0) & "数据表记录吗?"
  1234.         If MsgBox(ls_select, vbYesNo + vbQuestion, "提示信息") = vbNo Then
  1235.             Exit Sub
  1236.         Else
  1237.             '读取第一个单元格的列?行
  1238.             iInstr1 = InStr(1, la_paravar(1), "$")
  1239.             tStr = Mid(la_paravar(1), 1, iInstr1 - 1) '截取第一个单元
  1240.             ls_col = Asc(UCase(Mid(tStr, 1, 1))) - 65 '将字母转换成数字
  1241.             ls_row = Mid(tStr, 2, Len(tStr) - 1) - 1
  1242.             Cell1.DoGetCellData ls_col, ls_row, sqlstring
  1243.             ls_select = "select * from " & la_paravar(0) & ""
  1244.             Set lrst_all = New ADODB.Recordset
  1245.             lrst_all.CursorLocation = adUseClient
  1246.             lrst_all.CursorType = adOpenDynamic
  1247.             lrst_all.LockType = adLockOptimistic
  1248.             lrst_all.Open ls_select, Cw_DataEnvi.dataconnect
  1249.             iInstr2 = lrst_all.Fields(0).Name   '读取数据表的第一个字段名称
  1250.             lrst_all.Close
  1251.             '查找与第一个单元格内容相等的记录
  1252.             ls_select = "select * from " & la_paravar(0) & " where " & iInstr2 & " = '" & sqlstring & "'"
  1253.             lrst_all.Open ls_select, Cw_DataEnvi.dataconnect
  1254.             If lrst_all.EOF Then   '无相等的记录
  1255.                 lrst_all.AddNew
  1256.                 lrst_all.Fields(0).Value = sqlstring
  1257.             Else                   '有相等的记录
  1258.                 lrst_all.Fields(0).Value = sqlstring
  1259.             End If
  1260.             i = 1
  1261.             iInstr2 = la_paravar(1)
  1262.             Do While iInstr1 <> 0       '用循环从字符串中截取第一个单元以后的单元
  1263.                 iInstr2 = Mid(iInstr2, iInstr1 + 1, Len(iInstr2))
  1264.                 iInstr1 = InStr(1, iInstr2, "$")
  1265.                 If iInstr1 <> 0 Then
  1266.                     tStr = Mid(iInstr2, 1, iInstr1 - 1)
  1267.                 Else
  1268.                     tStr = iInstr2
  1269.                 End If
  1270.                 ls_col = Asc(UCase(Mid(tStr, 1, 1))) - 65
  1271.                 ls_row = Mid(tStr, 2, Len(tStr) - 1) - 1
  1272.                 Cell1.DoGetCellData ls_col, ls_row, sqlstring
  1273.                 lrst_all.Fields(i).Value = sqlstring
  1274.                 i = i + 1
  1275.             Loop
  1276.             lrst_all.Update
  1277.             lrst_all.Close
  1278.             Set lrst_all = Nothing
  1279.         End If
  1280.     End Select
  1281.     Exit Sub
  1282. err_msg:
  1283.     MsgBox "公式输入错误,请仔细检查!", vbOKOnly + vbExclamation, "提示信息——百利/ERP5.0-电子报表"
  1284.     funcResult = CVErr(funcResult)
  1285. End Sub
  1286. Private Function PowerSupply(str_MonYear As String, str_unitName As String) As Single
  1287.     On Error GoTo errExecute
  1288.     
  1289.     Dim int_Temp As Integer
  1290.     Dim str_Sqltemp As String
  1291.     Dim str_Temp As String
  1292.     Dim rst_temp As New ADODB.Recordset
  1293.     Dim str_ItemCode As String
  1294.     Dim str_UnitCode As String
  1295.     Dim Bln_LeftPage As Boolean
  1296.     Dim str_UnitCodeForSum As String
  1297.     Dim Sng_SumTemp  As Single
  1298.     Dim int_OtherTemp As Integer
  1299.     Dim Str_OtherSqltemp As String
  1300.     Dim rst_Othertemp As New ADODB.Recordset
  1301.     
  1302.     Dim rst_FactCode As New ADODB.Recordset
  1303.     Dim i As Integer
  1304.     
  1305.     '''''''''''''''''
  1306.     Dim str_NowFactCode As String
  1307.     Dim Sng_SumTotal As Single '总公司电量
  1308.     Dim Sng_SumFenQi As Single '期的总电量
  1309.     Dim Sng_SumOtherUnit As Single '其它单元的总电量
  1310.     Dim Sng_FenQiUnit As Single    '当前期电量
  1311.     Dim Sng_SumTotalSunHao As Single '总损耗
  1312.     Dim Sng_SumOtherUnitSunHao As Single '其它单位总损耗
  1313.     Dim Sng_FenQISunHao As Single        '当前期的损耗
  1314.     Dim Sng_SumDongLi As Single          '当前动力总电量
  1315.     Dim Sng_SumDongLiSunhao As Single '动力损耗
  1316.     
  1317.     '''''''''''''''''
  1318.     
  1319.     Dim Mon As String
  1320.     Dim Year As String
  1321.     Dim YearMon As String
  1322.     
  1323.     Year = Mid(Trim(str_MonYear), 1, 4)
  1324.     Mon = Mid(Trim(str_MonYear), 5, 2)
  1325.     Mon = Trim(Str(Val(Mon) - 1))
  1326.     If Len(Mon) <> 2 Then
  1327.         Mon = "0" & Mon
  1328.     End If
  1329.     If Val(Mon) = 0 Then
  1330.         Year = Str(Val(Year) - 1)
  1331.         Mon = "12"
  1332.     End If
  1333.     YearMon = Year & Mon
  1334.     
  1335.     
  1336.     ''''''''''''''''''''''''''''''''''''''''''''''
  1337.     ''''''''''''''''进入总电量操作
  1338.     
  1339.     str_Sqltemp = "SELECT AA.ItemMuti * (ISNULL(AA.Reading, 0) - ISNULL" & _
  1340.     " (((SELECT DL_monthElectChild.Reading " & _
  1341.     " FROM DL_monthElect INNER JOIN " & _
  1342.     " DL_monthElectChild ON " & _
  1343.     " DL_monthElect.ID = DL_monthElectChild.ID INNER JOIN " & _
  1344.     " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1345.     " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1346.     " DL_item ON DL_monthElectChild.ItemCode = DL_item.ItemCode AND " & _
  1347.     " DL_factory.FactCode = DL_item.FactCode AND " & _
  1348.     " DL_unit.UnitCode = DL_item.UnitCode " & _
  1349.     " WHERE (DL_monthElect.Yearmon = '" & YearMon & "') AND " & _
  1350.     " (DL_unit.UnitName LIKE '%总公司%') AND " & _
  1351.     " (DL_monthElectChild.ItemCode = AA.ItemCode))), 0)) AS REMONSTRATE, " & _
  1352.     " DL_item.ItemCode , DL_unit.UnitName " & _
  1353.     " FROM DL_monthElect INNER JOIN  " & _
  1354.     " DL_monthElectChild AA ON DL_monthElect.ID = AA.ID INNER JOIN " & _
  1355.     " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1356.     " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1357.     " DL_item ON AA.ItemCode = DL_item.ItemCode AND " & _
  1358.     " DL_factory.FactCode = DL_item.FactCode AND " & _
  1359.     " DL_unit.UnitCode = DL_item.UnitCode " & _
  1360.     " WHERE (DL_monthElect.Yearmon = '" & str_MonYear & "') AND (DL_unit.UnitName LIKE '%总公司%') "
  1361.     Set rst_temp = Cw_DataEnvi.dataconnect.Execute(str_Sqltemp)
  1362.     Sng_SumTotal = 0
  1363.     If rst_temp.RecordCount <> 0 Then
  1364.         For int_Temp = 1 To rst_temp.RecordCount
  1365.             Sng_SumTotal = Sng_SumTotal + rst_temp.Fields(0).Value
  1366.             rst_temp.MoveNext
  1367.         Next int_Temp
  1368.     End If
  1369.     rst_temp.Close
  1370.     '''''''''''''''''''   求期的总和电量
  1371.     
  1372.     str_Sqltemp = "SELECT AA.ItemMuti * (ISNULL(AA.Reading, 0) - ISNULL" & _
  1373.     " (((SELECT DL_monthElectChild.Reading " & _
  1374.     " FROM DL_monthElect INNER JOIN " & _
  1375.     " DL_monthElectChild ON " & _
  1376.     " DL_monthElect.ID = DL_monthElectChild.ID INNER JOIN " & _
  1377.     " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1378.     " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1379.     " DL_item ON DL_monthElectChild.ItemCode = DL_item.ItemCode AND " & _
  1380.     " DL_factory.FactCode = DL_item.FactCode AND " & _
  1381.     " DL_unit.UnitCode = DL_item.UnitCode " & _
  1382.     " WHERE (DL_monthElect.Yearmon = '" & YearMon & "') AND " & _
  1383.     " (DL_unit.UnitName LIKE '%期%') AND " & _
  1384.     " (DL_monthElectChild.ItemCode = AA.ItemCode))), 0)) AS REMONSTRATE, " & _
  1385.     " DL_item.ItemCode , DL_unit.UnitName " & _
  1386.     " FROM DL_monthElect INNER JOIN  " & _
  1387.     " DL_monthElectChild AA ON DL_monthElect.ID = AA.ID INNER JOIN " & _
  1388.     " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1389.     " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1390.     " DL_item ON AA.ItemCode = DL_item.ItemCode AND " & _
  1391.     " DL_factory.FactCode = DL_item.FactCode AND " & _
  1392.     " DL_unit.UnitCode = DL_item.UnitCode " & _
  1393.     " WHERE (DL_monthElect.Yearmon = '" & str_MonYear & "') AND (DL_unit.UnitName LIKE '%期%') "
  1394.     Set rst_temp = Cw_DataEnvi.dataconnect.Execute(str_Sqltemp)
  1395.     Sng_SumFenQi = 0
  1396.     If rst_temp.RecordCount <> 0 Then
  1397.         For int_Temp = 1 To rst_temp.RecordCount
  1398.             Sng_SumFenQi = Sng_SumFenQi + rst_temp.Fields(0).Value
  1399.             rst_temp.MoveNext
  1400.         Next int_Temp
  1401.     End If
  1402.     rst_temp.Close
  1403.     
  1404.     
  1405.     
  1406.     
  1407.     '''''''''''''''''''''''''''''''''''''''''''''
  1408.     If InStr(1, str_unitName, "生活") <> 0 Or InStr(1, str_unitName, "产前区") <> 0 Then
  1409.         str_unitName = "生活"
  1410.     ElseIf InStr(1, str_unitName, "其他") <> 0 Or InStr(1, str_unitName, "其它") <> 0 Then
  1411.         str_unitName = "外来单位"
  1412.     ElseIf InStr(1, str_unitName, "仓库") <> 0 Then
  1413.         str_unitName = "营销部"
  1414.     End If
  1415.     PowerSupply = 0
  1416.     
  1417.     str_Temp = " SELECT DISTINCT" & _
  1418.     " DL_factory.FactName, DL_factory.FactCode, DL_unit.UnitName, " & _
  1419.     " DL_unit.UnitCode " & _
  1420.     " FROM DL_item INNER JOIN " & _
  1421.     " DL_factory ON DL_item.FactCode = DL_factory.FactCode INNER JOIN " & _
  1422.     " DL_unit ON DL_item.UnitCode = DL_unit.UnitCode " & _
  1423.     " WHERE DL_unit.UnitName like '%" & str_unitName & "%'"
  1424.     Set rst_FactCode = Cw_DataEnvi.dataconnect.Execute(str_Temp)
  1425.     If rst_FactCode.RecordCount = 0 Then
  1426.         PowerSupply = 0
  1427.         Exit Function
  1428.     End If
  1429.     
  1430.     rst_FactCode.MoveFirst
  1431.     For i = 1 To rst_FactCode.RecordCount
  1432.         str_NowFactCode = Trim(rst_FactCode.Fields("FactCode"))
  1433.         
  1434.         
  1435.         ''''''''''''''''''''''求得当前分厂其它单位电量和
  1436.         str_Sqltemp = "SELECT AA.ItemMuti * (ISNULL(AA.Reading, 0) - ISNULL" & _
  1437.         " (((SELECT DL_monthElectChild.Reading " & _
  1438.         " FROM DL_monthElect INNER JOIN " & _
  1439.         " DL_monthElectChild ON " & _
  1440.         " DL_monthElect.ID = DL_monthElectChild.ID INNER JOIN " & _
  1441.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1442.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1443.         " DL_item ON DL_monthElectChild.ItemCode = DL_item.ItemCode AND " & _
  1444.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1445.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1446.         " WHERE (DL_monthElect.Yearmon = '" & YearMon & "') AND " & _
  1447.         " (DL_unit.UnitName NOT LIKE '%期%') AND " & _
  1448.         " (DL_unit.UnitName NOT LIKE '%总公司%') AND " & _
  1449.         " (DL_monthElect.FactCode = '" & str_NowFactCode & "') AND " & _
  1450.         " (DL_monthElectChild.ItemCode = AA.ItemCode))), 0)) AS REMONSTRATE, " & _
  1451.         " DL_item.ItemCode , DL_unit.UnitName " & _
  1452.         " FROM DL_monthElect INNER JOIN " & _
  1453.         " DL_monthElectChild AA ON DL_monthElect.ID = AA.ID INNER JOIN " & _
  1454.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1455.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1456.         " DL_item ON AA.ItemCode = DL_item.ItemCode AND " & _
  1457.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1458.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1459.         " WHERE (DL_monthElect.Yearmon = '" & str_MonYear & "') AND (DL_unit.UnitName NOT LIKE '%期%') " & _
  1460.         " AND (DL_unit.UnitName NOT LIKE '%总公司%') AND (DL_monthElect.FactCode = '" & str_NowFactCode & "') "
  1461.         
  1462.         Set rst_temp = Cw_DataEnvi.dataconnect.Execute(str_Sqltemp)
  1463.         Sng_SumOtherUnit = 0
  1464.         If rst_temp.RecordCount <> 0 Then
  1465.             For int_Temp = 1 To rst_temp.RecordCount
  1466.                 Sng_SumOtherUnit = Sng_SumOtherUnit + rst_temp.Fields(0).Value
  1467.                 rst_temp.MoveNext
  1468.             Next int_Temp
  1469.         End If
  1470.         rst_temp.Close
  1471.         
  1472.         ''''''''''''''''''''''求得当前期的电量
  1473.         
  1474.         str_Sqltemp = "SELECT AA.ItemMuti * (ISNULL(AA.Reading, 0) - ISNULL" & _
  1475.         " (((SELECT DL_monthElectChild.Reading " & _
  1476.         " FROM DL_monthElect INNER JOIN " & _
  1477.         " DL_monthElectChild ON " & _
  1478.         " DL_monthElect.ID = DL_monthElectChild.ID INNER JOIN " & _
  1479.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1480.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1481.         " DL_item ON DL_monthElectChild.ItemCode = DL_item.ItemCode AND " & _
  1482.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1483.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1484.         " WHERE (DL_monthElect.Yearmon = '" & YearMon & "') AND " & _
  1485.         " (DL_unit.UnitName  LIKE '%期%') AND " & _
  1486.         " (DL_monthElect.FactCode = '" & str_NowFactCode & "') AND " & _
  1487.         " (DL_monthElectChild.ItemCode = AA.ItemCode))), 0)) AS REMONSTRATE, " & _
  1488.         " DL_item.ItemCode , DL_unit.UnitName " & _
  1489.         " FROM DL_monthElect INNER JOIN " & _
  1490.         " DL_monthElectChild AA ON DL_monthElect.ID = AA.ID INNER JOIN " & _
  1491.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1492.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1493.         " DL_item ON AA.ItemCode = DL_item.ItemCode AND " & _
  1494.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1495.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1496.         " WHERE (DL_monthElect.Yearmon = '" & str_MonYear & "') AND (DL_unit.UnitName  LIKE '%期%') " & _
  1497.         "  AND (DL_monthElect.FactCode = '" & str_NowFactCode & "') "
  1498.         
  1499.         Set rst_temp = Cw_DataEnvi.dataconnect.Execute(str_Sqltemp)
  1500.         Sng_FenQiUnit = 0
  1501.         If rst_temp.RecordCount <> 0 Then
  1502.             For int_Temp = 1 To rst_temp.RecordCount
  1503.                 Sng_FenQiUnit = Sng_FenQiUnit + rst_temp.Fields(0).Value
  1504.                 rst_temp.MoveNext
  1505.             Next int_Temp
  1506.         End If
  1507.         rst_temp.Close
  1508.         '''''''''''''''''''''' 求得总损耗
  1509.         Sng_SumTotalSunHao = Sng_SumTotal - Sng_SumFenQi
  1510.         ''''''''''''''''''''''求得当前期损耗
  1511.         Sng_FenQISunHao = 0
  1512.         If Sng_SumFenQi <> 0 Then
  1513.             Sng_FenQISunHao = Sng_SumTotalSunHao * Sng_FenQiUnit / Sng_SumFenQi
  1514.         End If
  1515.         '''''''''''''''''''''求得其它单位总损耗
  1516.         Sng_SumOtherUnitSunHao = Sng_FenQiUnit - Sng_SumOtherUnit + Sng_FenQISunHao
  1517.         '''''''''''''''''''''求得动力总和
  1518.         str_Sqltemp = "SELECT AA.ItemMuti * (ISNULL(AA.Reading, 0) - ISNULL" & _
  1519.         " (((SELECT DL_monthElectChild.Reading " & _
  1520.         " FROM DL_monthElect INNER JOIN " & _
  1521.         " DL_monthElectChild ON " & _
  1522.         " DL_monthElect.ID = DL_monthElectChild.ID INNER JOIN " & _
  1523.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1524.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1525.         " DL_item ON DL_monthElectChild.ItemCode = DL_item.ItemCode AND " & _
  1526.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1527.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1528.         " WHERE (DL_monthElect.Yearmon = '" & YearMon & "') AND " & _
  1529.         " (DL_unit.UnitName  LIKE '%" & Trim(str_unitName) & "%') " & _
  1530.         "  AND (DL_monthElect.FactCode = '" & str_NowFactCode & "') AND " & _
  1531.         " (DL_monthElectChild.ItemCode = AA.ItemCode))), 0)) AS REMONSTRATE, " & _
  1532.         " DL_item.ItemCode , DL_unit.UnitName " & _
  1533.         " FROM DL_monthElect INNER JOIN " & _
  1534.         " DL_monthElectChild AA ON DL_monthElect.ID = AA.ID INNER JOIN " & _
  1535.         " DL_factory ON DL_monthElect.FactCode = DL_factory.FactCode INNER JOIN " & _
  1536.         " DL_unit ON DL_monthElect.UnitCode = DL_unit.UnitCode INNER JOIN " & _
  1537.         " DL_item ON AA.ItemCode = DL_item.ItemCode AND " & _
  1538.         " DL_factory.FactCode = DL_item.FactCode AND " & _
  1539.         " DL_unit.UnitCode = DL_item.UnitCode " & _
  1540.         " WHERE (DL_monthElect.Yearmon = '" & str_MonYear & "') AND (DL_unit.UnitName  LIKE '%" & Trim(str_unitName) & "%') " & _
  1541.         "  AND (DL_monthElect.FactCode = '" & str_NowFactCode & "') "
  1542.         
  1543.         Set rst_temp = Cw_DataEnvi.dataconnect.Execute(str_Sqltemp)
  1544.         Sng_SumDongLi = 0
  1545.         If rst_temp.RecordCount <> 0 Then
  1546.             For int_Temp = 1 To rst_temp.RecordCount
  1547.                 Sng_SumDongLi = Sng_SumDongLi + rst_temp.Fields(0).Value
  1548.                 rst_temp.MoveNext
  1549.             Next int_Temp
  1550.         End If
  1551.         '''''''''''''''''''求得总损耗
  1552.         Sng_SumDongLiSunhao = 0
  1553.         If Sng_SumOtherUnit <> 0 Then
  1554.             Sng_SumDongLiSunhao = Sng_SumOtherUnitSunHao * Sng_SumDongLi / Sng_SumOtherUnit
  1555.         End If
  1556.         
  1557.         '''''''''''''''''''''''结束
  1558.         PowerSupply = PowerSupply + Sng_SumDongLiSunhao + Sng_SumDongLi
  1559.         '''''''''''''''''''''''
  1560.         rst_FactCode.MoveNext
  1561.     Next i
  1562.     
  1563.     Exit Function
  1564. errExecute:
  1565.     If Err.Number = -2147467259 Then
  1566.         MsgBox "数据库连接失败,请检查网络!", vbApplicationModal + vbCritical + vbSystemModal, "错误"
  1567.         Err.Number = 0
  1568.         Unload Me
  1569.         Exit Function
  1570.     Else
  1571.         MsgBox "操作出现异常,请重新操作!", vbApplicationModal + vbCritical + vbSystemModal, "错误"
  1572.         Err.Number = 0
  1573.         '        Unload Me
  1574.     End If
  1575.     
  1576.     
  1577. End Function
  1578. Private Sub Cell1_OnUserFuncGuide2(ByVal parent As Long, ByVal funcname As String, guidestring As String)
  1579.     song_temp = funcname
  1580.     Select Case Mid(UCase(song_temp), 1, 2)
  1581.     Case "SQ"
  1582.         If UCase(song_temp) = "SQL_ALL" Then
  1583.             guidestring = song_temp & "(" + Chr(34) + "SQL语句" + Chr(34) + _
  1584.             "," + Chr(34) + "年月字段名" + Chr(34) + _
  1585.             "," + Chr(34) + "年" + Chr(34) + _
  1586.             "," + Chr(34) + "月" + Chr(34) + _
  1587.             "," + Chr(34) + "标志" + Chr(34) & ")"
  1588.         Else
  1589.             guidestring = song_temp & "(" + Chr(34) + "SQL语句" + Chr(34) + _
  1590.             "," + Chr(34) + "年月字段名" + Chr(34) + _
  1591.             "," + Chr(34) + "年" + Chr(34) + _
  1592.             "," + Chr(34) + "月" + Chr(34) & ")"
  1593.         End If
  1594.     Case "DA"
  1595.         guidestring = song_temp & "(" + Chr(34) + Chr(34) & ")"
  1596.     Case "JE", "SL", "WB", "XM"
  1597.         frm_formula.Show vbModal, MDI_frame
  1598.         guidestring = song_temp
  1599.     End Select
  1600.     
  1601. End Sub
  1602. Private Sub Form_Load()
  1603.     If mf_cell_login() = False Then
  1604.         
  1605.         MsgBox "cell控件注册失败!", vbOKOnly + vbExclamation, "百利/ERP5.0-电子报表"
  1606.         Exit Sub
  1607.     End If
  1608.     mf_addfunction
  1609.     
  1610.     Select Case ml_edit_lx
  1611.     Case 1
  1612.         Set mcls_open_report = New cls_open_report
  1613.         mcls_open_report.ls_report_model_id = MDI_frame.mcls_open_report.ls_report_model_id
  1614.         mcls_open_report.ls_report_model_name = MDI_frame.mcls_open_report.ls_report_model_name
  1615.         mcls_open_report.ls_system_code = MDI_frame.mcls_open_report.ls_system_code
  1616.         mcls_open_report.ldate_report_time = MDI_frame.mcls_open_report.ldate_report_time
  1617.         Caption = "编辑报表  系统编码:" & mcls_open_report.ls_system_code & _
  1618.         "  报表模板号:" & mcls_open_report.ls_report_model_id & _
  1619.         "  报表模板名称:" & mcls_open_report.ls_report_model_name & _
  1620.         "  制作时间:" & CStr(mcls_open_report.ldate_report_time)
  1621.         Set MDI_frame.mcls_open_report = Nothing
  1622.         mdi_frame.m_recompute.enabled=false
  1623.     Case 2
  1624.         Set mcls_open_report_model = New cls_open_report_model
  1625.         mcls_open_report_model.ls_report_model_id = MDI_frame.mcls_open_report_model.ls_report_model_id
  1626.         mcls_open_report_model.ls_report_model_name = MDI_frame.mcls_open_report_model.ls_report_model_name
  1627.         mcls_open_report_model.ls_system_code = MDI_frame.mcls_open_report_model.ls_system_code
  1628.         Caption = "编辑报表模板  系统编码:" & mcls_open_report_model.ls_system_code & _
  1629.         "  报表模板号:" & mcls_open_report_model.ls_report_model_id & _
  1630.         "  报表模板名称:" & mcls_open_report_model.ls_report_model_name
  1631.         Set MDI_frame.mcls_open_report_model = Nothing
  1632.         
  1633.     Case 3
  1634.     mdi_frame.m_recompute.enabled=false     
  1635.         
  1636.     Case 4
  1637.         Set mcls_new_report = New cls_new_report
  1638.         mcls_new_report.ls_report_model_id = MDI_frame.mcls_new_report.ls_report_model_id
  1639.         mcls_new_report.ls_report_model_name = MDI_frame.mcls_new_report.ls_report_model_name
  1640.         mcls_new_report.ls_system_code = MDI_frame.mcls_new_report.ls_system_code
  1641.         Caption = "新建报表  系统编码:" & mcls_new_report.ls_system_code & _
  1642.         "  报表模板号:" & mcls_new_report.ls_report_model_id & _
  1643.         "  报表模板名称:" & mcls_new_report.ls_report_model_name
  1644.         Set MDI_frame.mcls_new_report = Nothing
  1645.         mdi_frame.m_recompute.enabled=true
  1646.     Case 5
  1647.         Set mcls_new_report_model = New cls_new_report_model
  1648.         mcls_new_report_model.ls_system_code = MDI_frame.mcls_new_report_model.ls_system_code
  1649.         mcls_new_report_model.ls_report_model_id = MDI_frame.mcls_new_report_model.ls_report_model_id
  1650.         mcls_new_report_model.ls_report_model_name = MDI_frame.mcls_new_report_model.ls_report_model_name
  1651.         Caption = "新建报表模板  系统编码:" & mcls_new_report_model.ls_system_code & _
  1652.         "  报表模板号:" & mcls_new_report_model.ls_report_model_id & _
  1653.         "  报表模板名称:" & mcls_new_report_model.ls_report_model_name
  1654.         Cell1.Rows = 25
  1655.         Cell1.Cols = 10
  1656.         Set MDI_frame.mcls_new_report_model = Nothing
  1657.     Case 6
  1658.         Caption = "编辑表格:  表格" & CStr(MDI_frame.ml_new_file_count)
  1659.         Cell1.Rows = 25
  1660.         Cell1.Cols = 10
  1661.         mdi_frame.m_recompute.enabled=true
  1662.     Case 7
  1663.         Caption = "编辑表格:  表格:汇总表" & CStr(MDI_frame.ml_frmedit_count) & "汇总表"
  1664.         Set mcls_new_report_model = New cls_new_report_model
  1665. mdi_frame.m_recompute.enabled=true    
  1666.     End Select
  1667.     mf_open ml_edit_lx
  1668.     If MDI_frame.ml_frmedit_count = 1 Then
  1669.         mf_setmenu 1
  1670.         mf_settoolbar 1
  1671.     End If
  1672.     
  1673. End Sub
  1674. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  1675.     Dim ll_msg As Integer
  1676.     If Cell1.IsModified = False Then
  1677.         Exit Sub
  1678.     End If
  1679.     Select Case ml_edit_lx
  1680.     Case 1
  1681.         ll_msg = MsgBox("报表" & vbCrLf _
  1682.         & "  系统编码:" & Me.mcls_open_report.ls_system_code & vbCrLf _
  1683.         & "  模板名称:" & Me.mcls_open_report.ls_report_model_name & vbCrLf _
  1684.         & "  制作时间:" & CStr(Me.mcls_open_report.ldate_report_time) _
  1685.         & vbCrLf & "已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1686.         
  1687.         
  1688.     Case 2
  1689.         ll_msg = MsgBox("报表模板" & vbCrLf _
  1690.         & "  系统编码:" & Me.mcls_open_report_model.ls_system_code & vbCrLf _
  1691.         & "  模板名称:" & Me.mcls_open_report_model.ls_report_model_name _
  1692.         & vbCrLf & "已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1693.     Case 3
  1694.         ll_msg = MsgBox("文件 “" & Me.ms_filename & "” 已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1695.     Case 4
  1696.         ll_msg = MsgBox("新建报表" & vbCrLf _
  1697.         & "  系统编码:" & Me.mcls_new_report.ls_system_code & vbCrLf _
  1698.         & "  模板名称:" & Me.mcls_new_report.ls_report_model_name _
  1699.         & vbCrLf & "已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1700.         
  1701.     Case 5
  1702.         ll_msg = MsgBox("新建报表模板" & vbCrLf _
  1703.         & "  系统编码:" & Me.mcls_new_report_model.ls_system_code _
  1704.         & "  模板名称:" & Me.mcls_new_report_model.ls_report_model_name _
  1705.         & vbCrLf & "已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1706.     Case 6
  1707.         ll_msg = MsgBox("文件 “" & Right(Me.Caption, Len(Me.Caption) - 9) & "” 已经改变,是否保存?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "百利/ERP5.0-电子报表")
  1708.     End Select
  1709.     Select Case ll_msg
  1710.     Case vbYes
  1711.         mf_save ml_edit_lx
  1712.     Case vbNo
  1713.         
  1714.     Case vbCancel
  1715.         Cell1.DoSetModifiedFlag True
  1716.         Cancel = 1
  1717.     End Select
  1718. End Sub
  1719. Private Sub Form_Resize()
  1720.     Cell1.Left = 0
  1721.     Cell1.Width = Me.ScaleWidth
  1722.     Cell1.Top = 0
  1723.     Cell1.Height = Me.ScaleHeight
  1724.     
  1725. End Sub
  1726. Private Sub Form_Unload(Cancel As Integer)
  1727.     With MDI_frame
  1728.         .ml_frmedit_count = .ml_frmedit_count - 1
  1729.         If .ml_frmedit_count = 0 Then
  1730.             mf_setmenu 0
  1731.             mf_settoolbar 0
  1732.         End If
  1733.     End With
  1734.     '修改标题
  1735.     song_flag = False
  1736.     MDI_frame.StatusBar1.Panels(2).Text = "操作状态:正在等待用户选择操作"
  1737.     MDI_frame.Caption = Left(MDI_frame.Caption, 15)
  1738. End Sub
  1739. '日期合法性校验
  1740. Public Function mf_check_nyr(lsYear As String, lsMonth As String) As Boolean
  1741.     Dim li_month As Integer
  1742.     mf_check_nyr = False
  1743.     If lsYear = "-100" Then
  1744.         MsgBox "年份必须位整数值!", vbOKOnly, "百利/ERP5.0-电子报表"
  1745.         mf_check_nyr = True
  1746.         Exit Function
  1747.     End If
  1748.     If lsMonth = "-100" Then
  1749.         MsgBox "月份必须位整数值!", vbOKOnly, "百利/ERP5.0-电子报表"
  1750.         mf_check_nyr = True
  1751.         Exit Function
  1752.     End If
  1753.     
  1754.     li_month = CInt(lsMonth)
  1755.     If li_month > 12 Or li_month < 0 Then
  1756.         MsgBox "月份超出范围!", vbOKOnly, "百利/ERP5.0-电子报表"
  1757.         mf_check_nyr = True
  1758.         Exit Function
  1759.     End If
  1760. End Function
  1761. Public Function cell_zhdx1(Jesj) As String    '大写金额转换
  1762.     '//* 功能: 金额小写转换为大写  调用参数:jesj...人民币小写金额
  1763.     '//* 返回变量: name..人民币大写金额
  1764.     Dim Name1$, Name2$, Mje1$, Name$, wz1$, wz2$, wz3$
  1765.     Dim len_mje1%, k%, Ws%, j%, ws1%, m%
  1766.     Dim Bz As Boolean
  1767.     Name1 = "壹贰叁肆伍陆柒捌玖"
  1768.     Name2 = "分角元拾佰仟万拾佰仟亿拾佰仟"
  1769.     Mje1 = Trim(Format(Jesj, "###.00"))
  1770.     len_mje1 = Len(Mje1)
  1771.     If len_mje1 > 16 Or Jesj < 0.01 Or IsNull(Jesj) Then
  1772.         cell_zhdx1 = ""
  1773.         Exit Function
  1774.     End If
  1775.     '//取无小数的字符串
  1776.     Mje1 = Left(Mje1, len_mje1 - 3) + Right(Mje1, 2)
  1777.     len_mje1 = len_mje1 - 1
  1778.     k = len_mje1 * 2 - 1
  1779.     Ws = Int(Mid(Mje1, 1, 1)) * 2 - 1
  1780.     
  1781.     If len_mje1 = 3 And Ws < 0 Then     '//如果金额<1 name=''
  1782.         Name = ""
  1783.     Else
  1784.         If Ws > 0 Then
  1785.             Name = MidB(Name1, Ws, 2) + MidB(Name2, k, 2) '//如果金额>=1,转换金额
  1786.         End If
  1787.     End If
  1788.     j = 2
  1789.     k = k - 2
  1790.     Bz = True
  1791. xh1:
  1792.     Do While j <= len_mje1 And Bz
  1793.         ws1 = Int(Mid(Mje1, j, 1)) * 2 - 1
  1794.         If ws1 > 0 Then
  1795.             Name = Name + MidB(Name1, ws1, 2) + MidB(Name2, k, 2)
  1796.             j = j + 1
  1797.             k = k - 2
  1798.             GoTo xh1
  1799.         End If
  1800.         m = 0
  1801. xh2:
  1802.         Do While ws1 < 0
  1803.             If len_mje1 >= 11 Then
  1804.                 If k < 21 Then
  1805.                     m = m + 1
  1806.                 End If
  1807.             End If
  1808.             If k = 5 Or (k = 13 And m <= 3) Or k = 21 Then
  1809.                 Name = Name + MidB(Name2, k, 2)
  1810.             End If
  1811.             If k = 1 Then
  1812.                 Name = Name + "整"
  1813.                 Bz = False
  1814.                 Exit Do
  1815.             End If
  1816.             j = j + 1
  1817.             k = k - 2
  1818.             ws1 = Int(Mid(Mje1, j, 1)) * 2 - 1
  1819.             If ws1 < 0 Then
  1820.                 GoTo xh2
  1821.             Else
  1822.                 If len_mje1 = 3 Then
  1823.                     Name = Name + "零"
  1824.                 Else
  1825.                     Name = Name + "零"
  1826.                 End If
  1827.             End If
  1828.         Loop
  1829.     Loop
  1830.     
  1831.     '去掉元和角之间零(1230.32)
  1832.     wz1 = InStr(1, Name, "元")
  1833.     wz2 = InStr(1, Name, "角")
  1834.     If wz1 <> 0 And wz2 <> 0 Then
  1835.         wz3 = InStr(wz1, Name, "零")
  1836.         If wz3 <> 0 Then
  1837.             Name = Mid(Name, 1, wz3 - 1) + Mid(Name, wz3 + 1, Len(Name))
  1838.         End If
  1839.     End If
  1840.     cell_zhdx1 = Name
  1841. End Function
  1842. Public Function cell_zhdx2(Jesj) As String    '金额转换中文大写
  1843.     '//* 功能: 金额小写转换为大写  调用参数:jesj...人民币小写金额
  1844.     '//* 返回变量: name..中文大写
  1845.     Dim Name1$, Name2$, Mje1$, Name$, wz1$, wz2$, wz3$
  1846.     Dim len_mje1%, k%, Ws%, j%, ws1%, m%
  1847.     Dim Bz As Boolean
  1848.     Dim iArray(10) As String
  1849.     iArray(0) = "零"
  1850.     iArray(1) = "壹"
  1851.     iArray(2) = "贰"
  1852.     iArray(3) = "叁"
  1853.     iArray(4) = "肆"
  1854.     iArray(5) = "伍"
  1855.     iArray(6) = "陆"
  1856.     iArray(7) = "柒"
  1857.     iArray(8) = "捌"
  1858.     iArray(9) = "玖"
  1859.     Name = ""
  1860.     For i = 1 To Len(Trim(Str(Jesj)))
  1861.         wz1 = Mid(Trim(Str(Jesj)), i, 1)
  1862.         Name = Name + iArray(Val(wz1))
  1863.     Next i
  1864.     If Len(Trim(Str(Jesj))) = 1 Then
  1865.         Name = "零" + Name
  1866.     End If
  1867.     If Len(Trim(Str(Jesj))) = 2 Then
  1868.         Name1 = Mid(Name, 1, 1)
  1869.         Name2 = Mid(Name, 2, 1)
  1870.         Name = Name1 + "拾" + Name2
  1871.     End If
  1872.     cell_zhdx2 = Name
  1873. End Function
  1874. Public Function cell_zhdx3(Jesj) As String    '金额转换中文大写
  1875.     '//* 功能: 金额小写转换为大写  调用参数:jesj...人民币小写金额
  1876.     '//* 返回变量: name..中文大写
  1877.     Dim Name1$, Name2$, Mje1$, Name$, wz1$, wz2$, wz3$
  1878.     Dim len_mje1%, k%, Ws%, j%, ws1%, m%
  1879.     Dim Bz As Boolean
  1880.     Dim iArray(10) As String
  1881.     iArray(0) = "零"
  1882.     iArray(1) = "一"
  1883.     iArray(2) = "二"
  1884.     iArray(3) = "三"
  1885.     iArray(4) = "四"
  1886.     iArray(5) = "五"
  1887.     iArray(6) = "六"
  1888.     iArray(7) = "七"
  1889.     iArray(8) = "八"
  1890.     iArray(9) = "九"
  1891.     Name = ""
  1892.     For i = 1 To Len(Trim(Str(Jesj)))
  1893.         wz1 = Mid(Trim(Str(Jesj)), i, 1)
  1894.         Name = Name + iArray(Val(wz1))
  1895.     Next i
  1896.     cell_zhdx3 = Name
  1897. End Function