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

企业管理

开发平台:

Visual Basic

  1.     
  2.     '计算合计数据(清零)
  3.     For Jsqte = Qslz To WglrGrid.Cols - 1
  4.         Call Sjhj(Jsqte)
  5.     Next Jsqte
  6.     
  7.     '凭证类别得到焦点
  8.     
  9.     LrText(0).SetFocus
  10.     
  11.     '有错凭证标识隐藏
  12.     
  13.     Lab_Error.Visible = False
  14.     
  15. End Sub
  16. Private Sub Sub_EditBill()                                                '修改一张单据
  17.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  18.     
  19.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  20.     If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  21.          Exit Sub
  22.     End If
  23.     
  24.     '判断当前凭证是否允许修改
  25.     If Not Fun_AllowEdit Then
  26.         Exit Sub
  27.     End If
  28.     
  29.     '设置操作状态为修改
  30.     Lab_OperStatus.Caption = "3"
  31.     
  32.     '设置工具条状态
  33.     Call Sub_OperStatus("30")
  34.     
  35.     '显示制单人
  36.     Lab_Bill.Caption = Xtczy
  37.     
  38. End Sub
  39. Private Sub Sub_DeleteBill()                                               '删除当前单据
  40.     Dim YAnswer As Integer
  41.     
  42.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  43.     If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  44.          Exit Sub
  45.     End If
  46.     
  47.     
  48.     '判断当前凭证是否允许删除
  49.     If Not Fun_AllowEdit Then
  50.         Exit Sub
  51.     End If
  52.     
  53.     Tsxx = "请确认是否删除当前凭证?"
  54.     Yhanswer = Xtxxts(Tsxx, 2, 2)
  55.     If Yhanswer = 1 Then
  56.         '1.删除凭证所有内容
  57.         
  58.         Cw_DataEnvi.DataConnect.Execute ("Delete Cwzz_AccVouchSub Where VouchID=" & Val(Lab_VouchId.Caption))
  59.         Cw_DataEnvi.DataConnect.Execute ("Delete Cwzz_AccVouchMain Where VouchID=" & Val(Lab_VouchId.Caption))
  60.         'add by 奚俊峰
  61.         Cw_DataEnvi.DataConnect.Execute ("Delete from Cwzz_CashFlowData Where VouchID=" & Val(Lab_VouchId.Caption))
  62.         
  63.         Tsxx = "该凭证已被删除!"
  64.         Call Xtxxts(Tsxx, 0, 4)
  65.     Else
  66.         Exit Sub
  67.     End If
  68.     
  69.     Select Case Trim(Lab_Pzclzt.Caption)
  70.     Case "1"    '填制凭证
  71.         
  72.         Call Sub_AddBill
  73.         
  74.         '设置操作状态为浏览
  75.         Lab_OperStatus = "1"
  76.         Call Sub_OperStatus("10")
  77.         
  78.     Case "2"    '查询凭证
  79.         
  80.     End Select
  81. End Sub
  82. Private Sub Sub_AbandonBill()                                              '放弃对当前单据的操作
  83.     
  84.     '先关闭录入载体
  85.     changelock = True
  86.     Valilock = True
  87.     Call Ycwbk
  88.     changelock = False
  89.     Valilock = False
  90.     
  91.     Select Case Trim(Lab_OperStatus.Caption)
  92.         
  93.     Case "2"         '新增状态
  94.         
  95.         Call Sub_AddBill
  96.         
  97.         For Jsqte = Max_Text_Index To 0 Step -1
  98.             LrText(Jsqte).Text = ""
  99.         Next Jsqte
  100.         
  101.         '设置操作状态为浏览
  102.         Lab_OperStatus = "1"
  103.         Call Sub_OperStatus("10")
  104.         
  105.     Case "3"         '修改状态
  106.         
  107.         '重新显示当前单据
  108.         
  109.         Call Sub_ShowBill
  110.         
  111.         '设置操作状态为浏览
  112.         Lab_OperStatus = "1"
  113.         Call Sub_OperStatus("11")
  114.         
  115.     End Select
  116. End Sub
  117. Private Sub Sub_QueryBill()                                              '查询凭证
  118.     PZ_FrmPzcx.Show 1
  119.     If Xtfhcs = "1" Then
  120.         Call Sub_ShowBill
  121.         
  122.         '设置操作状态为浏览
  123.         Lab_OperStatus.Caption = "1"
  124.         
  125.         '设置工具条状态
  126.         Call Sub_OperStatus("11")
  127.     End If
  128. End Sub
  129. Private Sub Combo_Kjqj_Click()                                           '会计期间发生变化则自动计算单据编号
  130.     Call Sub_JsVouchNo
  131. End Sub
  132. Private Sub Sub_JsVouchNo()                                              '自动计算新增单据编号
  133.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  134.     
  135.     '单据为新增时才有效
  136.     If Lab_OperStatus <> "2" Then
  137.         Exit Sub
  138.     End If
  139.     
  140.     Sqlstr = "Select MAX(VouchNo) AS MVouchNo FROM  Cwzz_AccVouchMain Where Year=" & Mid(Combo_Kjqj.Text, 1, 4) & " AND Period=" & Mid(Combo_Kjqj.Text, 6, 2) & _
  141.     " AND VouchClassCode='" & Trim(LrText(0).Text) & "'"
  142.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  143.     TextChangeLock = True
  144.     If Not IsNull(RecTemp.Fields("MVouchNo")) Then
  145.         LrText(3).Text = Mid(Trim(Str(10000 + RecTemp.Fields("MVouchNo") + 1)), 2, 4)
  146.     Else
  147.         LrText(3).Text = "0001"
  148.     End If
  149.     TextChangeLock = False
  150. End Sub
  151. Private Function Sub_SaveBill() As Boolean                   '保 存 单 据
  152.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  153.     Dim Recfind As New ADODB.Recordset     '有效性判断动态集
  154.     Dim Rec_AccVouchMain As New ADODB.Recordset  '凭证主表动态集
  155.     Dim Rec_AccVouch As New ADODB.Recordset      '凭证子表动态集
  156.     Dim Rowjsq As Long           '网格行计数器
  157.     Dim Coljsq As Long           '网格列计数器
  158.     Dim Jsqte As Integer         '临时计数器
  159.     Dim Int_RowCount As Integer  '有效数据行计数器
  160.     Dim Bln_AssVali As Boolean   '辅助核算错误标识
  161.     Dim Lrywlz As Long           '录入有误列值
  162.     Dim Dbl_Jfhj As Double       '借方合计
  163.     Dim Dbl_Dfhj As Double       '贷方合计
  164.     Dim Int_Year As Integer      '用户选择会计年度
  165.     Dim Int_Period As Integer    '用户选择会计期间
  166.     Dim Int_VouchNo As Integer   '单据号
  167.     
  168.     For Jsqte = 0 To Max_Text_Index
  169.         If Textint(Jsqte, 8) = 1 Then     '字段不能为空
  170.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  171.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  172.                 Call Xtxxts(Tsxx, 0, 1)
  173.                 LrText(Jsqte).SetFocus
  174.                 Sub_SaveBill = False
  175.                 Exit Function
  176.             End If
  177.         Else
  178.             If Textint(Jsqte, 8) = 2 Then   '字段不能为零
  179.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  180.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  181.                     Call Xtxxts(Tsxx, 0, 1)
  182.                     LrText(Jsqte).SetFocus
  183.                     Sub_SaveBill = False
  184.                     Exit Function
  185.                 End If
  186.             End If
  187.         End If
  188.     Next Jsqte
  189.     
  190.     '对需要进行事后判断的文本框录入内容进行有效性判断 (固定不变)
  191.     For Jsqte = 0 To Max_Text_Index
  192.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  193.             If Not TextYxxpd(Jsqte) Then
  194.                 Exit Function
  195.             End If
  196.         End If
  197.     Next Jsqte
  198.     
  199.     '[判断用户所选会计期间是否有效(非结帐月份),且制单日期必须和所选会计期间一致
  200.     Sqlstr = "Select * FROM  Gy_Kjrlb Where KjYear=" & Mid(Combo_Kjqj.Text, 1, 4) & " AND Period=" & Mid(Combo_Kjqj.Text, 6, 2)
  201.     
  202.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  203.     
  204.     With RecTemp
  205.         If Not .EOF Then
  206.             If .Fields("Cwzzjzbz") Then
  207.                 Tsxx = "所选会计期间已经结帐,不能再填制凭证!"
  208.                 Call Xtxxts(Tsxx, 0, 1)
  209.                 Combo_Kjqj.SetFocus
  210.                 Exit Function
  211.             End If
  212.             
  213.             If Not (CDate(LrText(1).Text) >= CDate(.Fields("Qsrq")) And CDate(LrText(1).Text) <= CDate(.Fields("Zzrq"))) Then
  214.                 Tsxx = "制单日期应在所选会计期间范围内!"
  215.                 Call Xtxxts(Tsxx, 0, 1)
  216.                 LrText(1).SetFocus
  217.                 Exit Function
  218.             End If
  219.         End If
  220.     End With
  221.     
  222.     '下面将对所有有效数据行进行有效性判断
  223.     
  224.     Int_RowCount = 0
  225.     
  226.     Dbl_Jfhj = 0
  227.     
  228.     Dbl_Dfhj = 0
  229.     
  230.     With WglrGrid
  231.         
  232.         For Rowjsq = .FixedRows To .Rows - 1
  233.             
  234.             '带*号者为有效数据行
  235.             
  236.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  237.                 Exit For
  238.             Else
  239.                 Int_RowCount = Int_RowCount + 1
  240.             End If
  241.             
  242.             '1.首先进行为空或为零判断(固定不变)
  243.             For Coljsq = Qslz To .Cols - 1
  244.                 If (GridInt(Coljsq, 5) = 1 And Len(Trim(.TextMatrix(Rowjsq, Coljsq))) = 0) Or (GridInt(Coljsq, 5) = 2 And Val(Trim(.TextMatrix(Rowjsq, Coljsq))) = 0) Then
  245.                     Tsxx = GridStr(Coljsq, 2)
  246.                     Lrywlz = Coljsq
  247.                     GoTo Lrcwcl
  248.                     Exit For
  249.                 End If
  250.             Next Coljsq
  251.             
  252.             '2.[自定义判断(补丁)
  253.             If Val(Trim(.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))) = 0 And Val(Trim(.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))) = 0 Then
  254.                 Tsxx = "借方和贷方金额不能同时为零!"
  255.                 Lrywlz = Sydz("004", GridStr(), Szzls)
  256.                 GoTo Lrcwcl
  257.             End If
  258.             
  259.             If Val(Trim(.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))) <> 0 And Val(Trim(.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))) <> 0 Then
  260.                 Tsxx = "借方和贷方金额不能同时不为零!"
  261.                 Lrywlz = Sydz("004", GridStr(), Szzls)
  262.                 GoTo Lrcwcl
  263.             End If
  264.             
  265.             '判断辅助核算项目是否填写并是否有效
  266.             
  267.             Sqlstr = "Select * FROM Cwzz_AccCode Where Ccode='" & Trim(.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls))) & "'"
  268.             
  269.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  270.             With RecTemp
  271.                 If .EOF Then
  272.                     Tsxx = "此科目不存在!"
  273.                     GoTo Lrcwcl
  274.                 End If
  275.                 If Not .Fields("EndFlag") Then
  276.                     Tsxx = "此科目非末级科目!"
  277.                     GoTo Lrcwcl
  278.                 End If
  279.                 If .Fields("StopFlag") Then
  280.                     Tsxx = "此科目已停用"
  281.                     GoTo Lrcwcl
  282.                 End If
  283.                 
  284.                 '对于银行科目,如结算方式不为空则结算方式必须有效
  285.                 
  286.                 If Trim(RecTemp.Fields("Cproperty")) = "银行" And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 1))) <> 0 Then
  287.                     Set Recfind = Cw_DataEnvi.DataConnect.Execute("Select SSCode FROM Gy_Settlement Where SSCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 1)) & "'")
  288.                     If Recfind.EOF Then
  289.                         Tsxx = "此结算方式不存在!"
  290.                         Lrywlz = Sydz("002", GridStr(), Szzls)
  291.                         Bln_AssVali = True
  292.                         GoTo Lrcwcl
  293.                     End If
  294.                 End If
  295.                 
  296.                 '如有数量核算且用户选择数量不能为零则数量项不能为零
  297.                 
  298.                 If RecTemp.Fields("QuantityFlag") And Chk_Quantity.Value = 1 And Val(WglrGrid.TextMatrix(Rowjsq, 5)) = 0 Then
  299.                     Tsxx = "此科目需要数量核算,数量项不能为零"
  300.                     Lrywlz = Sydz("002", GridStr(), Szzls)
  301.                     Bln_AssVali = True
  302.                     GoTo Lrcwcl
  303.                 End If
  304.                 
  305.                 
  306.                 '部门核算则部门不能为空且有效
  307.                 If RecTemp.Fields("DeptFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 12))) = 0 Then
  308.                     Tsxx = "此科目需要部门核算,部门项不能为空"
  309.                     Lrywlz = Sydz("002", GridStr(), Szzls)
  310.                     Bln_AssVali = True
  311.                     GoTo Lrcwcl
  312.                 Else
  313.                     If RecTemp.Fields("DeptFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 12))) <> 0 Then
  314.                         Set Recfind = Cw_DataEnvi.DataConnect.Execute("Select DeptCode FROM Gy_Department Where DeptCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 12)) & "'")
  315.                         If Recfind.EOF Then
  316.                             Tsxx = "此部门不存在!"
  317.                             Lrywlz = Sydz("002", GridStr(), Szzls)
  318.                             Bln_AssVali = True
  319.                             GoTo Lrcwcl
  320.                         End If
  321.                     End If
  322.                 End If
  323.                 
  324.                 '往来单位核算则往来单位不能为空
  325.                 If RecTemp.Fields("CusFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 14))) = 0 Then
  326.                     Tsxx = "此科目需要往来单位核算,往来单位项不能为空"
  327.                     Lrywlz = Sydz("002", GridStr(), Szzls)
  328.                     Bln_AssVali = True
  329.                     GoTo Lrcwcl
  330.                 Else
  331.                     If RecTemp.Fields("CusFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 14))) <> 0 Then
  332.                         Set Recfind = Cw_DataEnvi.DataConnect.Execute("Select CusCode FROM Gy_Customer Where CusCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 14)) & "'")
  333.                         If Recfind.EOF Then
  334.                             Tsxx = "此往来单位不存在!"
  335.                             Lrywlz = Sydz("002", GridStr(), Szzls)
  336.                             Bln_AssVali = True
  337.                             GoTo Lrcwcl
  338.                         End If
  339.                     End If
  340.                 End If
  341.                 
  342.                 '个人往来核算则个人项不能为空
  343.                 If RecTemp.Fields("PersonFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 16))) = 0 Then
  344.                     Tsxx = "此科目需要个人往来核算,个人项不能为空"
  345.                     Lrywlz = Sydz("002", GridStr(), Szzls)
  346.                     Bln_AssVali = True
  347.                     GoTo Lrcwcl
  348.                 Else
  349.                     If RecTemp.Fields("PersonFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 16))) <> 0 Then
  350.                         Set Recfind = Cw_DataEnvi.DataConnect.Execute("Select PersonCode FROM Gy_Person Where PersonCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 16)) & "'")
  351.                         If Recfind.EOF Then
  352.                             Tsxx = "此个人不存在!"
  353.                             Lrywlz = Sydz("002", GridStr(), Szzls)
  354.                             Bln_AssVali = True
  355.                             GoTo Lrcwcl
  356.                         End If
  357.                     End If
  358.                 End If
  359.                 
  360.                 '项目核算则项目不能为空
  361.                 If RecTemp.Fields("ItemFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 20))) = 0 Then
  362.                     Tsxx = "此科目需要项目核算,核算项目不能为空"
  363.                     Lrywlz = Sydz("002", GridStr(), Szzls)
  364.                     Bln_AssVali = True
  365.                     GoTo Lrcwcl
  366.                 Else
  367.                     If RecTemp.Fields("ItemFlag") And Len(Trim(WglrGrid.TextMatrix(Rowjsq, 20))) <> 0 Then
  368.                         Set Recfind = Cw_DataEnvi.DataConnect.Execute("Select ItemCode,QuantityFlag FROM Cwzz_Item Where ItemClassCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 18)) & "' And ItemCode='" & Trim(WglrGrid.TextMatrix(Rowjsq, 20)) & "'")
  369.                         If Recfind.EOF Then
  370.                             Tsxx = "此核算项目不存在!"
  371.                             Lrywlz = Sydz("002", GridStr(), Szzls)
  372.                             Bln_AssVali = True
  373.                             GoTo Lrcwcl
  374.                         Else
  375.                             If Recfind.Fields("QuantityFlag") And Val(WglrGrid.TextMatrix(Rowjsq, 22)) = 0 Then
  376.                                 Tsxx = "此项目需数量核算,则项目数量不能为零!"
  377.                                 Lrywlz = Sydz("002", GridStr(), Szzls)
  378.                                 Bln_AssVali = True
  379.                                 GoTo Lrcwcl
  380.                             End If
  381.                         End If
  382.                     End If
  383.                 End If
  384.             End With
  385.             
  386.             '计算借贷方合计数据
  387.             
  388.             Dbl_Jfhj = Dbl_Jfhj + Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))
  389.             
  390.             Dbl_Dfhj = Dbl_Dfhj + Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))
  391.             
  392.         Next Rowjsq
  393.         
  394.         '会计分录行数不能为零
  395.         
  396.         If Int_RowCount = 0 Then
  397.             Tsxx = "凭证会计分录行数为零,不能存盘!"
  398.             Call Xtxxts(Tsxx, 0, 1)
  399.             Exit Function
  400.         End If
  401.         
  402.         '凭证借贷双方合计必须平衡
  403.         
  404.         If Abs(Dbl_Jfhj - Dbl_Dfhj) >= 0.01 Then
  405.             Tsxx = "凭证借贷不平衡!"
  406.             Call Xtxxts(Tsxx, 0, 1)
  407.             Exit Function
  408.         End If
  409.         
  410.     End With  '网格
  411.     
  412.     '如果以上有效性检查均顺利通过,则执行存盘动作
  413.     
  414.     Int_Year = Val(Mid(Combo_Kjqj.Text, 1, 4))
  415.     
  416.     Int_Period = Val(Mid(Combo_Kjqj.Text, 6, 2))
  417.     
  418.     On Error GoTo Swcwcl
  419.     
  420.     Cw_DataEnvi.DataConnect.BeginTrans
  421.     
  422.     If Trim(Lab_OperStatus) = "2" Then
  423.         
  424.         '新增凭证
  425.         
  426.         '1.判断凭证号是否重复或大于最大凭证号,如是则取最大值+1为当前凭证号,否则以当前凭证号存盘
  427.         
  428.         Sqlstr = "Select MAX(VouchNo)+1 AS MVouchNo FROM  Cwzz_AccVouchMain Where Year=" & Mid(Combo_Kjqj.Text, 1, 4) & " AND Period=" & Mid(Combo_Kjqj.Text, 6, 2) & _
  429.         " AND VouchClassCode='" & Trim(LrText(0).Text) & "'"
  430.         Set Rec_AccVouch = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  431.         If Not IsNull(Rec_AccVouch.Fields("MVouchNo")) Then
  432.             If Val(LrText(3).Text) > Rec_AccVouch.Fields("MVouchNo") Then
  433.                 Call Sub_JsVouchNo
  434.             End If
  435.         End If
  436.         
  437.         Sqlstr = "Select VouchID From Cwzz_AccVouchMain Where Year=" & Int_Year & " and Period=" & Int_Period & " And VouchClassCode='" & Trim(LrText(0).Text) & "' And VouchNo=" & Val(LrText(3).Text)
  438.         Set Rec_AccVouch = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  439.         
  440.         If Not Rec_AccVouch.EOF Then
  441.             Call Sub_JsVouchNo
  442.         End If
  443.         
  444.         Int_VouchNo = Val(LrText(3).Text)  '凭证号
  445.         
  446.         '打开凭证主表动态集
  447.         If Rec_AccVouchMain.State = 1 Then Rec_AccVouchMain.Close
  448.         Rec_AccVouchMain.Open "Select * From Cwzz_AccVouchMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  449.         
  450.         With Rec_AccVouchMain
  451.             .AddNew
  452.             .Fields("VouchID") = CreatBillID("0101")
  453.             .Fields("Year") = Int_Year                                                                   '会计年度
  454.             .Fields("Period") = Int_Period                                                               '会计期间
  455.             .Fields("Ddate") = CDate(LrText(1).Text)                                                     '制单日期
  456.             .Fields("VouchClassCode") = Trim(LrText(0).Text)                                             '凭证类别
  457.             .Fields("VouchNo") = Int_VouchNo                                                             '凭证号
  458.             .Fields("Doc") = Val(LrText(2).Text)                                                         '附单据数
  459.             .Fields("Bill") = Trim(Lab_Bill.Caption)                                                     '制单人
  460.             .Fields("CheckFlag") = 0                                                                     '审核标志置"0"
  461.             .Fields("BookFlag") = 0                                                                      '记帐标志置"0"
  462.             .Fields("VouchSource") = "手工录入"
  463.             .Update
  464.             Lab_VouchId.Caption = .Fields("VouchID")
  465.         End With
  466.     Else
  467.         
  468.         '修改凭证
  469.         
  470.         '1.删除原凭证子表中所有内容
  471.         
  472.         Int_VouchNo = Val(LrText(3).Text)  '凭证号
  473.         
  474.         Cw_DataEnvi.DataConnect.Execute ("Delete Cwzz_AccVouchSub Where VouchID=" & Val(Lab_VouchId.Caption))
  475.         
  476.         '打开凭证主表动态集
  477.         If Rec_AccVouchMain.State = 1 Then Rec_AccVouchMain.Close
  478.         Rec_AccVouchMain.Open "Select * From Cwzz_AccVouchMain Where VouchID=" & Val(Lab_VouchId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  479.         With Rec_AccVouchMain
  480.             .Fields("Year") = Int_Year                                                                   '会计年度
  481.             .Fields("Period") = Int_Period                                                               '会计期间
  482.             .Fields("Ddate") = CDate(LrText(1).Text)                                                     '制单日期
  483.             .Fields("VouchClassCode") = Trim(LrText(0).Text)                                             '凭证类别
  484.             .Fields("VouchNo") = Int_VouchNo                                                             '凭证号
  485.             .Fields("Doc") = Val(LrText(2).Text)                                                         '附单据数
  486.             .Fields("Bill") = Trim(Lab_Bill.Caption)                                                     '制单人
  487.             .Fields("CheckFlag") = 0                                                                     '审核标志置"0"
  488.             .Fields("BookFlag") = 0                                                                      '记帐标志置"0"
  489.             .Update
  490.         End With
  491.     End If
  492.     
  493.     '打开凭证子表动态集
  494.     If Rec_AccVouch.State = 1 Then Rec_AccVouch.Close
  495.     Rec_AccVouch.Open "Select * From Cwzz_AccVouchSub Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  496.     
  497.     For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  498.         
  499.         If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
  500.             Exit For
  501.         End If
  502.         
  503.         With Rec_AccVouch
  504.             .AddNew
  505.             .Fields("SerialID") = Rowjsq
  506.             .Fields("VouchID") = Val(Lab_VouchId.Caption)               '凭证ID
  507.             .Fields("Digest") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls)))         '摘要
  508.             .Fields("Ccode") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)))          '会计科目
  509.             .Fields("Jfje") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))            '借方金额
  510.             .Fields("Dfje") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))            '贷方金额
  511.             If Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))) <> 0 Then
  512.                 .Fields("Jfsl") = Val(WglrGrid.TextMatrix(Rowjsq, 5))                                     '借方数量
  513.             Else
  514.                 .Fields("Dfsl") = Val(WglrGrid.TextMatrix(Rowjsq, 5))                                     '贷方数量
  515.             End If
  516.             
  517.             '如为外币核算则原币编码为外币编码否则填充本位币编码,同时填充原币金额
  518.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 8))) <> 0 And Trim(WglrGrid.TextMatrix(Rowjsq, 8)) <> XtSCurrCode Then
  519.                 .Fields("ForeignCurrCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 8))                         '外币编码
  520.                 .Fields("AccRate") = Val(WglrGrid.TextMatrix(Rowjsq, 11))                                 '记帐汇率
  521.                 If Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))) <> 0 Then
  522.                     .Fields("Wbjfje") = Val(WglrGrid.TextMatrix(Rowjsq, 10))                               '外币借方金额
  523.                 Else
  524.                     .Fields("Wbdfje") = Val(WglrGrid.TextMatrix(Rowjsq, 10))                               '外币贷方金额
  525.                 End If
  526.             Else
  527.                 .Fields("ForeignCurrCode") = XtSCurrCode                                                  '原币编码
  528.                 .Fields("AccRate") = 1                                                                    '记帐汇率
  529.                 If Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))) <> 0 Then
  530.                     .Fields("Wbjfje") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))    '原币借方金额
  531.                 Else
  532.                     .Fields("Wbdfje") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))    '原币贷方金额
  533.                 End If
  534.             End If
  535.             
  536.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 4))) <> 0 Then
  537.                 .Fields("BillDate") = CDate(Trim(WglrGrid.TextMatrix(Rowjsq, 4)))                         '发生日期(银行)
  538.             End If
  539.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 1))) <> 0 Then
  540.                 .Fields("SScode") = Trim(WglrGrid.TextMatrix(Rowjsq, 1))                                  '结算方式(银行)
  541.             End If
  542.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 3))) <> 0 Then
  543.                 .Fields("BillNo") = Trim(WglrGrid.TextMatrix(Rowjsq, 3))                                  '票号(银行)
  544.             End If
  545.             
  546.             .Fields("BCheckFlag") = 0                                                                    '银行核对标志置0
  547.             
  548.             .Fields("BDelete") = 0                                                                       '银行帐核销标志置0
  549.             
  550.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 16))) <> 0 Then
  551.                 .Fields("PersonCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 16))                             '职员编码
  552.             End If
  553.             
  554.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 12))) <> 0 Then
  555.                 .Fields("DeptCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 12))                               '部门编码
  556.             End If
  557.             
  558.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 14))) <> 0 Then
  559.                 .Fields("CusCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 14))                                '往来客户编码
  560.             End If
  561.             
  562.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 25))) <> 0 Then
  563.                 .Fields("SupplierCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 25))                          '往来供应商编码
  564.             End If
  565.             
  566.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 18))) <> 0 Then
  567.                 .Fields("ItemClassCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 18))                          '项目大类编码
  568.             End If
  569.             
  570.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 20))) <> 0 Then
  571.                 .Fields("ItemCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 20))                               '项目编码
  572.                 If Val(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))) <> 0 Then
  573.                     .Fields("ItemJfsl") = Val(WglrGrid.TextMatrix(Rowjsq, 22))                             '项目借方数量
  574.                 Else
  575.                     .Fields("ItemDfsl") = Val(WglrGrid.TextMatrix(Rowjsq, 22))                             '项目贷方数量
  576.                 End If
  577.             End If
  578.             
  579.             If Len(Trim(WglrGrid.TextMatrix(Rowjsq, 24))) <> 0 Then
  580.                 .Fields("TranPerson") = Trim(WglrGrid.TextMatrix(Rowjsq, 24))                             '经办人
  581.             End If
  582.             
  583.             .Update
  584.             
  585.         End With
  586.         
  587.     Next Rowjsq
  588.     
  589.     
  590.     Cw_DataEnvi.DataConnect.CommitTrans
  591.     
  592.     Sub_SaveBill = True
  593.     Tsxx = "凭证存盘完毕! 凭证号:" & Trim(LrText(0).Text) & "--" & Trim(LrText(3).Text)
  594.     Call Xtxxts(Tsxx, 0, 4)
  595.     
  596.     '标识单据发生改动
  597.     Bln_BillChange = True
  598.     
  599.     If Chk_Xjll.Value = 1 Then        '凭证存盘后是否马上进行现金流量分配
  600.         If Sf_CashFlow = True Then     '判断该凭证是否有必要进行现金流量分配
  601.             Call Fp_Xjll                '分配现金流量
  602.         End If
  603.     End If
  604.     
  605.     
  606.     '设置操作状态为浏览
  607.     Lab_OperStatus = "1"
  608.     
  609.     Call Sub_OperStatus("11")
  610.     
  611.     
  612.     Exit Function
  613.     
  614. Swcwcl:
  615.     Cw_DataEnvi.DataConnect.RollbackTrans
  616.     Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  617.     Call Xtxxts(Tsxx, 0, 1)
  618.     Exit Function
  619.     
  620. Lrcwcl:        '录入错误处理
  621.     With WglrGrid
  622.         Call Xtxxts("(第 " + Trim(Str(Int_RowCount)) + " 条会计分录)-" + Tsxx, 0, 1)
  623.         changelock = True
  624.         .Select Rowjsq, Lrywlz
  625.         WglrGrid.SetFocus
  626.         changelock = False
  627.         Exit Function
  628.     End With
  629.     
  630. End Function
  631. Private Sub Chk_DeleteMess_Click()                   '删行是否提示(点击)
  632.     If Chk_DeleteMess.Value = 1 Then
  633.         Shsfts = True
  634.     Else
  635.         Shsfts = False
  636.     End If
  637. End Sub
  638. Private Sub Sub_Option()                             '调用填制凭证选项
  639.     With PZ_FrmOption
  640.         
  641.         '删行是否提示
  642.         .Chk_DeleteMess.Value = Me.Chk_DeleteMess.Value
  643.         
  644.         '科目数量核算数量项是否可以为零
  645.         .Chk_Quantity.Value = Me.Chk_Quantity.Value
  646.         
  647.         '打印凭证是否输出科目编码
  648.         .Chk_CodeOutput.Value = Me.Chk_CodeOutput.Value
  649.         
  650.         '审核凭证时是否自动跳到下张
  651.         .Chk_CheckNext.Value = Me.Chk_CheckNext.Value
  652.         
  653.         '汇总打印
  654.         .Chk_SumPrint.Value = Me.Chk_SumPrint.Value
  655.         
  656.         .Show 1
  657.         
  658.     End With
  659.     
  660. End Sub
  661. '审核,弃审,标错,全审,全弃
  662. Private Sub Sub_CheckBill()             '审 核
  663.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  664.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  665.          Exit Sub
  666.     End If
  667.     
  668.     
  669.     '已审核凭证不需要再次审核
  670.     If Trim(Lab_Checker.Caption) <> "" Then
  671.         Tsxx = "已审核凭证不需要再次审核!"
  672.         Call Xtxxts(Tsxx, 0, 4)
  673.         Exit Sub
  674.     End If
  675.     '标错凭证不能审核通过
  676.     If Lab_Error.Visible Then
  677.         Tsxx = "标错凭证不能审核通过!"
  678.         Call Xtxxts(Tsxx, 0, 4)
  679.         Exit Sub
  680.     End If
  681.     
  682.     '将凭证写入审核标识
  683.     Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set CheckFlag=1,Checker='" & Xtczy & "' Where VouchID=" & Val(Lab_VouchId.Caption))
  684.     '写入系统操作员
  685.     Lab_Checker.Caption = Xtczy
  686.     '自动调入下一张凭证
  687.     If Chk_CheckNext.Value = 1 Then
  688.         Call Sub_next
  689.     End If
  690.     '标识单据发生变化
  691.     Bln_BillChange = True
  692. End Sub
  693. Private Sub Sub_AbandonCheck()          '弃 审
  694.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  695.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  696.          Exit Sub
  697.     End If
  698.     
  699.     If Trim(Lab_Book.Caption) <> "" Then
  700.         Tsxx = "已记帐凭证不能弃审!"
  701.         Call Xtxxts(Tsxx, 0, 4)
  702.         Exit Sub
  703.     End If
  704.     
  705.     If Trim(Lab_Checker.Caption) = "" Then
  706.         Tsxx = "未审核凭证不需要弃审!"
  707.         Call Xtxxts(Tsxx, 0, 4)
  708.         Exit Sub
  709.     End If
  710.     
  711.     '写入系统操作员
  712.     Lab_Checker.Caption = ""
  713.     
  714.     '将凭证去掉审核标识
  715.     Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set CheckFlag=0,Checker='' Where VouchID=" & Val(Lab_VouchId.Caption))
  716.     
  717.     '自动调入下一张凭证
  718.     If Chk_CheckNext.Value = 1 Then
  719.         Call Sub_next
  720.     End If
  721.     
  722.     '标识单据发生变化
  723.     Bln_BillChange = True
  724.     
  725. End Sub
  726. Private Sub Sub_ErrorBill()             '标 错(如果凭证有错则去掉错误标识,如无错则写入错误标识)
  727.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  728.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  729.          Exit Sub
  730.     End If
  731.     
  732.     If Lab_Error.Visible Then
  733.         
  734.         '去掉凭证有错标识
  735.         Lab_Error.Visible = False
  736.         
  737.         '将凭证去掉错误标识
  738.         Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set ErrorFlag=0 Where VouchID=" & Val(Lab_VouchId.Caption))
  739.     Else
  740.         
  741.         If Trim(Lab_Checker.Caption) <> "" Then
  742.             Tsxx = "已审核凭证不能标错!"
  743.             Call Xtxxts(Tsxx, 0, 4)
  744.             Exit Sub
  745.         End If
  746.         
  747.         '显示凭证有错标识
  748.         Lab_Error.Visible = True
  749.         
  750.         '将凭证写入错误标识
  751.         Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set ErrorFlag=1 Where VouchID=" & Val(Lab_VouchId.Caption))
  752.         
  753.     End If
  754.     
  755.     '标识单据发生变化
  756.     Bln_BillChange = True
  757.     
  758. End Sub
  759. Private Sub Sub_CheckAllBill()  '全部审核
  760.     Dim Yhanswer As Integer
  761.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  762.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  763.          Exit Sub
  764.     End If
  765.     
  766.     Tsxx = "请确认是否将所有查询凭证中" + Chr(10) + Chr(10) + "未复核凭证全部复核(标错凭证除外)?"
  767.     Yhanswer = Xtxxts(Tsxx, 2, 2)
  768.     If Yhanswer = 2 Then
  769.         Exit Sub
  770.     End If
  771.     With PZ_FrmPzcxjg
  772.         
  773.         For Jsqte = .CxbbGrid.FixedRows To .CxbbGrid.Rows - 1
  774.             If .CxbbGrid.Cell(flexcpBackColor, Jsqte) = .Lab_Color(0).BackColor Then
  775.                 '将凭证写入审核标识
  776.                 Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set CheckFlag=1,Checker='" & Xtczy & "' Where ErrorFlag=0 And CheckFlag=0 and VouchID=" & Val(.CxbbGrid.TextMatrix(Jsqte, 0)))
  777.             End If
  778.         Next Jsqte
  779.     End With
  780.     If Not Lab_Error.Visible Then
  781.         '写入系统操作员
  782.         Lab_Checker.Caption = Xtczy
  783.     End If
  784.     Tsxx = "全部审核完毕!"
  785.     Call Xtxxts(Tsxx, 0, 4)
  786.     '标识单据发生变化
  787.     Bln_BillChange = True
  788. End Sub
  789. Private Sub Sub_AbandonAllCheck()                       '全部弃审
  790.     Dim Yhanswer As Integer
  791.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  792.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  793.          Exit Sub
  794.     End If
  795.     
  796.     
  797.     Tsxx = "请确认是否将所有查询凭证中" + Chr(10) + Chr(10) + "已复核凭证全部弃审(记帐凭证除外)?"
  798.     Yhanswer = Xtxxts(Tsxx, 2, 2)
  799.     If Yhanswer = 2 Then
  800.         Exit Sub
  801.     End If
  802.     
  803.     Lab_Checker.Caption = ""
  804.     
  805.     With PZ_FrmPzcxjg
  806.         
  807.         For Jsqte = .CxbbGrid.FixedRows To .CxbbGrid.Rows - 1
  808.             
  809.             If .CxbbGrid.Cell(flexcpBackColor, Jsqte) = .Lab_Color(0).BackColor Then
  810.                 
  811.                 '将凭证写入审核标识
  812.                 Cw_DataEnvi.DataConnect.Execute ("Update Cwzz_AccVouchMain Set CheckFlag=0,Checker='' Where BookFlag=0 And CheckFlag=1 and VouchID=" & Val(.CxbbGrid.TextMatrix(Jsqte, 0)))
  813.                 
  814.             End If
  815.         Next Jsqte
  816.         
  817.     End With
  818.     
  819.     Tsxx = "符合弃审条件的凭证已弃审完毕!"
  820.     Call Xtxxts(Tsxx, 0, 4)
  821.     
  822.     
  823.     '标识单据发生变化
  824.     Bln_BillChange = True
  825.     
  826. End Sub
  827. '选择首张,上张,下张,末张
  828.     
  829. Private Sub Sub_First()             '首 张
  830.     With PZ_FrmPzcxjg
  831.         .CxbbGrid.Select .CxbbGrid.FixedRows, 0
  832.         If Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0)) Then
  833.             Exit Sub
  834.         End If
  835.         
  836.         Call Sub_ShowFindBill
  837.         
  838.     End With
  839. End Sub
  840. Private Sub Sub_Prev()             '上 张
  841.     With PZ_FrmPzcxjg
  842.         Do While .CxbbGrid.Row > .CxbbGrid.FixedRows And Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0))
  843.             .CxbbGrid.Row = .CxbbGrid.Row - 1
  844.         Loop
  845.         If Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0)) Then
  846.             Exit Sub
  847.         End If
  848.         
  849.         Call Sub_ShowFindBill
  850.         
  851.     End With
  852. End Sub
  853. Private Sub Sub_next()             '下 张
  854.     With PZ_FrmPzcxjg
  855.         Do While .CxbbGrid.Row < .CxbbGrid.Rows - 1 And Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0))
  856.             .CxbbGrid.Row = .CxbbGrid.Row + 1
  857.         Loop
  858.         If Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0)) Then
  859.             Exit Sub
  860.         End If
  861.         
  862.         Call Sub_ShowFindBill
  863.         
  864.     End With
  865. End Sub
  866. Private Sub Sub_Last()              '末 张
  867.     With PZ_FrmPzcxjg
  868.         .CxbbGrid.Select .CxbbGrid.Rows - 1, 0
  869.         If Val(Lab_VouchId.Caption) = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0)) Then
  870.             Exit Sub
  871.         End If
  872.         
  873.         Call Sub_ShowFindBill
  874.     End With
  875. End Sub
  876. Private Sub Sub_ShowFindBill()      '显示用户在单据列表中查询定位单据
  877.     With PZ_FrmPzcxjg
  878.         '填充查询凭证标识
  879.         Lab_VouchId.Caption = Val(.CxbbGrid.TextMatrix(.CxbbGrid.Row, 0))
  880.         
  881.         Call Sub_ShowBill
  882.     End With
  883. End Sub
  884. Private Function Fun_AllowEdit() As Boolean                      '判断当前凭证是否允许编辑或删除
  885.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  886.     
  887.     Sqlstr = "Select CheckFlag,BookFlag,Checker,Book From Cwzz_AccVouchMain Where VouchID=" & Val(Lab_VouchId.Caption)
  888.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  889.     With RecTemp
  890.         If Not .EOF Then
  891.             If .Fields("CheckFlag") Or .Fields("BookFlag") Then
  892.                 Tsxx = "该凭证已审核或记帐,不允许修改或删除!"
  893.                 Call Xtxxts(Tsxx, 0, 4)
  894.                 Lab_Checker = Trim(.Fields("Checker") & "")
  895.                 Lab_Book = Trim(.Fields("Book") & "")
  896.                 Exit Function
  897.             End If
  898.         End If
  899.     End With
  900.     Fun_AllowEdit = True
  901. End Function
  902. Public Sub Sub_Scpzbb(Cxsjwg As VSFlexGrid)                            '生成预览凭证报表
  903.     
  904.     '过程参数:输出数据网格
  905.     
  906.     Dim Yxhzjsq%, Yxlzjsq%       '有效列值计数器,有效行值计数器
  907.     Dim Rowjsq As Long           '临时行计数器
  908.     Dim Sjhjsq As Long           '数据行计数器
  909.     Dim Int_Pzmyhs As Integer    '凭证每页数据行数
  910.     Dim Dbl_Jfhj As Double       '借方合计
  911.     Dim Dbl_Dfhj As Double       '贷方合计
  912.     
  913.     Dim CodeRs As New ADODB.Recordset  '会计科目记录集,用以确定是否进行汇总打印,及汇总打印的科目代码和名称
  914.     Dim strCode As String '科目代码
  915.     Dim strCodeName As String '科目名称
  916.     Dim Dbl_Jfje  As Double '借方金额
  917.     Dim Dbl_Dfje   As Double '贷方金额
  918.     Dim I As Integer '循环变量
  919.     Dim Lng_FindRow As Long  '汇总科目所在行
  920.     
  921.     
  922.     '生成有效数据表
  923.     With DY_Tybbyldy.DyylGrid
  924.         .FontName = Cxsjwg.FontName
  925.         .FontSize = Cxsjwg.FontSize
  926.         .FixedRows = Cxsjwg.FixedRows
  927.         .MergeCells = flexMergeFixedOnly
  928.         For Jsqte = 0 To .FixedRows - 1
  929.             .MergeRow(Jsqte) = True
  930.         Next Jsqte
  931.         .WordWrap = True
  932.         
  933.         '重置数据列
  934.         Yxlzjsq = 4
  935.         .Cols = Yxlzjsq
  936.         
  937.         .ColAlignment(2) = Cxsjwg.ColAlignment(Sydz("004", GridStr(), Szzls))
  938.         .ColAlignment(3) = Cxsjwg.ColAlignment(Sydz("005", GridStr(), Szzls))
  939.         .ColWidth(0) = Cxsjwg.ColWidth(Sydz("001", GridStr(), Szzls))
  940.         .ColWidth(1) = Cxsjwg.ColWidth(Sydz("002", GridStr(), Szzls)) + Cxsjwg.ColWidth(Sydz("003", GridStr(), Szzls))
  941.         .ColWidth(2) = Cxsjwg.ColWidth(Sydz("004", GridStr(), Szzls))
  942.         .ColWidth(3) = Cxsjwg.ColWidth(Sydz("005", GridStr(), Szzls))
  943.         .ColFormat(2) = Cxsjwg.ColFormat(Sydz("004", GridStr(), Szzls))
  944.         .ColFormat(3) = Cxsjwg.ColFormat(Sydz("005", GridStr(), Szzls))
  945.         
  946.         For Yxlzjsq = 0 To 3
  947.             .MergeCol(Yxlzjsq) = True
  948.         Next Yxlzjsq
  949.         
  950.         '设置标题行
  951.         .Rows = Cxsjwg.FixedRows
  952.         
  953.         .TextMatrix(0, 0) = Cxsjwg.TextMatrix(0, Sydz("001", GridStr(), Szzls))
  954.         .TextMatrix(0, 1) = "科  目  名  称"
  955.         .TextMatrix(0, 2) = Cxsjwg.TextMatrix(0, Sydz("004", GridStr(), Szzls))
  956.         .TextMatrix(0, 3) = Cxsjwg.TextMatrix(0, Sydz("005", GridStr(), Szzls))
  957.         .RowHeight(0) = Cxsjwg.RowHeight(0)
  958.         
  959.         DY_Tybbyldy.DyylGrid.Cols = DY_Tybbyldy.DyylGrid.Cols + 1  '填加一辅助列保存汇总科目编码
  960.         
  961.         For Rowjsq = Cxsjwg.FixedRows To Cxsjwg.Rows - 1
  962.             If (Not Cxsjwg.RowHidden(Rowjsq)) And (Not GridRowEmpty(Cxsjwg, Rowjsq)) Then
  963.                 
  964.                 '判断本张凭证是否汇总打印,如汇总打印则在目标网格中查找汇总科目,如存在则累加,否则增加一新行
  965.                 If Chk_SumPrint.Value = 1 Then
  966.                     
  967.                     strCode = Cxsjwg.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)) '科目代码
  968.                     
  969.                     Set CodeRs = Cw_DataEnvi.DataConnect.Execute("SELECT cCode,cName,cSumCode,iIfSum FROM Cwzz_AccCode WHERE cCode='" & strCode & "'")
  970.                     
  971.                     If CodeRs!iIfSum = True And Trim(CodeRs!cSumCode & "") <> "" Then '如果汇总打印,成立条件为““汇总打印标识”为TRUE,且“汇总科目代码”不为空
  972.                         
  973.                         strCode = Trim(CodeRs!cSumCode)  '汇总打印代码
  974.                         
  975.                         Set CodeRs = Cw_DataEnvi.DataConnect.Execute("SELECT cName FROM Cwzz_AccCode WHERE cCode='" & strCode & "'")
  976.                         
  977.                         strCodeName = Trim(CodeRs!cname) '汇总科目名称
  978.                         
  979.                         Dbl_Jfje = Val(Cxsjwg.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))        '借方金额
  980.                         Dbl_Dfje = Val(Cxsjwg.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))        '贷方金额
  981.                         
  982.                         Lng_FindRow = .FindRow(strCode, , .Cols - 1)
  983.                         
  984.                         If Lng_FindRow <> -1 Then
  985.                             
  986.                             '借
  987.                             If Val(.TextMatrix(Lng_FindRow, 2)) + Dbl_Jfje <> 0 Then
  988.                                 .TextMatrix(Lng_FindRow, 2) = Val(.TextMatrix(Lng_FindRow, 2)) + Dbl_Jfje
  989.                             Else
  990.                                 .TextMatrix(Lng_FindRow, 2) = ""
  991.                             End If
  992.                             '贷
  993.                             If Val(.TextMatrix(Lng_FindRow, 3)) + Dbl_Dfje <> 0 Then
  994.                                 .TextMatrix(Lng_FindRow, 3) = Val(.TextMatrix(Lng_FindRow, 3)) + Dbl_Dfje
  995.                             Else
  996.                                 .TextMatrix(Lng_FindRow, 3) = ""
  997.                             End If
  998.                             
  999.                         Else
  1000.                             
  1001.                             .AddItem ""
  1002.                             .RowHeight(.Rows - 1) = Cxsjwg.RowHeight(Rowjsq)
  1003.                             
  1004.                             '摘要
  1005.                             .TextMatrix(.Rows - 1, 0) = Cxsjwg.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))
  1006.                             
  1007.                             '输出科目名称
  1008.                             If Chk_CodeOutput.Value = 1 Then
  1009.                                 .TextMatrix(.Rows - 1, 1) = strCode + " " + strCodeName
  1010.                             Else
  1011.                                 .TextMatrix(.Rows - 1, 1) = strCodeName
  1012.                             End If
  1013.                             
  1014.                             .TextMatrix(.Rows - 1, .Cols - 1) = strCode
  1015.                             
  1016.                             '借
  1017.                             If Dbl_Jfje <> 0 Then
  1018.                                 .TextMatrix(.Rows - 1, 2) = Dbl_Jfje
  1019.                             Else
  1020.                                 .TextMatrix(.Rows - 1, 2) = ""
  1021.                             End If
  1022.                             '贷
  1023.                             If Dbl_Dfje <> 0 Then
  1024.                                 .TextMatrix(.Rows - 1, 3) = Dbl_Dfje
  1025.                             Else
  1026.                                 .TextMatrix(.Rows - 1, 3) = ""
  1027.                             End If
  1028.                             
  1029.                         End If  '汇总输出完毕
  1030.                         
  1031.                     Else
  1032.                         
  1033.                         .AddItem ""
  1034.                         .RowHeight(.Rows - 1) = Cxsjwg.RowHeight(Rowjsq)
  1035.                         
  1036.                         '摘要
  1037.                         .TextMatrix(.Rows - 1, 0) = Cxsjwg.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))
  1038.                         
  1039.                         '输出科目名称
  1040.                         If Chk_CodeOutput.Value = 1 Then
  1041.                             .TextMatrix(.Rows - 1, 1) = Cxsjwg.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)) + " " + Cxsjwg.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls))
  1042.                         Else
  1043.                             .TextMatrix(.Rows - 1, 1) = Cxsjwg.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls))
  1044.                         End If
  1045.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 2)) <> "" Then    '结算方式
  1046.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 2))
  1047.                         End If
  1048.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 3)) <> "" Then    '票号
  1049.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 3))
  1050.                         End If
  1051.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 4)) <> "" Then    '发生日期
  1052.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 4))
  1053.                         End If
  1054.                         If Val(Cxsjwg.TextMatrix(Rowjsq, 5)) <> 0 Then      '数量
  1055.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 5)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 7))
  1056.                         End If
  1057.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 9)) <> "" Then    '外币名称
  1058.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 10)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 9))
  1059.                         End If
  1060.                         If Val(Cxsjwg.TextMatrix(Rowjsq, 11)) <> 0 Then      '记帐汇率
  1061.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + "汇率:" + Trim(Cxsjwg.TextMatrix(Rowjsq, 11))
  1062.                         End If
  1063.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 13)) <> "" Then    '部门
  1064.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 13))
  1065.                         End If
  1066.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 15)) <> "" Then    '往来客户
  1067.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 15))
  1068.                         End If
  1069.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 26)) <> "" Then    '往来供应商
  1070.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 26))
  1071.                         End If
  1072.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 17)) <> "" Then    '职员
  1073.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 17))
  1074.                         End If
  1075.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 19)) <> "" Then    '项目大类
  1076.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 19))
  1077.                         End If
  1078.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 21)) <> "" Then    '项目名称
  1079.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 21))
  1080.                         End If
  1081.                         If Val(Cxsjwg.TextMatrix(Rowjsq, 22)) <> 0 Then      '项目数量单位
  1082.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 22)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 23))
  1083.                         End If
  1084.                         If Trim(Cxsjwg.TextMatrix(Rowjsq, 24)) <> "" Then    '经办人
  1085.                             .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + "经办人:" + Trim(Cxsjwg.TextMatrix(Rowjsq, 24))
  1086.                         End If
  1087.                         
  1088.                         '借方金额
  1089.                         .TextMatrix(.Rows - 1, 2) = Cxsjwg.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))
  1090.                         
  1091.                         '贷方金额
  1092.                         .TextMatrix(.Rows - 1, 3) = Cxsjwg.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls))
  1093.                         
  1094.                     End If   '凭证汇总输出
  1095.                     
  1096.                 Else
  1097.                     
  1098.                     .AddItem ""
  1099.                     .RowHeight(.Rows - 1) = Cxsjwg.RowHeight(Rowjsq)
  1100.                     
  1101.                     '摘要
  1102.                     .TextMatrix(.Rows - 1, 0) = Cxsjwg.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))
  1103.                     
  1104.                     '输出科目名称
  1105.                     If Chk_CodeOutput.Value = 1 Then
  1106.                         .TextMatrix(.Rows - 1, 1) = Cxsjwg.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)) + " " + Cxsjwg.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls))
  1107.                     Else
  1108.                         .TextMatrix(.Rows - 1, 1) = Cxsjwg.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls))
  1109.                     End If
  1110.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 2)) <> "" Then    '结算方式
  1111.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 2))
  1112.                     End If
  1113.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 3)) <> "" Then    '票号
  1114.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 3))
  1115.                     End If
  1116.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 4)) <> "" Then    '发生日期
  1117.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 4))
  1118.                     End If
  1119.                     If Val(Cxsjwg.TextMatrix(Rowjsq, 5)) <> 0 Then      '数量
  1120.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 5)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 7))
  1121.                     End If
  1122.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 9)) <> "" Then    '外币名称
  1123.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 10)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 9))
  1124.                     End If
  1125.                     If Val(Cxsjwg.TextMatrix(Rowjsq, 11)) <> 0 Then      '记帐汇率
  1126.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + "汇率:" + Trim(Cxsjwg.TextMatrix(Rowjsq, 11))
  1127.                     End If
  1128.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 13)) <> "" Then    '部门
  1129.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 13))
  1130.                     End If
  1131.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 15)) <> "" Then    '往来客户
  1132.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 15))
  1133.                     End If
  1134.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 26)) <> "" Then    '往来供应商
  1135.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 26))
  1136.                     End If
  1137.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 17)) <> "" Then    '职员
  1138.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 17))
  1139.                     End If
  1140.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 19)) <> "" Then    '项目大类
  1141.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 19))
  1142.                     End If
  1143.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 21)) <> "" Then    '项目名称
  1144.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 21))
  1145.                     End If
  1146.                     If Val(Cxsjwg.TextMatrix(Rowjsq, 22)) <> 0 Then      '项目数量单位
  1147.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + Trim(Cxsjwg.TextMatrix(Rowjsq, 22)) + Trim(Cxsjwg.TextMatrix(Rowjsq, 23))
  1148.                     End If
  1149.                     If Trim(Cxsjwg.TextMatrix(Rowjsq, 24)) <> "" Then    '经办人
  1150.                         .TextMatrix(.Rows - 1, 1) = .TextMatrix(.Rows - 1, 1) + Space(2) + "经办人:" + Trim(Cxsjwg.TextMatrix(Rowjsq, 24))
  1151.                     End If
  1152.                     
  1153.                     '借方金额
  1154.                     .TextMatrix(.Rows - 1, 2) = Cxsjwg.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))
  1155.                     
  1156.                     '贷方金额
  1157.                     .TextMatrix(.Rows - 1, 3) = Cxsjwg.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls))
  1158.                     
  1159.                 End If  '本张凭证非汇总打印
  1160.                 
  1161.             End If
  1162.             
  1163.         Next Rowjsq
  1164.         
  1165.         DY_Tybbyldy.DyylGrid.Cols = DY_Tybbyldy.DyylGrid.Cols - 1  '去除汇总打印辅助列
  1166.         
  1167.         '===凭证数据输出完毕====
  1168.         
  1169.         '补空行和添加分页合计
  1170.         Int_Pzmyhs = 6
  1171.         
  1172.         If .Rows - .FixedRows = 0 Then
  1173.             Exit Sub
  1174.         Else
  1175.             If (.Rows - .FixedRows) Mod Int_Pzmyhs <> 0 Then
  1176.                 For Jsqte = 1 To Int_Pzmyhs - ((.Rows - .FixedRows) Mod Int_Pzmyhs)
  1177.                     .AddItem ""
  1178.                     .RowHeight(.Rows - 1) = Sjhgd
  1179.                 Next Jsqte
  1180.             End If
  1181.         End If
  1182.         
  1183.         Dbl_Jfhj = 0
  1184.         Dbl_Dfhj = 0
  1185.         Sjhjsq = 1
  1186.         Rowjsq = .FixedRows
  1187.         Do While Rowjsq <= .Rows - 1
  1188.             
  1189.             Dbl_Jfhj = Dbl_Jfhj + Val(.TextMatrix(Rowjsq, 2))
  1190.             Dbl_Dfhj = Dbl_Dfhj + Val(.TextMatrix(Rowjsq, 3))
  1191.             
  1192.             If Sjhjsq Mod Int_Pzmyhs = 0 Then
  1193.                 Rowjsq = Rowjsq + 1
  1194.                 .AddItem "", Rowjsq
  1195.                 .RowHeight(Rowjsq) = Sjhgd
  1196.                 .TextMatrix(Rowjsq, 0) = "合 计"
  1197.                 .TextMatrix(Rowjsq, 2) = Format(Dbl_Jfhj, "##." + String(Xtjexsws, "0"))
  1198.                 .TextMatrix(Rowjsq, 3) = Format(Dbl_Dfhj, "##." + String(Xtjexsws, "0"))
  1199.                 
  1200.                 '最后合计输出金额大写
  1201.                 If Rowjsq = .Rows - 1 Then
  1202.                     .TextMatrix(Rowjsq, 1) = Fun_Jezh(Dbl_Jfhj)
  1203.                 End If
  1204.             End If
  1205.             
  1206.             Sjhjsq = Sjhjsq + 1
  1207.             Rowjsq = Rowjsq + 1
  1208.             
  1209.         Loop
  1210.     End With
  1211.     
  1212. End Sub
  1213. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改======================='
  1214. Private Sub Sub_AdjustGrid()
  1215.     '调 整 网 格
  1216.     With WglrGrid
  1217.         '加 1 保持一行录入行
  1218.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1219.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1220.             For Jsqte = .FixedRows To .Rows - 1
  1221.                 .RowHeight(Jsqte) = Sjhgd
  1222.             Next Jsqte
  1223.         Else
  1224.             '判断是否有辅助行和录入行,如没有则加行
  1225.             Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  1226.                 .AddItem ""
  1227.                 .RowHeight(.Rows - 1) = Sjhgd
  1228.             Loop
  1229.         End If
  1230.     End With
  1231. End Sub
  1232. Private Sub Lrzdbz()                                                      '录入字段帮助
  1233.     If Not Ydcommand.Visible Then
  1234.         Exit Sub
  1235.     End If
  1236.     Valilock = True
  1237.     With WglrGrid
  1238.         
  1239.         '[>>会计科目编码帮助单独处理
  1240.         If .Col = Sydz("002", GridStr(), Szzls) Then
  1241.             Xtcdcs = Trim(Ydtext.Text)
  1242.             PZ_FrmKjkmcz.Show 1
  1243.             If Len(Xtfhcs) <> 0 Then
  1244.                 Ydtext.Text = Xtfhcs
  1245.             End If
  1246.         Else
  1247.             
  1248.             '处理通用部分
  1249.             changelock = True        '调入另外窗体必须加锁
  1250.             Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  1251.             changelock = False
  1252.             If Len(Xtfhcs) <> 0 Then
  1253.                 If GridInt(.Col, 7) = 0 Then
  1254.                     Ydtext.Text = Xtfhcs
  1255.                 Else
  1256.                     Ydtext.Text = Xtfhcsfz
  1257.                 End If
  1258.             End If
  1259.         End If
  1260.         '[>>处理完毕
  1261.         
  1262.         Valilock = False
  1263.         If Ydtext.Visible Then
  1264.             Ydtext.SetFocus
  1265.         End If
  1266.     End With
  1267. End Sub
  1268. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  1269.     Dim Lrwglkd As Double
  1270.     Dim Hjwgpyl As Integer
  1271.     With HjGrid
  1272.         If Not Sfxshjwg Then
  1273.             .Visible = False
  1274.             Exit Sub
  1275.         Else
  1276.             .Visible = True
  1277.         End If
  1278.         .Enabled = False
  1279.         .Appearance = flexFlat
  1280.         .BorderStyle = flexBorderNone
  1281.         .ScrollBars = flexScrollBarNone
  1282.         .Width = WglrGrid.Width
  1283.         .FixedRows = 0
  1284.         .Rows = 1
  1285.         .Cols = WglrGrid.Cols
  1286.         .LeftCol = WglrGrid.LeftCol
  1287.         .TextMatrix(0, Qslz) = "合  计"
  1288.         For Jsqte = 0 To WglrGrid.Cols - 1
  1289.             .ColHidden(Jsqte) = WglrGrid.ColHidden(Jsqte)
  1290.             .ColWidth(Jsqte) = WglrGrid.ColWidth(Jsqte)
  1291.             .ColAlignment(Jsqte) = WglrGrid.ColAlignment(Jsqte)
  1292.             .ColFormat(Jsqte) = WglrGrid.ColFormat(Jsqte)
  1293.         Next Jsqte
  1294.         .ColAlignment(Qslz) = flexAlignCenterTop
  1295.         For Jsqte = .FixedRows To .Rows - 1
  1296.             .RowHeight(Jsqte) = .Height / .Rows
  1297.         Next Jsqte
  1298.         .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  1299.     End With
  1300. End Sub
  1301. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  1302.     Call Cxxswbk
  1303. End Sub
  1304. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  1305.     Fun_Drfrmyxxpd = True
  1306.     With WglrGrid
  1307.         
  1308.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  1309.         
  1310.         If Ydtext.Visible Or YdCombo.Visible Then
  1311.             Call Lrsjhx
  1312.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1313.                 Fun_Drfrmyxxpd = False
  1314.                 Exit Function
  1315.             End If
  1316.         End If
  1317.         
  1318.         '进行行有效性判断
  1319.         If Not Sjhzyxxpd(.Row) Then
  1320.             Fun_Drfrmyxxpd = False
  1321.             Exit Function
  1322.         End If
  1323.         
  1324.     End With
  1325. End Function
  1326. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  1327.     If HjGrid.Visible Then
  1328.         With HjGrid
  1329.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  1330.         End With
  1331.     End If
  1332. End Sub
  1333. Private Sub WglrGrid_EnterCell()                                    '显示当前数据行相关信息
  1334.     With WglrGrid
  1335.         If .Row >= .FixedRows Then
  1336.             Lab_Row = Trim(Str(.Row - .FixedRows + 1))
  1337.             
  1338.             '显示备注信息
  1339.             Call Sub_ShowMemo(WglrGrid.Row)
  1340.         End If
  1341.     End With
  1342. End Sub
  1343. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  1344.     
  1345.     '网格得到焦点,如果当前选择行为非数据行
  1346.     '则调整当前焦点至有效数据行
  1347.     
  1348.     With WglrGrid
  1349.         If .Row < .FixedRows And .Rows > .FixedRows Then
  1350.             changelock = True
  1351.             .Select .FixedRows, .Col
  1352.             changelock = False
  1353.         End If
  1354.         If .Col < Qslz Then
  1355.             changelock = True
  1356.             .Select .Row, Qslz
  1357.             changelock = False
  1358.         End If
  1359.     End With
  1360.     
  1361. End Sub
  1362. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  1363.     
  1364.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  1365.     If changelock Then
  1366.         Exit Sub
  1367.     End If
  1368.     
  1369.     '引发网格RowcolChange事件
  1370.     With WglrGrid
  1371.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1372.             .Select 0, 0
  1373.         End If
  1374.     End With
  1375.     
  1376. End Sub
  1377. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  1378.     
  1379.     If Gdtlock Then
  1380.         Exit Sub
  1381.     End If
  1382.     
  1383.     With WglrGrid
  1384.         If Ydtext.Visible Or YdCombo.Visible Then
  1385.             Gdtlock = True
  1386.             .TopRow = Dqtoprow
  1387.             .LeftCol = Dqleftcol
  1388.             Gdtlock = False
  1389.             Exit Sub
  1390.         End If
  1391.         HjGrid.LeftCol = .LeftCol
  1392.     End With
  1393. End Sub
  1394. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  1395.     If changelock Then
  1396.         Exit Sub
  1397.     End If
  1398.     
  1399.     '记录刚刚离开网格单元的行列值
  1400.     Dqlkwgh = WglrGrid.Row
  1401.     Dqlkwgl = WglrGrid.Col
  1402.     
  1403.     '判断是否需要录入数据回写
  1404.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1405.         Exit Sub
  1406.     End If
  1407.     Call Lrsjhx
  1408. End Sub
  1409. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  1410.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  1411.     With WglrGrid
  1412.         If changelock Then
  1413.             Exit Sub
  1414.         End If
  1415.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1416.             Exit Sub
  1417.         End If
  1418.         If .Row <> Dqlkwgh Then
  1419.             If Not Sjhzyxxpd(Dqlkwgh) Then
  1420.                 Exit Sub
  1421.             End If
  1422.         End If
  1423.     End With
  1424.     Call fhyxh
  1425.     Call Xldql
  1426.     
  1427. End Sub
  1428. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  1429.     With WglrGrid
  1430.         Call xswbk
  1431.     End With
  1432. End Sub
  1433. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  1434.     Valilock = True
  1435.     Ydtext.Visible = False
  1436.     YdCombo.Visible = False
  1437.     Ydcommand.Visible = False
  1438. End Sub
  1439. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  1440.     With WglrGrid
  1441.         Select Case KeyCode
  1442.         Case vbKeyEscape                'ESC 键放弃录入
  1443.             Valilock = True
  1444.             .SetFocus
  1445.             Call Ycwbk
  1446.             Valilock = False
  1447.         Case vbKeyReturn                '回 车 键 =13
  1448.             KeyCode = 0
  1449.             .SetFocus
  1450.             Call Lrsjhx
  1451.             Rowjsq = .Row
  1452.             Coljsq = .Col + 1
  1453.             If Coljsq > .Cols - 1 Then
  1454.                 If Rowjsq < .Rows - 1 Then
  1455.                     Rowjsq = Rowjsq + 1
  1456.                 End If
  1457.                 Coljsq = Qslz
  1458.             End If
  1459.             Do While Rowjsq <= .Rows - 1
  1460.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1461.                     Coljsq = Coljsq + 1
  1462.                     If Coljsq > .Cols - 1 Then
  1463.                         Rowjsq = Rowjsq + 1
  1464.                         Coljsq = Qslz
  1465.                     End If
  1466.                 Else
  1467.                     Exit Do
  1468.                 End If
  1469.             Loop
  1470.             .Select Rowjsq, Coljsq
  1471.         Case vbKeyLeft                  '左 箭 头 =37
  1472.             If .Col - 1 = Qslz Then
  1473.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1474.                     GoTo jzzx
  1475.                 End If
  1476.             End If
  1477.             If .Col > Qslz Then
  1478.                 KeyCode = 0
  1479.                 .SetFocus
  1480.                 Call Lrsjhx
  1481.                 Coljsq = .Col - 1
  1482.                 Do While Coljsq > Qslz
  1483.                     If Coljsq - 1 = Qslz Then
  1484.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1485.                             GoTo jzzx
  1486.                         End If
  1487.                     End If
  1488.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1489.                         Coljsq = Coljsq - 1
  1490.                     Else
  1491.                         Exit Do
  1492.                     End If
  1493.                 Loop
  1494.                 .Select .Row, Coljsq
  1495.             End If
  1496.             
  1497.         Case vbKeyRight                 '右 箭 头 =39
  1498.             KeyCode = 0
  1499.             .SetFocus
  1500.             Call Lrsjhx
  1501.             Rowjsq = .Row
  1502.             Coljsq = .Col + 1
  1503.             If Coljsq > .Cols - 1 Then
  1504.                 If Rowjsq < .Rows - 1 Then
  1505.                     Rowjsq = Rowjsq + 1
  1506.                 End If
  1507.                 Coljsq = Qslz
  1508.             End If
  1509.             Do While Rowjsq <= .Rows - 1
  1510.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1511.                     Coljsq = Coljsq + 1
  1512.                     If Coljsq > .Cols - 1 Then
  1513.                         Rowjsq = Rowjsq + 1
  1514.                         Coljsq = Qslz
  1515.                     End If
  1516.                 Else
  1517.                     Exit Do
  1518.                 End If
  1519.             Loop
  1520.             .Select Rowjsq, Coljsq
  1521.         Case Else
  1522.         End Select
  1523.         
  1524. jzzx:
  1525.         
  1526.     End With
  1527. End Sub
  1528. Private Sub YdCombo_LostFocus()
  1529.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  1530.         If Not Valilock Then                           '为TRUE
  1531.             Call Lrsjhx
  1532.             If Not Sjhzyxxpd(Dqlrwgh) Then
  1533.                 Exit Sub
  1534.             End If
  1535.         End If
  1536.     End With
  1537. End Sub
  1538. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  1539.     Call Lrzdbz
  1540. End Sub
  1541. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  1542.     Dim Rowjsq As Long, Coljsq As Long
  1543.     With WglrGrid
  1544.         Select Case KeyCode
  1545.         Case vbKeyF2
  1546.             Call Lrzdbz
  1547.         Case vbKeyEscape                'ESC 键放弃录入
  1548.             Valilock = True
  1549.             Call Ycwbk
  1550.             .SetFocus
  1551.         Case vbKeyReturn                '回 车 键 =13
  1552.             KeyCode = 0
  1553.             .SetFocus
  1554.             Call Lrsjhx
  1555.             Rowjsq = .Row
  1556.             Coljsq = .Col + 1
  1557.             If Coljsq > .Cols - 1 Then
  1558.                 If Rowjsq < .Rows - 1 Then
  1559.                     Rowjsq = Rowjsq + 1
  1560.                 End If
  1561.                 Coljsq = Qslz
  1562.             End If
  1563.             Do While Rowjsq <= .Rows - 1
  1564.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1565.                     Coljsq = Coljsq + 1
  1566.                     If Coljsq > .Cols - 1 Then
  1567.                         Rowjsq = Rowjsq + 1
  1568.                         Coljsq = Qslz
  1569.                     End If
  1570.                 Else
  1571.                     Exit Do
  1572.                 End If
  1573.             Loop
  1574.             If Rowjsq <= .Rows - 1 Then
  1575.                 .Select Rowjsq, Coljsq
  1576.             End If
  1577.         Case vbKeyUp                    '上 箭 头 =38
  1578.             KeyCode = 0
  1579.             .SetFocus
  1580.             Call Lrsjhx
  1581.             If .Row > .FixedRows Then
  1582.                 .Row = .Row - 1
  1583.             End If
  1584.         Case vbKeyDown                  '下 箭 头 =40
  1585.             KeyCode = 0
  1586.             .SetFocus
  1587.             Call Lrsjhx
  1588.             If .Row < .Rows - 1 Then
  1589.                 .Row = .Row + 1
  1590.             End If
  1591.         Case vbKeyLeft                  '左 箭 头 =37
  1592.             If .Col - 1 = Qslz Then
  1593.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1594.                     GoTo jzzx
  1595.                 End If
  1596.             End If
  1597.             If Ydtext.SelStart = 0 And .Col > Qslz Then
  1598.                 KeyCode = 0
  1599.                 .SetFocus
  1600.                 Call Lrsjhx
  1601.                 Coljsq = .Col - 1
  1602.                 Do While Coljsq > Qslz
  1603.                     If Coljsq - 1 = Qslz Then
  1604.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1605.                             GoTo jzzx
  1606.                         End If
  1607.                     End If
  1608.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1609.                         Coljsq = Coljsq - 1
  1610.                     Else
  1611.                         Exit Do
  1612.                     End If
  1613.                 Loop
  1614.                 .Select .Row, Coljsq
  1615.             End If
  1616. jzzx:
  1617.             
  1618.             
  1619.         Case vbKeyRight                 '右 箭 头 =39
  1620.             wblong = Len(Ydtext.Text)
  1621.             If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  1622.                 KeyCode = 0
  1623.                 .SetFocus
  1624.                 Call Lrsjhx
  1625.                 Rowjsq = .Row
  1626.                 Coljsq = .Col + 1
  1627.                 If Coljsq > .Cols - 1 Then
  1628.                     If Rowjsq < .Rows - 1 Then
  1629.                         Rowjsq = Rowjsq + 1
  1630.                     End If
  1631.                     Coljsq = Qslz
  1632.                 End If
  1633.                 Do While Rowjsq <= .Rows - 1
  1634.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1635.                         Coljsq = Coljsq + 1
  1636.                         If Coljsq > .Cols - 1 Then
  1637.                             Rowjsq = Rowjsq + 1
  1638.                             Coljsq = Qslz
  1639.                         End If
  1640.                     Else
  1641.                         Exit Do
  1642.                     End If
  1643.                 Loop
  1644.                 .Select Rowjsq, Coljsq
  1645.             End If
  1646.         Case Else
  1647.         End Select
  1648.     End With
  1649. End Sub
  1650. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  1651.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1652.     If KeyAscii <> 0 Then
  1653.         Call Xyxhbz(Dqlrwgh)
  1654.     End If
  1655.     
  1656. End Sub
  1657. Private Sub ydtext_Change()                              '录入事中变化处理
  1658.     
  1659.     '防止程序改变但不进行处理
  1660.     
  1661.     If Wbkbhlock Then
  1662.         Exit Sub
  1663.     End If
  1664.     
  1665.     With WglrGrid
  1666.         
  1667.         '限制字段录入长度
  1668.         Wbkbhlock = True
  1669.         Select Case GridInt(.Col, 1)
  1670.         Case 8
  1671.             Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  1672.         Case 9
  1673.             Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  1674.         Case 10
  1675.             Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1676.         Case Else
  1677.             If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  1678.                 Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  1679.             End If
  1680.         End Select
  1681.         Wbkbhlock = False
  1682.     End With
  1683. End Sub
  1684. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  1685.     With WglrGrid
  1686.         If Not Valilock Then
  1687.             Call Lrsjhx
  1688.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1689.                 Exit Sub
  1690.             End If
  1691.             If Not Sjhzyxxpd(Dqlrwgh) Then
  1692.                 Exit Sub
  1693.             End If
  1694.         End If
  1695.     End With
  1696. End Sub
  1697. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  1698.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  1699.     
  1700.     '如果单据操作状态为浏览状态则不能显示录入载体
  1701.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1702.         Exit Sub
  1703.     End If
  1704.     '显示文本框前返回有效行列(解决滚动条问题)
  1705.     Call Xldqh
  1706.     Call Xldql
  1707.     
  1708.     '隐藏文本框,帮助按钮,列表组合框
  1709.     Call Ycwbk
  1710.     
  1711.     With WglrGrid
  1712.         Dqlrwgh = .Row
  1713.         Dqlrwgl = .Col
  1714.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1715.             Exit Sub
  1716.         End If
  1717.         
  1718.         Wbkpy = 30
  1719.         Wbkpy1 = 15
  1720.         
  1721.         If GridBoolean(.Col, 3) Then
  1722.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1723.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1724.             YdCombo.Width = .CellWidth - Wbkpy1
  1725.             Call Wbkcl
  1726.             YdCombo.Visible = True
  1727.             YdCombo.SetFocus
  1728.             Ydcommand.Visible = False
  1729.             Ydtext.Visible = False
  1730.         Else
  1731.             If GridBoolean(.Col, 2) Then
  1732.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1733.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1734.                 Ydcommand.Visible = True
  1735.             Else
  1736.                 Ydcommand.Visible = False
  1737.             End If
  1738.             
  1739.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1740.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1741.             If Ydcommand.Visible Then
  1742.                 If Sfblbzkd Then
  1743.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1744.                 Else
  1745.                     Ydtext.Width = .CellWidth - Wbkpy1
  1746.                 End If
  1747.             Else
  1748.                 Ydtext.Width = .CellWidth - Wbkpy1
  1749.             End If
  1750.             Ydtext.Height = .CellHeight - Wbkpy1
  1751.             
  1752.             If GridInt(.Col, 2) <> 0 Then
  1753.                 Ydtext.MaxLength = GridInt(.Col, 2)
  1754.             Else
  1755.                 Ydtext.MaxLength = 3000
  1756.             End If
  1757.             
  1758.             Call Wbkcl
  1759.             
  1760.             Ydtext.Visible = True
  1761.             Ydtext.SetFocus
  1762.         End If
  1763.         Dqtoprow = .TopRow
  1764.         Dqleftcol = .LeftCol
  1765.         
  1766.         '重置锁值
  1767.         Valilock = False
  1768.         Wbkbhlock = False
  1769.     End With
  1770. End Sub
  1771. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  1772.     
  1773.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  1774.     Wbkpy = 30
  1775.     Wbkpy1 = 15
  1776.     With WglrGrid
  1777.         If YdCombo.Visible Then
  1778.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1779.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1780.             YdCombo.Width = .CellWidth - Wbkpy1
  1781.         End If
  1782.         If Ydcommand.Visible Then
  1783.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1784.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1785.         End If
  1786.         If Ydtext.Visible Then
  1787.             If Ydcommand.Visible Then
  1788.                 If Sfblbzkd Then
  1789.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1790.                 Else
  1791.                     Ydtext.Width = .CellWidth - Wbkpy1
  1792.                 End If
  1793.             Else
  1794.                 Ydtext.Width = .CellWidth - Wbkpy1
  1795.             End If
  1796.             
  1797.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1798.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1799.             Ydtext.Height = .CellHeight - Wbkpy1
  1800.         End If
  1801.     End With
  1802.     
  1803. End Sub
  1804. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  1805.     With WglrGrid
  1806.         If YdCombo.Visible Then
  1807.             .Text = Trim(YdCombo.Text)
  1808.         End If
  1809.         If Ydtext.Visible Then
  1810.             .Text = Trim(Ydtext.Text)
  1811.         End If
  1812.         
  1813.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  1814.         If Zdlrqnr <> Trim(.Text) Then
  1815.             Yxxpdlock = False
  1816.             Hyxxpdlock = False
  1817.         End If
  1818.         
  1819.         '如果字段录入内容不为空则写数据行有效性标志
  1820.         
  1821.         If Len(Trim(.Text)) <> 0 Then
  1822.             Call Xyxhbz(.Row)
  1823.         End If
  1824.         
  1825.         '隐藏文本框,帮助按钮,列表组合框
  1826.         Call Ycwbk
  1827.         
  1828.     End With
  1829. End Sub
  1830. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  1831.     
  1832.     '如果单据操作状态为浏览状态则不能显示录入载体
  1833.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1834.         Exit Sub
  1835.     End If
  1836.     
  1837.     Select Case KeyCode
  1838.     Case vbKeyDelete               '删行
  1839.         Call Scdqfl
  1840.     Case vbKeyInsert               '增行
  1841.         Call zjlrfl
  1842.     End Select
  1843. End Sub
  1844. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                     '网格接受键盘录入
  1845.     Dim Str_ChangeTe As String    '临时交换内容
  1846.     Dim Coljsq As Long            '临时列计数器
  1847.     Dim Int_SaveKey As Integer    '保存KeyAscii值
  1848.     
  1849.     '如果单据操作状态为浏览状态则不能显示录入载体
  1850.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1851.         Exit Sub
  1852.     End If
  1853.     
  1854.     Int_SaveKey = KeyAscii
  1855.     
  1856.     With WglrGrid
  1857.         '屏 蔽 回 车 键
  1858.         If KeyAscii = vbKeyReturn Then
  1859.             KeyAscii = 0
  1860.             Rowjsq = .Row
  1861.             Coljsq = .Col + 1
  1862.             If Coljsq > .Cols - 1 Then
  1863.                 If Rowjsq < .Rows - 1 Then
  1864.                     Rowjsq = Rowjsq + 1
  1865.                 End If
  1866.                 Coljsq = Qslz
  1867.             End If
  1868.             Do While Rowjsq <= .Rows - 1
  1869.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1870.                     Coljsq = Coljsq + 1
  1871.                     If Coljsq > .Cols - 1 Then
  1872.                         Rowjsq = Rowjsq + 1
  1873.                         Coljsq = Qslz
  1874.                     End If
  1875.                 Else
  1876.                     Exit Do
  1877.                 End If
  1878.             Loop
  1879.             If Rowjsq <= .Rows - 1 Then
  1880.                 .Select Rowjsq, Coljsq
  1881.             End If
  1882.             Exit Sub
  1883.         End If
  1884.         '接受用户录入
  1885.         Select Case KeyAscii
  1886.         Case 0 To 32
  1887.             
  1888.             '[>>开始 当用户输入空格时,如果在摘要列则自动填入上条记录录入的摘要内容
  1889.             ' 如果在金额列则交换借贷内容,此段程序不要求有效性判断,否则应另行处理
  1890.             Select Case GridStr(.Col, 1)
  1891.             Case "001"   '摘要
  1892.                 If Len(Trim(WglrGrid.TextMatrix(.Row, .Col))) = 0 And Len(Trim(Str_Digest)) <> 0 Then
  1893.                     
  1894.                     WglrGrid.TextMatrix(.Row, .Col) = Str_Digest
  1895.                     
  1896.                     '写有效行数据标志,并打开行有效性判断锁
  1897.                     Call Xyxhbz(.Row)
  1898.                     Hyxxpdlock = False
  1899.                 End If
  1900.             Case "004", "005"  '借方金额,贷方金额
  1901.                 If Val(WglrGrid.TextMatrix(.Row, .Col)) = 0 Then
  1902.                     Str_ChangeTe = WglrGrid.TextMatrix(.Row, Sydz("004", GridStr(), Szzls))
  1903.                     
  1904.                     WglrGrid.TextMatrix(.Row, Sydz("004", GridStr(), Szzls)) = WglrGrid.TextMatrix(.Row, Sydz("005", GridStr(), Szzls))
  1905.                     
  1906.                     WglrGrid.TextMatrix(.Row, Sydz("005", GridStr(), Szzls)) = Str_ChangeTe
  1907.                     
  1908.                     '写有效行数据标志,并打开行有效性判断锁
  1909.                     Call Xyxhbz(.Row)
  1910.                     Hyxxpdlock = False
  1911.                     
  1912.                     '计算合计数据
  1913.                     For Coljsq = Qslz To .Cols - 1
  1914.                         Call Sjhj(Coljsq)
  1915.                     Next Coljsq
  1916.                 End If
  1917.             End Select
  1918.             
  1919.             '完毕<<]
  1920.             
  1921.             
  1922.             '显示录入载体
  1923.             Call xswbk
  1924.             
  1925.         Case Else
  1926.             
  1927.             '防止非编辑字段SendKeys()出现死循环
  1928.             If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1929.                 Exit Sub
  1930.             End If
  1931.             
  1932.             If GridBoolean(.Col, 3) Then
  1933.                 
  1934.                 '列表框录入
  1935.                 Call xswbk
  1936.                 
  1937.             Else
  1938.                 
  1939.                 '[>>开始 如果用户在借贷金额位置按"="且当前行金额为零则自动计算借贷合计差额填入录入文本框
  1940.                 If Chr(KeyAscii) = "=" And (Val(.TextMatrix(.Row, Sydz("004", GridStr(), Szzls))) = 0 And Val(.TextMatrix(.Row, Sydz("005", GridStr(), Szzls))) = 0) Then
  1941.                     Select Case GridStr(.Col, 1)
  1942.                     Case "004"   '借方金额
  1943.                         Ydtext.Text = ""
  1944.                         Call Xyxhbz(.Row)
  1945.                         Call xswbk
  1946.                         Ydtext.Text = Format(Val(HjGrid.TextMatrix(0, Sydz("005", GridStr(), Szzls))) - Val(HjGrid.TextMatrix(0, .Col)), "##." + String(Xtjexsws, "0"))
  1947.                     Case "005"   '贷方金额
  1948.                         Ydtext.Text = ""
  1949.                         Call Xyxhbz(.Row)
  1950.                         Call xswbk
  1951.                         Ydtext.Text = Format(Val(HjGrid.TextMatrix(0, Sydz("004", GridStr(), Szzls))) - Val(HjGrid.TextMatrix(0, .Col)), "##." + String(Xtjexsws, "0"))
  1952.                         
  1953.                     End Select
  1954.                     
  1955.                     '完毕<<]
  1956.                 Else
  1957.                     
  1958.                     Ydtext.Text = ""
  1959.                     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1960.                     If KeyAscii = 0 Then
  1961.                         Exit Sub
  1962.                     End If
  1963.                     
  1964.                     '写有效行数据标志
  1965.                     Call Xyxhbz(.Row)
  1966.                     Call xswbk
  1967.                     Ydtext.Text = ""
  1968.                     Valilock = True
  1969.                     SendKeys Chr(KeyAscii), True
  1970.                     DoEvents
  1971.                     Valilock = False
  1972.                 End If
  1973.                 
  1974.             End If
  1975.         End Select
  1976.     End With
  1977. End Sub
  1978. Private Sub zjlrfl()                                                    '增加录入分录
  1979.     With WglrGrid
  1980.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1981.             If Not Fun_Drfrmyxxpd Then
  1982.                 Exit Sub
  1983.             End If
  1984.         Else
  1985.             Exit Sub
  1986.         End If
  1987.         If .Row < .FixedRows Then
  1988.             Exit Sub
  1989.         End If
  1990.         .AddItem "", .Row
  1991.         .RowHeight(.Row) = Sjhgd
  1992.         If .Row <> .Rows - 1 Then
  1993.             If .TextMatrix(.Row + 1, 0) = "*" Then
  1994.                 .TextMatrix(.Row, 0) = "*"
  1995.             Else
  1996.                 .RemoveItem .Rows - 1
  1997.             End If
  1998.         End If
  1999.         Call Xldqh
  2000.         Call Xldql
  2001.         Hyxxpdlock = False
  2002.     End With
  2003. End Sub
  2004. Private Sub Scdqfl()                                                    '删除当前分录
  2005.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  2006.     With WglrGrid
  2007.         Scqwghz = .Row
  2008.         Scqwglz = .Col
  2009.         If .TextMatrix(.Row, 0) = "*" Then
  2010.             
  2011.             '判断是否为录入状态
  2012.             If Ydtext.Visible Or YdCombo.Visible Then
  2013.                 Sflrzt = True
  2014.                 Validate = True
  2015.                 Call Lrsjhx
  2016.                 Validate = False
  2017.             End If
  2018.             
  2019.             Call Xldqh
  2020.             changelock = True
  2021.             .Select .Row, 0
  2022.             changelock = False
  2023.             If Shsfts Then
  2024.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  2025.                 Tsxx = "请确认是否删除当前记录?"
  2026.                 Yhanswer = Xtxxts(Tsxx, 2, 2)
  2027.                 If Yhanswer = 2 Then
  2028.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  2029.                     changelock = True
  2030.                     .Select Scqwghz, Scqwglz
  2031.                     changelock = False
  2032.                     
  2033.                     '如为录入状态,则恢复录入
  2034.                     If Sflrzt Then
  2035.                         Call xswbk
  2036.                     End If
  2037.                     
  2038.                     Exit Sub
  2039.                 End If
  2040.             End If
  2041.             .RemoveItem .Row
  2042.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  2043.                 .AddItem ""
  2044.                 .RowHeight(.Rows - 1) = Sjhgd
  2045.             End If
  2046.             changelock = True
  2047.             .Select .Row, Scqwglz
  2048.             changelock = False
  2049.             
  2050.             '重新计算合计数据
  2051.             For Hjlzte = Qslz To .Cols - 1
  2052.                 Call Sjhj(Hjlzte)
  2053.             Next Hjlzte
  2054.             
  2055.         End If
  2056.     End With
  2057. End Sub
  2058. Private Sub Sjhj(Hjwgl As Long)                                         '网格列数据合计
  2059.     Dim Hjjg As Double
  2060.     If Not (GridBoolean(Hjwgl, 4) And HjGrid.Visible) Then
  2061.         Exit Sub
  2062.     End If
  2063.     With WglrGrid
  2064.         Hjjg = 0
  2065.         For Jsqte = .FixedRows To .Rows - 1
  2066.             If .TextMatrix(Jsqte, 0) = "*" Then
  2067.                 Hjjg = Hjjg + Val(.TextMatrix(Jsqte, Hjwgl))
  2068.             End If
  2069.         Next Jsqte
  2070.         If GridBoolean(Hjwgl, 5) And Hjjg = 0 Then
  2071.             HjGrid.TextMatrix(0, Hjwgl) = ""
  2072.         Else
  2073.             HjGrid.TextMatrix(0, Hjwgl) = Hjjg
  2074.         End If
  2075.     End With
  2076. End Sub
  2077. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  2078.     If Not GridBoolean(Sjl, 5) Then
  2079.         Exit Sub
  2080.     End If
  2081.     With WglrGrid
  2082.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  2083.             .TextMatrix(sjh, Sjl) = ""
  2084.         End If
  2085.     End With
  2086. End Sub
  2087. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  2088.     With WglrGrid
  2089.         If .Row >= .FixedRows Then
  2090.             If .TextMatrix(.Row, 0) <> "*" Then
  2091.                 For Rowjsq = .FixedRows To .Rows - 1
  2092.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  2093.                         Exit For
  2094.                     End If
  2095.                 Next Rowjsq
  2096.                 If Rowjsq <= .Rows - 1 Then
  2097.                     changelock = True
  2098.                     .Select Rowjsq, .Col
  2099.                     changelock = False
  2100.                 Else
  2101.                     changelock = True
  2102.                     .Select .Rows - 1, .Col
  2103.                     changelock = False
  2104.                 End If
  2105.             End If
  2106.             Call Xldqh
  2107.         End If
  2108.     End With
  2109. End Sub
  2110. Private Sub Xldqh()                                                      '显露当前行
  2111.     Dim Toprowte As Long
  2112.     With WglrGrid
  2113.         Toprowte = 0
  2114.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  2115.             Toprowte = .TopRow
  2116.             .TopRow = .TopRow + 1
  2117.         Loop
  2118.         Toprowte = 0
  2119.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  2120.             Toprowte = .TopRow
  2121.             If .TopRow > 1 Then
  2122.                 .TopRow = .TopRow - 1
  2123.             End If
  2124.         Loop
  2125.     End With
  2126. End Sub
  2127. Private Sub Xldql()                                                     '显露当前列
  2128.     Dim Leftcolte As Long
  2129.     With WglrGrid
  2130.         If .Col >= Qslz Then
  2131.             If .LeftCol > .Col Then
  2132.                 .LeftCol = .Col
  2133.             End If
  2134.             Leftcolte = 0
  2135.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  2136.                 Leftcolte = .LeftCol
  2137.                 .LeftCol = .LeftCol + 1
  2138.             Loop
  2139.         End If
  2140.     End With
  2141. End Sub
  2142. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  2143.     With WglrGrid
  2144.         For Coljsq = Qslz To .Cols - 1
  2145.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  2146.                 pdhwk = False
  2147.                 Exit Function
  2148.             End If
  2149.         Next Coljsq
  2150.         pdhwk = True
  2151.     End With
  2152. End Function
  2153. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  2154.     With WglrGrid
  2155.         If .TextMatrix(sjh, 0) = "*" Then
  2156.             Exit Sub
  2157.         End If
  2158.         .TextMatrix(sjh, 0) = "*"
  2159.         If sjh >= .Rows - Fzxwghs - 1 Then
  2160.             .AddItem ""
  2161.             .RowHeight(.Rows - 1) = Sjhgd
  2162.         End If
  2163.     End With
  2164. End Sub
  2165. Private Sub GsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)   '表格格式设置(通用)
  2166.     Select Case Button.Key
  2167.     Case "bcgs"                              '保存表格格式
  2168.         Call Bcwggs(WglrGrid, GridCode, GridStr)
  2169.     Case "hfmrgs"                            '恢复默认格式
  2170.         Call Hfmrgs(WglrGrid, GridCode, GridStr)
  2171.     End Select
  2172. End Sub
  2173. Private Sub bbyl(bbylte As Boolean)                                     '打印预览(通用)
  2174.     Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
  2175.     Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
  2176.     Bbxbtgs = 1                                  '报 表 小 标 题 行 数
  2177.     Bbbwhgs = 1                                  '报 表 表 尾 行 数
  2178.     ReDim Bbxbt(1 To Bbxbtgs)
  2179.     ReDim bbxbtzzxs(1 To Bbxbtgs)
  2180.     If Bbbwhgs <> 0 Then
  2181.         ReDim Bbbwh(1 To Bbbwhgs)
  2182.         ReDim Bbbwhzzxs(1 To Bbbwhgs)
  2183.     End If
  2184.     Bbzbt = ReportTitle
  2185.     
  2186.     Bbxbt(1) = Space(45) + Fun_FormatOutPut("制单日期:" + Trim(LrText(1).Text), 30)
  2187.     Bbxbt(1) = Bbxbt(1) + Fun_FormatOutPut("凭证字号:" + Trim(LrText(0).Text) + "-" + Trim(LrText(3).Text), 26)
  2188.     Bbbwh(1) = Fun_FormatOutPut("会计主管:", 18) + Fun_FormatOutPut("记帐:" + Lab_Book, 18)
  2189.     Bbbwh(1) = Bbbwh(1) + Fun_FormatOutPut("出纳:", 18) + Fun_FormatOutPut("审核:" + Lab_Checker, 18)
  2190.     Bbbwh(1) = Bbbwh(1) + Fun_FormatOutPut("制单:" + Lab_Bill, 18) + Trim(Fun_FormatOutPut("附单据数:" + Trim(LrText(2).Text), 23))
  2191.     
  2192.     bbxbtzzxs(1) = 0                             '报表行组织形式(0-居左 1-居中 2-居右)
  2193.     Bbbwhzzxs(1) = 1
  2194.     Call Sub_Scpzbb(WglrGrid)                    '生成报表数据(自定义程序)
  2195.     Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
  2196.     If Not bbylte Then
  2197.         Unload DY_Tybbyldy
  2198.     End If
  2199. End Sub
  2200. '************以下为文本框录入处理程序(固定不变部分)*************'
  2201. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  2202.     
  2203.     '以下为依据实际情况自定义部分[
  2204.     
  2205.     '在此填写文本框录入事后处理程序
  2206.     
  2207.     ']以上为依据实际情况自定义部分
  2208. End Sub
  2209. Private Sub LrText_Change(Index As Integer)
  2210.     
  2211.     '屏蔽程序改变控制
  2212.     If TextChangeLock Then
  2213.         Exit Sub
  2214.     End If
  2215.     
  2216.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  2217.     
  2218.     '限制字段录入长度
  2219.     
  2220.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  2221.     Select Case Textint(Index, 1)
  2222.     Case 8           '金额型
  2223.         Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  2224.     Case 9           '数量型
  2225.         Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  2226.     Case 10          '单价型
  2227.         Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  2228.     Case Else        '其他小数类型控制
  2229.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  2230.             Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  2231.         End If
  2232.     End Select
  2233.     
  2234.     '[>>随时计算最新单据号
  2235.     If Index = 0 Then
  2236.         Call Sub_JsVouchNo
  2237.     End If
  2238.     '<<]
  2239.     
  2240.     TextChangeLock = False '解锁
  2241.     
  2242. End Sub
  2243. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  2244.     Call TextShow(Index)
  2245. End Sub
  2246. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  2247.     Select Case KeyCode
  2248.     Case vbKeyF2
  2249.         Call Text_Help(Index)
  2250.     End Select
  2251. End Sub
  2252. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  2253.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  2254. End Sub
  2255. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  2256.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  2257.         Call TextYxxpd(Index)
  2258.     End If
  2259. End Sub
  2260. Private Sub Ydcommand1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  2261.     Call Text_Help(Ydcommand1.Tag)
  2262. End Sub
  2263. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  2264.     If Not Ydcommand1.Visible Then
  2265.         Exit Sub
  2266.     End If
  2267.     TextValiLock = True
  2268.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  2269.     If Len(Xtfhcs) <> 0 Then
  2270.         If Textint(Index, 3) = 1 Then
  2271.             LrText(Index).Text = Xtfhcsfz
  2272.             LrText(Index).Tag = Xtfhcs
  2273.         Else
  2274.             LrText(Index).Text = Xtfhcs
  2275.             LrText(Index).Tag = Xtfhcsfz
  2276.         End If
  2277.         
  2278.     End If
  2279.     TextValiLock = False
  2280.     LrText(Index).SetFocus
  2281. End Sub
  2282. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  2283.     If Textboolean(Index, 1) Then
  2284.         Ydcommand1.Visible = True
  2285.         Ydcommand1.Move LrText(Index).Left + LrText(Index).Width, LrText(Index).Top
  2286.         Ydcommand1.Tag = Index
  2287.     Else
  2288.         Ydcommand1.Tag = ""
  2289.         Ydcommand1.Visible = False
  2290.     End If
  2291. End Sub
  2292. Private Sub Wbkcsh()                          '录入文本框初始化
  2293.     
  2294.     '最大录入文本框索引值
  2295.     Max_Text_Index = Textvar(1)
  2296.     
  2297.     ReDim TextValiJudgeLock(Max_Text_Index)
  2298.     For Jsqte = 0 To Max_Text_Index
  2299.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then
  2300.             TextChangeLock = True
  2301.             LrText(Jsqte).Text = ""
  2302.             LrText(Jsqte).Tag = ""
  2303.             If Textint(Jsqte, 5) <> 0 Then
  2304.                 LrText(Jsqte).MaxLength = Textint(Jsqte, 5)
  2305.             End If
  2306.             TextChangeLock = False
  2307.         End If
  2308.         TextValiJudgeLock(Jsqte) = True
  2309.     Next Jsqte
  2310. End Sub
  2311. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  2312.     Dim Sqlstr As String
  2313.     Dim Findrec As New ADODB.Recordset
  2314.     
  2315.     '按帮助不进行有效性判断
  2316.     
  2317.     If TextValiLock Then
  2318.         TextValiLock = False
  2319.         TextYxxpd = True
  2320.         Exit Function
  2321.     End If
  2322.     
  2323.     '文本框内容未曾改变不进行有效性判断
  2324.     
  2325.     If TextValiJudgeLock(Index) Then
  2326.         Ydcommand1.Visible = False
  2327.         TextYxxpd = True
  2328.         Exit Function
  2329.     End If
  2330.     If Trim(LrText(Index)) = "" Then
  2331.         LrText(Index).Tag = ""
  2332.         Call Wbklrwbcl(Index)
  2333.         Ydcommand1.Visible = False
  2334.         TextValiJudgeLock(Index) = True
  2335.         TextYxxpd = True
  2336.         
  2337.         '[>>如果凭证类别清空,则字号应清空
  2338.         If Index = 0 Then
  2339.             TextChangeLock = True
  2340.             LrText(3).Text = ""
  2341.             TextChangeLock = False
  2342.         End If
  2343.         '<<]
  2344.         
  2345.         Exit Function
  2346.     End If
  2347.     Select Case Textint(Index, 4)
  2348.     Case 1      '编码型
  2349.         Sqlstr = Trim(Textstr(Index, 5))
  2350.         Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  2351.         Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  2352.         If Findrec.EOF Then
  2353.             Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  2354.             Exit Function
  2355.         Else
  2356.             Select Case Textint(Index, 3)
  2357.             Case 0
  2358.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  2359.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  2360.                 End If
  2361.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  2362.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  2363.                 End If
  2364.             Case 1
  2365.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  2366.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  2367.                 End If
  2368.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  2369.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  2370.                 End If
  2371.             End Select
  2372.         End If
  2373.         
  2374.         '[>>凭证类别如有效,且内容已经发生改变则自动计算类别字号
  2375.         If Index = 0 Then
  2376.             Call Sub_JsVouchNo
  2377.         End If
  2378.         '<<]
  2379.         
  2380.     Case 2      '日期型
  2381.         If IsDate(LrText(Index).Text) Then
  2382.             LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  2383.         Else
  2384.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  2385.             Call Xtxxts(Tsxx, 0, 1)
  2386.             Exit Function
  2387.         End If
  2388.     Case 3      '其他类型
  2389.     End Select
  2390.     Ydcommand1.Visible = False
  2391.     TextValiJudgeLock(Index) = True
  2392.     TextYxxpd = True
  2393. End Function
  2394. '以下为现金流量分配处理程序
  2395. 'Modify by 奚峻峰
  2396. '
  2397. Private Sub Fp_Xjll()                              '分配现金流量
  2398.     Dim Int_Year As Integer
  2399.     Dim Int_Period As Integer
  2400.     Dim Rec_AccVouch As New ADODB.Recordset
  2401.     Int_Year = Val(Mid(Combo_Kjqj.Text, 1, 4))
  2402.     Int_Period = Val(Mid(Combo_Kjqj.Text, 6, 2))
  2403.     Sqlstr = "Select VouchID From Cwzz_AccVouchMain Where Year=" & Int_Year & " and Period=" & Int_Period & " And VouchClassCode='" & Trim(LrText(0).Text) & "' And VouchNo=" & Val(LrText(3).Text)
  2404.     Set Rec_AccVouch = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  2405.     If Rec_AccVouch.EOF = False Then
  2406.         Xtcdcs = Rec_AccVouch.Fields("VouchId")
  2407.         XJ_FrmXjllsjtz.Show 1
  2408.     End If
  2409. End Sub
  2410. Private Function Sf_CashFlow() As Boolean         '判断该 凭证是否进行现金流量分配
  2411.     Dim Int_Year As Integer
  2412.     Dim Int_Period As Integer
  2413.     Dim Rec_AccVouch As New ADODB.Recordset
  2414.     Sf_CashFlow = False
  2415.     If Chk_Xjll.Value = 1 Then
  2416.         Int_Year = Val(Mid(Combo_Kjqj.Text, 1, 4))
  2417.         Int_Period = Val(Mid(Combo_Kjqj.Text, 6, 2))
  2418.         Sqlstr = "SELECT  dbo.Cwzz_AccVouchMain.[Year],dbo.Cwzz_AccVouchMain.Period,dbo.Cwzz_AccVouchSub.VouchId,dbo.Cwzz_AccCode.CashFlowFlag " & _
  2419.         "FROM dbo.Cwzz_AccCode RIGHT OUTER JOIN dbo.Cwzz_AccVouchSub ON " & _
  2420.         "dbo.Cwzz_AccCode.Ccode = dbo.Cwzz_AccVouchSub.Ccode LEFT OUTER JOIN " & _
  2421.         "dbo.Cwzz_AccVouchMain ON dbo.Cwzz_AccVouchSub.VouchId = dbo.Cwzz_AccVouchMain.VouchId " & _
  2422.         "Where Year=" & Int_Year & " and Period=" & Int_Period & " And VouchClassCode='" & Trim(LrText(0).Text) & "' And VouchNo='" & Val(LrText(3).Text) & "'"
  2423.         Set Rec_AccVouch = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  2424.         If Rec_AccVouch.EOF = False Then
  2425.             Do While Rec_AccVouch.EOF = False
  2426.                 If Rec_AccVouch.Fields("CashFlowFlag") = True Then
  2427.                     Sf_CashFlow = True
  2428.                 End If
  2429.                 Rec_AccVouch.MoveNext
  2430.             Loop
  2431.         End If
  2432.     End If
  2433. End Function