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

企业管理

开发平台:

Visual Basic

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