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

企业管理

开发平台:

Visual Basic

  1.     adoRec.Close
  2.     Set adoRec = Nothing
  3.     
  4.     strSQL = "SELECT * FROM GY_WareHouse WHERE WhCode='" & Trim(LrText(3).Tag) & "'"
  5.     Set adoRecTemp = Cw_DataEnvi.DataConnect.Execute(strSQL)
  6.     With adoRecTemp
  7.         If Not .EOF Then
  8.             If Month(CDate(LrText(1).Text)) = TempPeriod + 1 Then
  9.                 If .Fields("EndDealFlagWh") Then
  10.                     Tsxx = "本仓库在所选会计期间已经结帐,不能再填制单据!"
  11.                     Call Xtxxts(Tsxx, 0, 4)
  12.                     Exit Function
  13.                 End If
  14.             End If
  15.         End If
  16.     End With
  17.     adoRecTemp.Close
  18.     '<<]
  19.   
  20.     '[>>下面将对所有有效数据行进行有效性判断
  21.   
  22.     Lng_RowCount = 0
  23.   
  24.     With WglrGrid
  25.         For Rowjsq = .FixedRows To .Rows - 1
  26.             '带*号者为有效数据行(Fixed)
  27.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  28.                 Exit For
  29.             Else
  30.                 Lng_RowCount = Lng_RowCount + 1
  31.             End If
  32.             
  33.             '1.首先进行为空或为零判断(Fixed)
  34.             
  35.             For jsqte = Qslz To .Cols - 1
  36.             
  37.                 '字段不能为空
  38.                 If GridInt(jsqte, 5) = 1 Then
  39.                     If Len(Trim(.TextMatrix(Rowjsq, jsqte))) = 0 Then
  40.                         Tsxx = GridStr(jsqte, 2)
  41.                         Lrywlz = jsqte
  42.                         GoTo Lrcwcl
  43.                         Exit For
  44.                     End If
  45.                 End If
  46.                 
  47.                 '字段不能为零
  48.                 If GridInt(jsqte, 5) = 2 Then
  49.                     If Val(Trim(.TextMatrix(Rowjsq, jsqte))) = 0 Then
  50.                         Tsxx = GridStr(jsqte, 2)
  51.                         Lrywlz = jsqte
  52.                         GoTo Lrcwcl
  53.                         Exit For
  54.                     End If
  55.                 End If
  56.             Next jsqte
  57.                        
  58.             '2.判断物料编码是否存在(Define)
  59.         Next Rowjsq
  60.      
  61.         '单据分录行数不能为零(Fixed)
  62.         If Lng_RowCount = 0 Then
  63.             Tsxx = "单据分录行数不能为零!"
  64.             Call Xtxxts(Tsxx, 0, 1)
  65.             Exit Function
  66.         End If
  67.         
  68.         '[>>
  69.         '此处可以定义整张单据不能通过有效性检查的理由
  70.         '<<]
  71.     End With  '网格
  72.    
  73.    
  74.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  75.    
  76.     '对存盘进行事务处理(Fixed)
  77.     On Error GoTo Swcwcl
  78.     Cw_DataEnvi.DataConnect.BeginTrans
  79.     
  80.     '判断单据状态以进行不同处理
  81.     
  82.     '1.先对单据主表进行处理
  83.     If Trim(Lab_OperStatus) = "2" Then
  84.     
  85.         '新增单据
  86.         
  87.         '1.对于某些单据号自动生成的单据则可在此处自动生成
  88.          LrText(2).Text = CreatBillCode(BillCode, True)
  89.     
  90.         '2.开始存盘
  91.          
  92.         '打开单据主表动态集
  93.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  94.         Rec_VouchMain.Open "Select * From Gy_InOutMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  95.              
  96.         With Rec_VouchMain
  97.             .AddNew
  98.             .Fields("InOutMainId") = CreatBillID(BillCode)           'ID
  99.             .Fields("BillCode") = Trim("1212")                      '单据编号
  100.             .Fields("InvoiceNum") = Trim(LrText(0).Text)            '发票号
  101.             .Fields("InvoiceID") = Val(LrText(0).Tag)               '发票ID
  102.             .Fields("BillNum") = Trim(LrText(2).Text)               '单据号
  103.             .Fields("Whcode") = Trim(LrText(3).Tag)                 '仓库
  104.             .Fields("BillDate") = CDate(LrText(1).Text)             '日期
  105.             .Fields("Kjyear") = Int_Year                            '会计年度
  106.             .Fields("Period") = Int_Period                          '会计期间
  107.             If Trim(LrText(6).Text) <> "" Then
  108.               .Fields("DeptCode") = Trim(LrText(6).Tag)             '部门
  109.             Else
  110.                .Fields("DeptCode") = Null
  111.             End If
  112.             If Trim(LrText(4).Text) <> "" Then
  113.                .Fields("SupplierCode") = Trim(LrText(4).Tag)        '供应商
  114.             Else
  115.                 .Fields("SupplierCode") = Null
  116.             End If
  117.             
  118.             If Trim(LrText(5).Text) <> "" Then
  119.                .Fields("InOutClassCode") = Trim(LrText(5).Tag)      '收发类别
  120.             Else
  121.                 .Fields("InOutClassCode") = Null
  122.             End If
  123.             
  124.             .Fields("Remark") = Trim(LrText(8).Text)
  125.             If Trim(LrText(7).Text) <> "" Then
  126.                 .Fields("PersonCode") = Trim(LrText(7).Tag)         '人员
  127.             Else
  128.                 .Fields("PersonCode") = Null
  129.             End If
  130.             .Fields("Maker") = Xtczy                                '制单
  131. '            .Fields("Checker") = ""
  132.             .Update
  133.             '系统读出单据ID写入Lab_BillID
  134.             Lab_BillId.Caption = .Fields("InOutMainId")
  135.         End With
  136.     Else
  137.         '修改单据
  138.           Cw_DataEnvi.DataConnect.Execute ("update Cg_InvoiceMain set BanlanceDate=null,BanlanPeriod=null,BanlanKjYear=null where InvoiceMainID=" & Val(LrText(0).Tag) & " and InvoiceNum='" & Trim(LrText(0).Text) & "'")
  139.         '1.删除原单据子表中所有内容
  140.         
  141.         Cw_DataEnvi.DataConnect.Execute ("Delete Gy_InOutSub Where InOutMainId=" & Val(Lab_BillId.Caption))
  142.         
  143.         '打开单据主表动态集
  144.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  145.         Rec_VouchMain.Open "Select * From Gy_InOutMain  Where InOutMainId=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  146.         With Rec_VouchMain
  147.             .Fields("BillCode") = Trim("1212")
  148.             .Fields("InvoiceNum") = Trim(LrText(0).Text)
  149.             .Fields("InvoiceID") = Val(LrText(0).Tag)
  150.             .Fields("BillNum") = Trim(LrText(2).Text)
  151.             .Fields("Whcode") = Trim(LrText(3).Tag)
  152.             .Fields("BillDate") = CDate(LrText(1).Text)                                                  '
  153.             .Fields("Kjyear") = Int_Year
  154.             .Fields("Period") = Int_Period
  155.             If Trim(LrText(6).Text) <> "" Then
  156.               .Fields("DeptCode") = Trim(LrText(6).Tag)
  157.             Else
  158.                .Fields("DeptCode") = Null
  159.             End If
  160.             If Trim(LrText(4).Text) <> "" Then
  161.                .Fields("SupplierCode") = Trim(LrText(4).Tag)
  162.             Else
  163.                 .Fields("SupplierCode") = Null
  164.             End If
  165.             
  166.             If Trim(LrText(5).Text) <> "" Then
  167.                .Fields("InOutClassCode") = Trim(LrText(5).Tag)
  168.             Else
  169.                 .Fields("InOutClassCode") = Null
  170.             End If
  171.             
  172.             .Fields("Remark") = Trim(LrText(8).Text)
  173.             If Trim(LrText(7).Text) <> "" Then
  174.                 .Fields("PersonCode") = Trim(LrText(7).Tag)
  175.             Else
  176.                 .Fields("PersonCode") = Null
  177.             End If
  178.             .Fields("Maker") = Xtczy
  179.             .Update
  180.         End With
  181.     End If
  182.          
  183.     '2.对单据子表进行处理
  184.          
  185.     '打开单据子表动态集
  186.     If Rec_VouchSub.State = 1 Then Rec_VouchSub.Close
  187.     Rec_VouchSub.Open "Select * From Gy_InOutSub Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  188.      
  189.     '将网格中有效数据行写入单据子表
  190.     For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  191.         If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
  192.             Exit For
  193.         End If
  194.         
  195.         With Rec_VouchSub
  196.             .AddNew
  197.             .Fields("InOutSubId") = Rowjsq - WglrGrid.FixedRows + 1                                         '子表ID
  198.             .Fields("InOutMainId") = Val(Lab_BillId.Caption)                                                '主表ID
  199.             .Fields("MNumber") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls)))           '物料编码
  200.             .Fields("FactReceiptQuan") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))    '数量
  201.             .Fields("Price") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)))              '价格
  202.             .Fields("EMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("009", GridStr(), Szzls)))             '金额
  203.             If Not WglrGrid.ColHidden(Sydz("006", GridStr(), Szzls)) Then
  204.                 .Fields("planprice") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("006", GridStr(), Szzls)))      '计划价格
  205.             End If
  206.     
  207.             If Not WglrGrid.ColHidden(Sydz("008", GridStr(), Szzls)) Then
  208.                 .Fields("PlanMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("008", GridStr(), Szzls)))      '计划金额
  209.             End If
  210.             .Update
  211.         End With
  212.     Next Rowjsq
  213.     '回填发票结算标志
  214.     Cw_DataEnvi.DataConnect.Execute ("update Cg_InvoiceMain set BanlanceDate='" & CDate(Trim(LrText(1).Text)) & "',BanlanPeriod=" & Int_Period & ",BanlanKjYear=" & Int_Year & " where InvoiceMainID=" & Val(LrText(0).Tag) & " and InvoiceNum='" & Trim(LrText(0).Text) & "'")
  215.     Cw_DataEnvi.DataConnect.CommitTrans
  216.     
  217.     Sub_SaveBill = True
  218.     Tsxx = "单据存盘完毕! 单据号:" & Trim(LrText(2).Text)
  219.     Call Xtxxts(Tsxx, 0, 4)
  220.     
  221.     '标识单据发生改动
  222.     Bln_BillChange = True
  223.     
  224.     '设置单据改变后的状态
  225.     Lab_OperStatus = "1"
  226.     Call Sub_OperStatus("10")
  227.     Rec_Query.Requery
  228.     Rec_Query.Find "InOutMainId=" & Val(Lab_BillId.Caption)
  229.     
  230.     Exit Function
  231. Swcwcl:       '数据存盘时出现错误
  232.     Cw_DataEnvi.DataConnect.RollbackTrans
  233.     With WglrGrid
  234.         If Err.Number = -2147217887 Then
  235.             Tsxx = "单据中第  " & Trim(str(Rowjsq - .FixedRows + 1)) & " 条分录录入数据超出允许范围!"
  236.             Call Xtxxts(Tsxx, 0, 1)
  237.             Changelock = True
  238.             .Select Rowjsq, Qslz
  239.             WglrGrid.SetFocus
  240.             Changelock = False
  241.             Exit Function
  242.         Else
  243.             Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  244.             Call Xtxxts(Tsxx, 0, 1)
  245.             Exit Function
  246.         End If
  247.     End With
  248. Lrcwcl:        '录入错误处理(存盘前逐行有效性判断)
  249.     With WglrGrid
  250.         Call Xtxxts("(第 " & Trim(str(Rowjsq - .FixedRows + 1)) & " 条单据分录)-" & Tsxx, 0, 1)
  251.         Changelock = True
  252.         .Select Rowjsq, Lrywlz
  253.         WglrGrid.SetFocus
  254.         Changelock = False
  255.         Exit Function
  256.     End With
  257. End Function
  258. '选择首张,上张,下张,末张(此4个过程只需用您的单据ID字段名替换"InOutMainId"即可)
  259. Private Sub Sub_First()             '首 张
  260.     
  261.     With Rec_Query
  262.         If .RecordCount = 0 Then
  263.             Exit Sub
  264.         End If
  265.         .MoveFirst
  266.         Lab_BillId.Caption = .Fields("InOutMainId")
  267.         Call Sub_ShowBill
  268.     End With
  269. End Sub
  270. Private Sub Sub_Prev()             '上 张
  271.     
  272.     With Rec_Query
  273.         If .RecordCount = 0 Then
  274.             Exit Sub
  275.         End If
  276.         If Not .BOF Then
  277.             .MovePrevious
  278.         End If
  279.         If Not .BOF Then
  280.             Lab_BillId.Caption = .Fields("InOutMainId")
  281.         Else
  282.             .MoveNext
  283.         End If
  284.         Call Sub_ShowBill
  285.     End With
  286. End Sub
  287. Private Sub Sub_next()             '下 张
  288.     With Rec_Query
  289.         If .RecordCount = 0 Then
  290.             Exit Sub
  291.         End If
  292.         If Not .EOF Then
  293.             .MoveNext
  294.         End If
  295.         If Not .EOF Then
  296.             Lab_BillId.Caption = .Fields("InOutMainId")
  297.         Else
  298.             .MovePrevious
  299.         End If
  300.         Call Sub_ShowBill
  301.     End With
  302. End Sub
  303. Private Sub Sub_Last()              '末 张
  304.     
  305.     With Rec_Query
  306.         If .RecordCount = 0 Then
  307.             Exit Sub
  308.         End If
  309.         .MoveLast
  310.         Lab_BillId.Caption = .Fields("InOutMainId")
  311.         Call Sub_ShowBill
  312.     End With
  313. End Sub
  314.     
  315. '[>>===================以下为根据实际业务需要自定义过程区域=============================<<]
  316. '审核,弃审
  317. Private Sub Sub_CheckBill()             '审 核
  318.     
  319.     '[>>
  320.     '此处可以写入禁止单据审核的理由
  321.      '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  322.      If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  323.         Exit Sub
  324.      End If
  325.     '<<]
  326.     
  327.     '将单据写入审核标识
  328.     Cw_DataEnvi.DataConnect.Execute ("Update Gy_InOutMain Set KfChecker='" & Xtczy & "' Where InOutMainId=" & Val(Lab_BillId.Caption))
  329.     
  330.     '写入系统操作员
  331.     LrText(10).Text = Xtczy
  332.     
  333.     '设置审核弃审按钮状态
  334.     Call Sub_CheckStatus
  335.     
  336.     '标识单据发生变化
  337.     Bln_BillChange = True
  338. End Sub
  339. Private Sub Sub_AbandonCheck()          '弃 审
  340.     
  341.     '[>>
  342.     '此处可以写入禁止单据弃审的理由
  343.      '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  344.      If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  345.         Exit Sub
  346.      End If
  347.     '<<]
  348.    
  349.     '将单据清除审核标识
  350.     Cw_DataEnvi.DataConnect.Execute ("Update Gy_InOutMain Set KfChecker='' Where InOutMainId=" & Val(Lab_BillId.Caption))
  351.     
  352.     '清空单据审核人
  353.     LrText(10).Text = ""
  354.     
  355.     '设置审核弃审按钮状态
  356.     Call Sub_CheckStatus
  357.     
  358.     '标识单据发生变化
  359.     Bln_BillChange = True
  360.   
  361. End Sub
  362. Private Function Fun_AllowEdit() As Boolean                      '判断当前单据是否允许编辑或删除
  363.   
  364.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  365.     Fun_AllowEdit = False
  366.     Sqlstr = "Select KfChecker,ChalkItupMan From Gy_InOutMain Where InOutMainId=" & Val(Lab_BillId.Caption)
  367.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  368.     With RecTemp
  369.         If Not .EOF Then
  370.             If Trim(.Fields("KfChecker") & "") <> "" Or Trim(.Fields("ChalkItupMan") & "") <> "" Then
  371.                 Tsxx = "该单据已审核或记帐,不能修改或删除!"
  372.                 Call Xtxxts(Tsxx, 0, 4)
  373.                 Exit Function
  374.             End If
  375.         End If
  376.     End With
  377.     Fun_AllowEdit = True
  378. End Function
  379. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  380. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  381. Private Sub Sub_AdjustGrid()
  382.   
  383.     '调 整 网 格
  384.     With WglrGrid
  385.         '加 1 保持一行录入行
  386.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  387.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  388.             For jsqte = .FixedRows To .Rows - 1
  389.                 .RowHeight(jsqte) = Sjhgd
  390.             Next jsqte
  391.         End If
  392.         
  393.         '判断是否有辅助行和录入行,如没有则加行
  394.         Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  395.             .AddItem ""
  396.             .RowHeight(.Rows - 1) = Sjhgd
  397.         Loop
  398.     
  399.     End With
  400. End Sub
  401. Private Sub Lrzdbz()                                                      '录入字段帮助
  402.     
  403.     If Not Ydcommand.Visible Then
  404.         Exit Sub
  405.     End If
  406.    
  407.     With WglrGrid
  408.         Valilock = True
  409.     
  410.         '处理通用部分
  411.         Changelock = True        '调入另外窗体必须加锁
  412.         If GridInt(.Col, 6) <> 1 Then
  413.             strHlpR = FunHlpR(Trim(GridStr(.Col, 3)), "whcode", Trim(LrText(1).Tag))
  414.         End If
  415.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  416.         Changelock = False
  417.         
  418.         If Len(Xtfhcs) <> 0 Then
  419.             If GridInt(.Col, 7) = 0 Then
  420.                 Ydtext.Text = Xtfhcs
  421.             Else
  422.                 Ydtext.Text = Xtfhcsfz
  423.             End If
  424.         End If
  425.         
  426.         Valilock = False
  427.         If Ydtext.Visible Then
  428.             Ydtext.SetFocus
  429.         End If
  430.     End With
  431. End Sub
  432. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  433.     
  434.     With HjGrid
  435.     
  436.        '是否显示合计网格
  437.        If Not Sfxshjwg Then
  438.            .Visible = False
  439.            Exit Sub
  440.        Else
  441.            .Visible = True
  442.        End If
  443.       
  444.        '设置网格相关属性
  445.        .Enabled = False
  446.        .Appearance = flexFlat
  447.        .BorderStyle = flexBorderNone
  448.        .ScrollBars = flexScrollBarNone
  449.        .Width = WglrGrid.Width
  450.        .FixedRows = 0
  451.        .Rows = 1
  452.        .Cols = WglrGrid.Cols
  453.        .LeftCol = WglrGrid.LeftCol
  454.        .TextMatrix(0, Qslz) = "合  计"
  455.        For jsqte = 0 To WglrGrid.Cols - 1
  456.            .ColHidden(jsqte) = WglrGrid.ColHidden(jsqte)
  457.            .ColWidth(jsqte) = WglrGrid.ColWidth(jsqte)
  458.            .ColAlignment(jsqte) = WglrGrid.ColAlignment(jsqte)
  459.            .ColFormat(jsqte) = WglrGrid.ColFormat(jsqte)
  460.        Next jsqte
  461.        .ColAlignment(Qslz) = flexAlignCenterTop
  462.        For jsqte = .FixedRows To .Rows - 1
  463.            .RowHeight(jsqte) = .Height / .Rows
  464.        Next jsqte
  465.        
  466.       '程序自动调整网格高度(自动设置为网格剩余高度+辅助项网格行数(默认为1)*数据行高度)、并设置其位置信息
  467.        .Height = Fzxwghs * Sjhgd + ((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) Mod Sjhgd)
  468.        .RowHeight(0) = .Height
  469.        .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  470.     End With
  471. End Sub
  472. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  473.    Call Cxxswbk
  474. End Sub
  475. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  476.     Fun_Drfrmyxxpd = True
  477.     With WglrGrid
  478.         
  479.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  480.         If Ydtext.Visible Or YdCombo.Visible Then
  481.             Call Lrsjhx
  482.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  483.                 Fun_Drfrmyxxpd = False
  484.                 Exit Function
  485.             End If
  486.         End If
  487.    
  488.         '进行行有效性判断
  489.         If Not Sjhzyxxpd(.Row) Then
  490.             Fun_Drfrmyxxpd = False
  491.             Exit Function
  492.         End If
  493.         
  494.     End With
  495. End Function
  496. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  497.     
  498.     If HjGrid.Visible Then
  499.         With HjGrid
  500.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  501.         End With
  502.     End If
  503. End Sub
  504. Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
  505.     
  506.     With WglrGrid
  507.         If .Row >= .FixedRows Then
  508.             '[>>
  509.             '此处可以填写显示与此网格行相关信息
  510.             '<<]
  511.         End If
  512.     End With
  513. End Sub
  514. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  515.     '网格得到焦点,如果当前选择行为非数据行
  516.     '则调整当前焦点至有效数据行
  517.     With WglrGrid
  518.         If .Row < .FixedRows And .Rows > .FixedRows Then
  519.             Changelock = True
  520.             .Select .FixedRows, .Col
  521.             Changelock = False
  522.         End If
  523.         If .Col < Qslz Then
  524.             Changelock = True
  525.             .Select .Row, Qslz
  526.             Changelock = False
  527.         End If
  528.     End With
  529. End Sub
  530. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  531.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  532.     If Changelock Then
  533.         Exit Sub
  534.     End If
  535.     '引发网格RowcolChange事件
  536.     With WglrGrid
  537.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  538.             .Select 0, 0
  539.         End If
  540.     End With
  541. End Sub
  542. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  543.     If Gdtlock Then
  544.         Exit Sub
  545.     End If
  546.  
  547.     With WglrGrid
  548.         If Ydtext.Visible Or YdCombo.Visible Then
  549.             Gdtlock = True
  550.             .TopRow = Dqtoprow
  551.             .LeftCol = Dqleftcol
  552.             Gdtlock = False
  553.             Exit Sub
  554.         End If
  555.         HjGrid.LeftCol = .LeftCol
  556.     End With
  557. End Sub
  558. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  559.     
  560.     If Changelock Then
  561.         Exit Sub
  562.     End If
  563.     '记录刚刚离开网格单元的行列值
  564.     Dqlkwgh = WglrGrid.Row
  565.     Dqlkwgl = WglrGrid.Col
  566.     '判断是否需要录入数据回写
  567.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  568.         Exit Sub
  569.     End If
  570.     Call Lrsjhx
  571. End Sub
  572. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  573.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  574.     With WglrGrid
  575.         If Changelock Then
  576.             Exit Sub
  577.         End If
  578.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  579.             Exit Sub
  580.         End If
  581.         If .Row <> Dqlkwgh Then
  582.             If Not Sjhzyxxpd(Dqlkwgh) Then
  583.                 Exit Sub
  584.             End If
  585.         End If
  586.     End With
  587.    
  588.     Call fhyxh
  589.     Call Xldql
  590.    
  591. End Sub
  592. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  593.   '[[
  594.   If Lab_OperStatus.Caption <> "1" Then
  595.     If WglrGrid.TextMatrix(WglrGrid.Row, Sydz("001", GridStr(), Szzls)) = "" Then
  596.        If LrText(0).Text <> "" Then
  597.           Tsxx = "此单据为复制单据,不能再增加分录!"
  598.           Call Xtxxts(Tsxx, 0, 4)
  599.           ydtext_LostFocus
  600.           Exit Sub
  601.        End If
  602.     End If
  603.   End If
  604.   ']]
  605.     With WglrGrid
  606.         Call xswbk
  607.     End With
  608. End Sub
  609. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  610.     
  611.     Valilock = True
  612.     Ydtext.Visible = False
  613.     YdCombo.Visible = False
  614.     Ydcommand.Visible = False
  615. End Sub
  616. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  617.     With WglrGrid
  618.         Select Case KeyCode
  619.             Case vbKeyEscape                'ESC 键放弃录入
  620.                 Valilock = True
  621.                 .SetFocus
  622.                 Call Ycwbk
  623.                 Valilock = False
  624.             Case vbKeyReturn                '回 车 键 =13
  625.                 KeyCode = 0
  626.                 .SetFocus
  627.                 Call Lrsjhx
  628.                 Rowjsq = .Row
  629.                 Coljsq = .Col + 1
  630.                 If Coljsq > .Cols - 1 Then
  631.                     If Rowjsq < .Rows - 1 Then
  632.                         Rowjsq = Rowjsq + 1
  633.                     End If
  634.                     Coljsq = Qslz
  635.                 End If
  636.                 Do While Rowjsq <= .Rows - 1
  637.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  638.                         Coljsq = Coljsq + 1
  639.                         If Coljsq > .Cols - 1 Then
  640.                             Rowjsq = Rowjsq + 1
  641.                             Coljsq = Qslz
  642.                         End If
  643.                     Else
  644.                         Exit Do
  645.                     End If
  646.                 Loop
  647.                 .Select Rowjsq, Coljsq
  648.             Case vbKeyLeft                  '左 箭 头 =37
  649.                 If .Col - 1 = Qslz Then
  650.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  651.                         GoTo jzzx
  652.                     End If
  653.                 End If
  654.                 If .Col > Qslz Then
  655.                     KeyCode = 0
  656.                     .SetFocus
  657.                     Call Lrsjhx
  658.                     Coljsq = .Col - 1
  659.                     Do While Coljsq > Qslz
  660.                         If Coljsq - 1 = Qslz Then
  661.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  662.                                 GoTo jzzx
  663.                             End If
  664.                         End If
  665.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  666.                             Coljsq = Coljsq - 1
  667.                         Else
  668.                             Exit Do
  669.                         End If
  670.                     Loop
  671.                     .Select .Row, Coljsq
  672.                 End If
  673.             Case vbKeyRight                 '右 箭 头 =39
  674.                 KeyCode = 0
  675.                 .SetFocus
  676.                 Call Lrsjhx
  677.                 Rowjsq = .Row
  678.                 Coljsq = .Col + 1
  679.                 If Coljsq > .Cols - 1 Then
  680.                     If Rowjsq < .Rows - 1 Then
  681.                         Rowjsq = Rowjsq + 1
  682.                     End If
  683.                     Coljsq = Qslz
  684.                 End If
  685.                 Do While Rowjsq <= .Rows - 1
  686.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  687.                         Coljsq = Coljsq + 1
  688.                         If Coljsq > .Cols - 1 Then
  689.                             Rowjsq = Rowjsq + 1
  690.                             Coljsq = Qslz
  691.                         End If
  692.                     Else
  693.                         Exit Do
  694.                     End If
  695.                 Loop
  696.                 .Select Rowjsq, Coljsq
  697.         Case Else
  698.    End Select
  699.    
  700. jzzx:
  701.    
  702.     End With
  703. End Sub
  704. Private Sub YdCombo_LostFocus()
  705.   
  706.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  707.         If Not Valilock Then                           '为TRUE
  708.             Call Lrsjhx
  709.             If Not Sjhzyxxpd(Dqlrwgh) Then
  710.                 Exit Sub
  711.             End If
  712.         End If
  713.     End With
  714. End Sub
  715. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  716.     Call Lrzdbz
  717. End Sub
  718. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  719.     Dim Rowjsq As Long, Coljsq As Long
  720.     With WglrGrid
  721.         Select Case KeyCode
  722.             Case vbKeyF2
  723.                 Call Lrzdbz
  724.             Case vbKeyEscape                'ESC 键放弃录入
  725.                 Valilock = True
  726.                 Call Ycwbk
  727.                 .SetFocus
  728.             Case vbKeyReturn                '回 车 键 =13
  729.                 KeyCode = 0
  730.                 .SetFocus
  731.                 Call Lrsjhx
  732.                 Rowjsq = .Row
  733.                 Coljsq = .Col + 1
  734.                 If Coljsq > .Cols - 1 Then
  735.                     If Rowjsq < .Rows - 1 Then
  736.                         Rowjsq = Rowjsq + 1
  737.                     End If
  738.                     Coljsq = Qslz
  739.                 End If
  740.                 Do While Rowjsq <= .Rows - 1
  741.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  742.                         Coljsq = Coljsq + 1
  743.                         If Coljsq > .Cols - 1 Then
  744.                             Rowjsq = Rowjsq + 1
  745.                             Coljsq = Qslz
  746.                         End If
  747.                     Else
  748.                         Exit Do
  749.                     End If
  750.                 Loop
  751.                 If Rowjsq <= .Rows - 1 Then
  752.                     .Select Rowjsq, Coljsq
  753.                 End If
  754.             Case vbKeyUp                    '上 箭 头 =38
  755.                 KeyCode = 0
  756.                 .SetFocus
  757.                 Call Lrsjhx
  758.                 If .Row > .FixedRows Then
  759.                     .Row = .Row - 1
  760.                 End If
  761.             Case vbKeyDown                  '下 箭 头 =40
  762.                 KeyCode = 0
  763.                 .SetFocus
  764.                 Call Lrsjhx
  765.                 If .Row < .Rows - 1 Then
  766.                     .Row = .Row + 1
  767.                 End If
  768.             Case vbKeyLeft                  '左 箭 头 =37
  769.                 If .Col - 1 = Qslz Then
  770.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  771.                         GoTo jzzx
  772.                     End If
  773.                 End If
  774.                 If Ydtext.SelStart = 0 And .Col > Qslz Then
  775.                     KeyCode = 0
  776.                     .SetFocus
  777.                     Call Lrsjhx
  778.                     Coljsq = .Col - 1
  779.                     Do While Coljsq > Qslz
  780.                         If Coljsq - 1 = Qslz Then
  781.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  782.                                 GoTo jzzx
  783.                             End If
  784.                         End If
  785.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  786.                             Coljsq = Coljsq - 1
  787.                         Else
  788.                             Exit Do
  789.                         End If
  790.                     Loop
  791.                     .Select .Row, Coljsq
  792.                 End If
  793. jzzx:
  794.             Case vbKeyRight                 '右 箭 头 =39
  795.                 wblong = Len(Ydtext.Text)
  796.                 If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  797.                     KeyCode = 0
  798.                     .SetFocus
  799.                     Call Lrsjhx
  800.                     Rowjsq = .Row
  801.                     Coljsq = .Col + 1
  802.                     If Coljsq > .Cols - 1 Then
  803.                         If Rowjsq < .Rows - 1 Then
  804.                             Rowjsq = Rowjsq + 1
  805.                         End If
  806.                         Coljsq = Qslz
  807.                     End If
  808.                     Do While Rowjsq <= .Rows - 1
  809.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  810.                             Coljsq = Coljsq + 1
  811.                             If Coljsq > .Cols - 1 Then
  812.                                 Rowjsq = Rowjsq + 1
  813.                                 Coljsq = Qslz
  814.                             End If
  815.                         Else
  816.                             Exit Do
  817.                         End If
  818.                     Loop
  819.                     .Select Rowjsq, Coljsq
  820.                 End If
  821.             Case Else
  822.         End Select
  823.     End With
  824. End Sub
  825. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  826.     
  827.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  828.     If KeyAscii <> 0 Then
  829.         Call Xyxhbz(Dqlrwgh)
  830.     End If
  831. End Sub
  832. Private Sub ydtext_Change()                              '录入事中变化处理
  833.     '防止程序改变但不进行处理
  834.     If Wbkbhlock Then
  835.         Exit Sub
  836.     End If
  837.     With WglrGrid
  838.         '限制字段录入长度
  839.         Wbkbhlock = True
  840.         Call TextChangeLimit(Ydtext, GridInt(.Col, 1))  '去掉无效字符
  841.         Select Case GridInt(.Col, 1)
  842.             Case 8, 11   '金额型
  843.                 Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  844.             Case 9, 12   '数量型
  845.                 Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  846.             Case 10      '单价型
  847.                 Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  848.             Case Else    '其他类型
  849.                 If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  850.                     Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  851.                 End If
  852.         End Select
  853.         Wbkbhlock = False
  854.     End With
  855. End Sub
  856. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  857.   
  858.     With WglrGrid
  859.         If Not Valilock Then
  860.             Call Lrsjhx
  861.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  862.                 Exit Sub
  863.             End If
  864.             If Not Sjhzyxxpd(Dqlrwgh) Then
  865.                 Exit Sub
  866.             End If
  867.         End If
  868.     End With
  869. End Sub
  870. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  871.     
  872.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  873.   
  874.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  875.     If Not Fun_AllowInput Then
  876.         Exit Sub
  877.     End If
  878.   
  879.     '显示文本框前返回有效行列(解决滚动条问题)
  880.     Call Xldqh
  881.     Call Xldql
  882.   
  883.     '隐藏文本框,帮助按钮,列表组合框
  884.     Call Ycwbk
  885.   
  886.     With WglrGrid
  887.         Dqlrwgh = .Row
  888.         Dqlrwgl = .Col
  889.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  890.             Exit Sub
  891.         End If
  892.      
  893.         Wbkpy = 30
  894.         Wbkpy1 = 15
  895.     
  896.         If GridBoolean(.Col, 3) Then
  897.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  898.             YdCombo.Top = .CellTop + .Top + Wbkpy
  899.             YdCombo.Width = .CellWidth - Wbkpy1
  900.             Call Wbkcl
  901.             YdCombo.Visible = True
  902.             YdCombo.SetFocus
  903.             Ydcommand.Visible = False
  904.             Ydtext.Visible = False
  905.         Else
  906.             If GridBoolean(.Col, 2) Then
  907.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  908.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  909.                 Ydcommand.Visible = True
  910.             Else
  911.                 Ydcommand.Visible = False
  912.             End If
  913.              
  914.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  915.             Ydtext.Top = .CellTop + .Top + Wbkpy
  916.             If Ydcommand.Visible Then
  917.                 If Sfblbzkd Then
  918.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  919.                 Else
  920.                     Ydtext.Width = .CellWidth - Wbkpy1
  921.                 End If
  922.             Else
  923.                 Ydtext.Width = .CellWidth - Wbkpy1
  924.             End If
  925.             Ydtext.Height = .CellHeight - Wbkpy1
  926.         
  927.             If GridInt(.Col, 2) <> 0 Then
  928.                 Ydtext.MaxLength = GridInt(.Col, 2)
  929.             Else
  930.                 Ydtext.MaxLength = 3000
  931.             End If
  932.       
  933.             Call Wbkcl
  934.       
  935.             Ydtext.Visible = True
  936.             Ydtext.SetFocus
  937.         End If
  938.         Dqtoprow = .TopRow
  939.         Dqleftcol = .LeftCol
  940.         
  941.         '重置锁值
  942.         Valilock = False
  943.         Wbkbhlock = False
  944.     End With
  945. End Sub
  946. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  947.    
  948.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  949.     If Trim(Lab_OperStatus.Caption) = "1" Then
  950.         Exit Function
  951.     End If
  952.    
  953.     '[>>
  954.     
  955.     '此处可以填写禁止文本框激活使单据处于录入状态的理由
  956.    
  957.     '<<]
  958.    
  959.     Fun_AllowInput = True
  960. End Function
  961. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  962.                    
  963.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  964.     Wbkpy = 30
  965.     Wbkpy1 = 15
  966.     With WglrGrid
  967.         If YdCombo.Visible Then
  968.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  969.             YdCombo.Top = .CellTop + .Top + Wbkpy
  970.             YdCombo.Width = .CellWidth - Wbkpy1
  971.         End If
  972.         If Ydcommand.Visible Then
  973.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  974.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  975.         End If
  976.         If Ydtext.Visible Then
  977.             If Ydcommand.Visible Then
  978.                 If Sfblbzkd Then
  979.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  980.                 Else
  981.                     Ydtext.Width = .CellWidth - Wbkpy1
  982.                 End If
  983.             Else
  984.                 Ydtext.Width = .CellWidth - Wbkpy1
  985.             End If
  986.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  987.             Ydtext.Top = .CellTop + .Top + Wbkpy
  988.             Ydtext.Height = .CellHeight - Wbkpy1
  989.         End If
  990.     End With
  991. End Sub
  992. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  993.     
  994.     With WglrGrid
  995.         If YdCombo.Visible Then
  996.             .Text = Trim(YdCombo.Text)
  997.         End If
  998.         If Ydtext.Visible Then
  999.             .Text = Trim(Ydtext.Text)
  1000.         End If
  1001.         
  1002.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  1003.         If Zdlrqnr <> Trim(.Text) Then
  1004.             Yxxpdlock = False
  1005.             Hyxxpdlock = False
  1006.         End If
  1007.     
  1008.         '如果字段录入内容不为空则写数据行有效性标志
  1009.         If Len(Trim(.Text)) <> 0 Then
  1010.             Call Xyxhbz(.Row)
  1011.         End If
  1012.     
  1013.         '隐藏文本框,帮助按钮,列表组合框
  1014.         Call Ycwbk
  1015.     End With
  1016. End Sub
  1017. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  1018.   
  1019.     '如果单据操作状态为浏览状态则不能显示录入载体
  1020.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1021.         Exit Sub
  1022.     End If
  1023.     Select Case KeyCode
  1024.         Case vbKeyF2                   '按F2键参照
  1025.             Call xswbk
  1026.             Call Lrzdbz
  1027.         Case vbKeyDelete               '删行
  1028.             Call Scdqfl
  1029.         Case vbKeyInsert               '增行
  1030.             Call zjlrfl
  1031.     End Select
  1032. End Sub
  1033. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                             '网格接受键盘录入
  1034.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  1035.     If Not Fun_AllowInput Then
  1036.         Exit Sub
  1037.     End If
  1038.   
  1039.     With WglrGrid
  1040.         '屏 蔽 回 车 键
  1041.         If KeyAscii = vbKeyReturn Then
  1042.             KeyAscii = 0
  1043.             Rowjsq = .Row
  1044.             Coljsq = .Col + 1
  1045.             If Coljsq > .Cols - 1 Then
  1046.                 If Rowjsq < .Rows - 1 Then
  1047.                     Rowjsq = Rowjsq + 1
  1048.                 End If
  1049.                 Coljsq = Qslz
  1050.             End If
  1051.             Do While Rowjsq <= .Rows - 1
  1052.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1053.                     Coljsq = Coljsq + 1
  1054.                     If Coljsq > .Cols - 1 Then
  1055.                         Rowjsq = Rowjsq + 1
  1056.                         Coljsq = Qslz
  1057.                     End If
  1058.                 Else
  1059.                     Exit Do
  1060.                 End If
  1061.             Loop
  1062.             If Rowjsq <= .Rows - 1 Then
  1063.                 .Select Rowjsq, Coljsq
  1064.             End If
  1065.             Exit Sub
  1066.         End If
  1067.      
  1068.         '接受用户录入
  1069.         Select Case KeyAscii
  1070.             Case 0 To 32             '用户输入KeyAscii为0-32的键 如空格
  1071.                 '显示录入载体
  1072.                 Call xswbk
  1073.             Case Else
  1074.                 '防止非编辑字段SendKeys()出现死循环
  1075.                 If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1076.                     Exit Sub
  1077.                 End If
  1078.                 '如果此字段为列表框录入则调入相应列表框
  1079.                 If GridBoolean(.Col, 3) Then
  1080.                     '列表框录入
  1081.                     Call xswbk
  1082.                 Else
  1083.                     Ydtext.Text = ""
  1084.                     '录入限制
  1085.                     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1086.                     If KeyAscii = 0 Then
  1087.                         Exit Sub
  1088.                     End If
  1089.                     '如果录入字符有效则写有效行数据标志
  1090.                     Call Xyxhbz(.Row)
  1091.                     Call xswbk
  1092.                     Ydtext.Text = ""
  1093.                     Valilock = True
  1094.                     SendKeys Chr(KeyAscii), True
  1095.                     DoEvents
  1096.                     Valilock = False
  1097.                 End If
  1098.         End Select
  1099.     End With
  1100. End Sub
  1101. Private Sub zjlrfl()                                                    '增加录入分录
  1102.     
  1103.     With WglrGrid
  1104.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1105.             If Not Fun_Drfrmyxxpd Then
  1106.                 Exit Sub
  1107.             End If
  1108.         Else
  1109.             Exit Sub
  1110.         End If
  1111.         If .Row < .FixedRows Then
  1112.             Exit Sub
  1113.         End If
  1114.         .AddItem "", .Row
  1115.         .RowHeight(.Row) = Sjhgd
  1116.         If .Row <> .Rows - 1 Then
  1117.             If .TextMatrix(.Row + 1, 0) = "*" Then
  1118.                 .TextMatrix(.Row, 0) = "*"
  1119.             Else
  1120.                 .RemoveItem .Rows - 1
  1121.             End If
  1122.         End If
  1123.         Call Xldqh
  1124.         Call Xldql
  1125.         Hyxxpdlock = False
  1126.     End With
  1127. End Sub
  1128. Private Sub Scdqfl()                                                    '删除当前分录
  1129.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  1130.     With WglrGrid
  1131.         Scqwghz = .Row
  1132.         Scqwglz = .Col
  1133.         If .TextMatrix(.Row, 0) = "*" Then
  1134.             '判断是否为录入状态
  1135.             If Ydtext.Visible Or YdCombo.Visible Then
  1136.                 Sflrzt = True
  1137.                 Validate = True
  1138.                 Call Lrsjhx
  1139.                 Validate = False
  1140.             End If
  1141.             Call Xldqh
  1142.             Changelock = True
  1143.             .Select .Row, 0
  1144.             Changelock = False
  1145.             If Shsfts Then
  1146.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  1147.                 Tsxx = "请确认是否删除当前记录?"
  1148.                 Yhanswer = Xtxxts(Tsxx, 2, 2)
  1149.                 If Yhanswer = 2 Then
  1150.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  1151.                     Changelock = True
  1152.                     .Select Scqwghz, Scqwglz
  1153.                     Changelock = False
  1154.                     
  1155.                     '如为录入状态,则恢复录入
  1156.                     If Sflrzt Then
  1157.                         Call xswbk
  1158.                     End If
  1159.                     Exit Sub
  1160.                 End If
  1161.             End If
  1162.             .RemoveItem .Row
  1163.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1164.                 .AddItem ""
  1165.                 .RowHeight(.Rows - 1) = Sjhgd
  1166.             End If
  1167.             Changelock = True
  1168.             .Select .Row, Scqwglz
  1169.             Changelock = False
  1170.    
  1171.             '重新计算合计数据
  1172.             For Hjlzte = Qslz To .Cols - 1
  1173.                 Call Sjhj(Hjlzte)
  1174.             Next Hjlzte
  1175.         End If
  1176.     End With
  1177. End Sub
  1178. Private Sub Sjhj(Hjwgl As Long)                                         '网格列数据合计
  1179.     
  1180.     Dim Hjjg As Double
  1181.     If Not GridBoolean(Hjwgl, 4) Then
  1182.         Exit Sub
  1183.     End If
  1184.     With WglrGrid
  1185.         Hjjg = 0
  1186.         For jsqte = .FixedRows To .Rows - 1
  1187.             If .TextMatrix(jsqte, 0) = "*" Then
  1188.                 Hjjg = Hjjg + Val(.TextMatrix(jsqte, Hjwgl))
  1189.             End If
  1190.         Next jsqte
  1191.         If GridBoolean(Hjwgl, 5) And Hjjg = 0 Then
  1192.             HjGrid.TextMatrix(0, Hjwgl) = ""
  1193.         Else
  1194.             HjGrid.TextMatrix(0, Hjwgl) = Hjjg
  1195.         End If
  1196.     End With
  1197. End Sub
  1198. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  1199.     
  1200.     If Not GridBoolean(Sjl, 5) Then
  1201.         Exit Sub
  1202.     End If
  1203.     With WglrGrid
  1204.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  1205.             .TextMatrix(sjh, Sjl) = ""
  1206.         End If
  1207.     End With
  1208. End Sub
  1209. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  1210.     
  1211.     With WglrGrid
  1212.         If .Row >= .FixedRows Then
  1213.             If .TextMatrix(.Row, 0) <> "*" Then
  1214.                 For Rowjsq = .FixedRows To .Rows - 1
  1215.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  1216.                         Exit For
  1217.                     End If
  1218.                 Next Rowjsq
  1219.                 If Rowjsq <= .Rows - 1 Then
  1220.                     Changelock = True
  1221.                     .Select Rowjsq, .Col
  1222.                     Changelock = False
  1223.                 Else
  1224.                     Changelock = True
  1225.                     .Select .Rows - 1, .Col
  1226.                     Changelock = False
  1227.                 End If
  1228.             End If
  1229.             Call Xldqh
  1230.         End If
  1231.   End With
  1232.   
  1233. End Sub
  1234. Private Sub Xldqh()                                                      '显露当前行
  1235.   
  1236.     Dim Toprowte As Long
  1237.     With WglrGrid
  1238.         Toprowte = 0
  1239.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  1240.             Toprowte = .TopRow
  1241.             .TopRow = .TopRow + 1
  1242.         Loop
  1243.         Toprowte = 0
  1244.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  1245.             Toprowte = .TopRow
  1246.             If .TopRow > 1 Then
  1247.                 .TopRow = .TopRow - 1
  1248.             End If
  1249.         Loop
  1250.     End With
  1251. End Sub
  1252. Private Sub Xldql()                                                     '显露当前列
  1253.     
  1254.     Dim Leftcolte As Long
  1255.     With WglrGrid
  1256.         If .Col >= Qslz And .Col >= .FixedCols Then
  1257.             If .LeftCol > .Col Then
  1258.                 .LeftCol = .Col
  1259.             End If
  1260.             Leftcolte = 0
  1261.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  1262.                 Leftcolte = .LeftCol
  1263.                 .LeftCol = .LeftCol + 1
  1264.             Loop
  1265.         End If
  1266.     End With
  1267. End Sub
  1268. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  1269.     
  1270.     With WglrGrid
  1271.         For Coljsq = Qslz To .Cols - 1
  1272.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  1273.                 pdhwk = False
  1274.                 Exit Function
  1275.             End If
  1276.         Next Coljsq
  1277.         pdhwk = True
  1278.     End With
  1279. End Function
  1280. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  1281.     
  1282.     With WglrGrid
  1283.         If .TextMatrix(sjh, 0) = "*" Then
  1284.             Exit Sub
  1285.         End If
  1286.         .TextMatrix(sjh, 0) = "*"
  1287.         If sjh >= .Rows - Fzxwghs - 1 Then
  1288.             .AddItem ""
  1289.             .RowHeight(.Rows - 1) = Sjhgd
  1290.         End If
  1291.     End With
  1292. End Sub
  1293. '*****************************以下为文本框录入处理程序(固定不变部分)*******************************'
  1294. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  1295.     '以下为依据实际情况自定义部分[
  1296.     
  1297.     '在此填写文本框录入事后处理程序
  1298.     Select Case Index
  1299.                      
  1300.         Case 3
  1301.            Set adoMode = Cw_DataEnvi.DataConnect.Execute("select whname,pricemode,ishqgl from gy_warehouse where whcode='" & Trim(LrText(Index).Text) & "' or whname='" & Trim(LrText(Index).Text) & "'")
  1302.             If Not adoMode.EOF Then
  1303.                 
  1304.                 If Trim(adoMode.Fields("PriceMode")) = "计划价法" Then
  1305.                     WglrGrid.ColHidden(Sydz("006", GridStr(), Szzls)) = False
  1306.                     WglrGrid.ColHidden(Sydz("008", GridStr(), Szzls)) = False
  1307.                 Else
  1308.                     WglrGrid.ColHidden(Sydz("006", GridStr(), Szzls)) = True
  1309.                     WglrGrid.ColHidden(Sydz("008", GridStr(), Szzls)) = True
  1310.                 End If
  1311.                 
  1312.             End If
  1313.             LrText(2).Text = CreatBillCode(BillCode, False)
  1314.             Call Cshhjwg
  1315.             
  1316.     End Select
  1317.     ']以上为依据实际情况自定义部分
  1318. End Sub
  1319. Private Sub LrText_Change(Index As Integer)
  1320.     '屏蔽程序改变控制
  1321.     If TextChangeLock Then
  1322.         Exit Sub
  1323.     End If
  1324.    
  1325.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  1326.         
  1327.     '限制字段录入长度
  1328.           
  1329.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  1330.     Call TextChangeLimit(LrText(Index), Textint(Index, 1))  '去掉无效字符
  1331.         Select Case Textint(Index, 1)
  1332.             Case 8, 11       '金额型
  1333.                 Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  1334.             Case 9, 12       '数量型
  1335.                 Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  1336.             Case 10          '单价型
  1337.                 Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1338.             Case Else        '其他小数类型控制
  1339.                 If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  1340.                     Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  1341.                 End If
  1342.         End Select
  1343.         
  1344.         TextChangeLock = False '解锁
  1345.         
  1346.      If Index = 1 Then
  1347.         For rjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  1348.            WglrGrid.TextMatrix(rjsq, Sydz("005", GridStr(), Szzls)) = ""
  1349.         Next rjsq
  1350.      End If
  1351. End Sub
  1352. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  1353.     Call TextShow(Index)
  1354. End Sub
  1355. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  1356.     
  1357.     Select Case KeyCode
  1358.         Case vbKeyF2
  1359.             Call Text_Help(Index)
  1360.     End Select
  1361. End Sub
  1362. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  1363.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  1364. End Sub
  1365. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  1366.     
  1367.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  1368.         Call TextYxxpd(Index)
  1369.     End If
  1370. '
  1371. End Sub
  1372. Private Sub Ydcommand1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '点击按钮
  1373.     Call Text_Help(Ydcommand1.Tag)
  1374. End Sub
  1375. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  1376.     
  1377.     If Not Ydcommand1.Visible Then
  1378.         Exit Sub
  1379.     End If
  1380.     TextValiLock = True
  1381.      If Textint(Index, 2) <> 1 Then
  1382.         strHlpR = FunHlpR(Trim(Textstr(Index, 4)), "czybm", Xtczybm)
  1383.      End If
  1384.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  1385.     If Len(Xtfhcs) <> 0 Then
  1386.         If Textint(Index, 3) = 1 Then
  1387.             LrText(Index).Text = Xtfhcsfz
  1388.             LrText(Index).Tag = Xtfhcs
  1389.         Else
  1390.             LrText(Index).Text = Xtfhcs
  1391.             LrText(Index).Tag = Xtfhcsfz
  1392.         End If
  1393.     End If
  1394.     TextValiLock = False
  1395.     LrText(Index).SetFocus
  1396. End Sub
  1397. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  1398.     '如果文本框有帮助,则显示帮助按钮
  1399.     If Textboolean(Index, 1) Then
  1400.         Ydcommand1.Visible = True
  1401.         Ydcommand1.Move LrText(Index).Left + LrText(Index).Width, LrText(Index).Top
  1402.         Ydcommand1.Tag = Index
  1403.     Else
  1404.         Ydcommand1.Tag = ""
  1405.         Ydcommand1.Visible = False
  1406.     End If
  1407.     
  1408.     '[>>
  1409.     '可在此处定义其他处理动作
  1410.     '<<]
  1411. End Sub
  1412. Private Sub Wbkcsh()                          '录入文本框初始化
  1413.     Dim Int_TabIndex As Integer         'Tab焦点计数器
  1414.   
  1415.     '单据录入中文本框焦点由0开始
  1416.     LrText(0).TabIndex = 0
  1417.   
  1418.     '最大录入文本框索引值
  1419.     Max_Text_Index = Textvar(1)
  1420.   
  1421.     ReDim TextValiJudgeLock(Max_Text_Index)
  1422.     For jsqte = 0 To Max_Text_Index
  1423.         
  1424.         '判断此文本框录入索引号是否存在,如存在则对其进行初始化
  1425.         If Len(Trim(Textstr(jsqte, 1))) <> 0 Then
  1426.         
  1427.             '自动装入录入文本框和其解释标签
  1428.             If jsqte <> 0 Then
  1429.                 Load LrText(jsqte)
  1430.                 Load TsLabel(jsqte)
  1431.            
  1432.                 '判断录入文本框是否显示
  1433.                 If Textboolean(jsqte, 4) Then
  1434.                     LrText(jsqte).Visible = True
  1435.                     TsLabel(jsqte).Visible = True
  1436.                 End If
  1437.             
  1438.                 '判断文本框是否可编辑
  1439.                 If Textboolean(jsqte, 5) Then
  1440.                     LrText(jsqte).Enabled = True
  1441.                 Else
  1442.                     LrText(jsqte).Enabled = False
  1443.                 End If
  1444.             End If
  1445.            
  1446.            '初始化其内容
  1447.             TextChangeLock = True
  1448.             LrText(jsqte).Text = ""
  1449.             LrText(jsqte).Tag = ""
  1450.             If Textint(jsqte, 5) <> 0 Then
  1451.                 LrText(jsqte).MaxLength = Textint(jsqte, 5)
  1452.             End If
  1453.             TextChangeLock = False
  1454.         
  1455.             '设置文本框位置及大小,并设置相应标签内容及其位置
  1456.             LrText(jsqte).Move Textint(jsqte, 13), Textint(jsqte, 12), Textint(jsqte, 11), Textint(jsqte, 10)
  1457.             TsLabel(jsqte).Caption = Textstr(jsqte, 7) & ":"
  1458.             TsLabel(jsqte).Move Textint(jsqte, 13) - TsLabel(jsqte).Width - 20, Textint(jsqte, 12) + (Textint(jsqte, 10) - TsLabel(jsqte).Height) / 2 - 30
  1459.             
  1460.         End If
  1461.      
  1462.         '将文本框有效性判断进行加锁,在文本框内容发生变化时将锁打开
  1463.         TextValiJudgeLock(jsqte) = True
  1464.       
  1465.     Next jsqte
  1466.     
  1467.     '设置文本框焦点转移顺序(前提文本焦点从0至Max_Text_Index)
  1468.     For Int_TabIndex = 0 To Max_Text_Index
  1469.         For jsqte = 0 To Max_Text_Index
  1470.             If Textint(jsqte, 14) = Int_TabIndex Then
  1471.                LrText(jsqte).TabIndex = Int_TabIndex
  1472.             End If
  1473.         Next jsqte
  1474.     Next Int_TabIndex
  1475.   
  1476. End Sub
  1477. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  1478.   
  1479.     Dim Sqlstr As String
  1480.     Dim Findrec As New ADODB.Recordset
  1481.   
  1482.     '按帮助不进行有效性判断
  1483.   
  1484.     If TextValiLock Then
  1485.         TextValiLock = False
  1486.         TextYxxpd = True
  1487.         Exit Function
  1488.     End If
  1489.   
  1490.     '文本框内容未曾改变不进行有效性判断
  1491.   
  1492.     If TextValiJudgeLock(Index) Then
  1493.         Ydcommand1.Visible = False
  1494.         TextYxxpd = True
  1495.         Exit Function
  1496.     End If
  1497.   
  1498.     '文本框内容为空认为有效,并清空其Tag值
  1499.   
  1500.     If Trim(LrText(Index)) = "" Then
  1501.         LrText(Index).Tag = ""
  1502.         Call Wbklrwbcl(Index)
  1503.         Ydcommand1.Visible = False
  1504.         TextValiJudgeLock(Index) = True
  1505.         TextYxxpd = True
  1506.         Exit Function
  1507.     End If
  1508.    
  1509.     '[>>
  1510.       
  1511.     '可在此加入不做有效性判断的理由(参照上面程序)
  1512.       
  1513.     '<<]
  1514.   
  1515.     Select Case Textint(Index, 4)
  1516.         Case 1      '编码型
  1517.             Sqlstr = Trim(Textstr(Index, 5))
  1518.             Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  1519.             If Index = 3 Then
  1520.                 Sqlstr = Sqlstr & " and czybm='" & Trim(Xtczybm) & "'"
  1521.             ElseIf Index = 0 Then
  1522.                  Sqlstr = Replace(Sqlstr, "#", Val(LrText(Index).Text))
  1523.             End If
  1524.             If LrText(Index).Enabled Then
  1525.                 Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1526.                 If Findrec.EOF Then
  1527.                     Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  1528.                     LrText(Index).SetFocus
  1529.                     Exit Function
  1530.                 Else
  1531.                     Select Case Textint(Index, 3)
  1532.                         Case 0
  1533.                             If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1534.                                 LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1535.                             End If
  1536.                             If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1537.                                 LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1538.                             End If
  1539.                         Case 1
  1540.                             If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1541.                                 LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1542.                             End If
  1543.                             If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1544.                                 LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1545.                             End If
  1546.                             
  1547.                     End Select
  1548.                 End If
  1549.               End If
  1550.             Case 2      '日期型
  1551.                 If IsDate(LrText(Index).Text) Then
  1552.                     LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  1553.                     If Val(Mid(LrText(Index), 1, 4)) < 1900 Then
  1554.                         LrText(Index).Text = "1900" + Mid(LrText(Index), 5, 6)
  1555.                     End If
  1556.                 Else
  1557.                     Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  1558.                     Call Xtxxts(Tsxx, 0, 1)
  1559.                     LrText(Index).SetFocus
  1560.                     Exit Function
  1561.                 End If
  1562.             
  1563.         Case 3      '其他类型
  1564.     End Select
  1565.     
  1566.     '隐藏帮助按钮
  1567.     Ydcommand1.Visible = False
  1568.    
  1569.     '如果有效则加锁,用户不改变内容则不再进行有效性判断
  1570.     TextValiJudgeLock(Index) = True
  1571.     '调用文本框事后处理程序
  1572.     Call Wbklrwbcl(Index)
  1573.     If Index = 0 Then
  1574.         Call Sub_FillBill
  1575.     End If
  1576.     '有效性判断通过则返回True
  1577.     TextYxxpd = True
  1578.     
  1579. End Function
  1580. Private Sub Sub_FillBill()   '调出发票数据
  1581. Dim RecBill As New Recordset
  1582. Set RecBill = Cw_DataEnvi.DataConnect.Execute("select * from CG_V_InvoiceBill where InvoiceMainID=" & Val(LrText(0).Tag) & " and InvoiceNum='" & LrText(0).Text & "'")
  1583.  With RecBill
  1584.   If Not .EOF Then
  1585.    WglrGrid.Rows = .RecordCount + WglrGrid.FixedRows
  1586.                
  1587.                LrText(2).Locked = True
  1588.                LrText(1).Enabled = True
  1589.                LrText(4).Text = Trim(.Fields("suppliername")) & ""
  1590.                LrText(4).Tag = Trim(.Fields("suppliercode"))
  1591.                
  1592.          jsqte = WglrGrid.FixedRows
  1593.          
  1594.          
  1595.          Do While Not .EOF
  1596.            If jsqte >= WglrGrid.Rows Then
  1597.               WglrGrid.AddItem ""
  1598.            End If
  1599.         
  1600.            '[>>显示单据分录
  1601.            WglrGrid.TextMatrix(jsqte, 0) = "*"
  1602.            WglrGrid.TextMatrix(jsqte, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("mnumber"))
  1603.            WglrGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("mname"))
  1604.            WglrGrid.TextMatrix(jsqte, Sydz("003", GridStr(), Szzls)) = Trim(.Fields("model"))
  1605.            WglrGrid.TextMatrix(jsqte, Sydz("004", GridStr(), Szzls)) = Trim(.Fields("PrimaryUnitName"))
  1606.            
  1607.            If Val(.Fields("Quantity")) = 0 Then
  1608.              WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), Szzls)) = ""
  1609.            Else
  1610.              WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), Szzls)) = Val(.Fields("Quantity"))
  1611.            End If
  1612.            If Not WglrGrid.ColHidden(Sydz("006", GridStr(), Szzls)) Then
  1613.                 If Val(.Fields("PlanPrice")) = 0 Then
  1614.                     WglrGrid.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = ""
  1615.                 Else
  1616.                     WglrGrid.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = Val(.Fields("PlanPrice"))
  1617.                 End If
  1618.            End If
  1619.            If Not WglrGrid.ColHidden(Sydz("008", GridStr(), Szzls)) Then
  1620.                 If Val(.Fields("PlanPrice")) = 0 Then
  1621.                     WglrGrid.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = ""
  1622.                 Else
  1623.                     WglrGrid.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = Val(.Fields("PlanPrice")) * Val(.Fields("Quantity"))
  1624.                 End If
  1625.            End If
  1626.            If Val(.Fields("MoneyYb")) = 0 Then
  1627.              WglrGrid.TextMatrix(jsqte, Sydz("009", GridStr(), Szzls)) = ""
  1628.            Else
  1629.              WglrGrid.TextMatrix(jsqte, Sydz("009", GridStr(), Szzls)) = Val(.Fields("MoneyYb"))
  1630.            End If
  1631.            
  1632.             If Val(WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), Szzls))) = 0 Then
  1633.               WglrGrid.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = ""
  1634.             Else
  1635.               WglrGrid.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = Val(WglrGrid.TextMatrix(jsqte, Sydz("009", GridStr(), Szzls))) / Val(WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), Szzls)))
  1636.             End If
  1637.         
  1638.            WglrGrid.RowHeight(jsqte) = Sjhgd
  1639.            .MoveNext
  1640.            jsqte = jsqte + 1
  1641.          Loop
  1642.        Else
  1643.         Tsxx = "此材料不属于本仓库!"
  1644.         Call Xtxxts(Tsxx, 0, 1)
  1645.         WglrGrid.Clear 1
  1646.        End If
  1647.       End With
  1648.             
  1649.             
  1650.       '调整网格
  1651.        Call Sub_AdjustGrid
  1652.        Call Cshhjwg
  1653.       '计算合计数据
  1654.       Dim jsq As Long
  1655.        For jsq = Qslz To WglrGrid.Cols - 1
  1656.           Call Sjhj(jsq)
  1657.        Next jsq
  1658.        GridBoolean(Sydz("001", GridStr(), Szzls), 1) = False
  1659. End Sub