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