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

企业管理

开发平台:

Visual Basic

  1.             WglrGrid.Clear 1
  2.             Changelock = True
  3.             .Select .FixedRows, Qslz
  4.             Changelock = False
  5.         End With
  6.         '计算合计数据(清零)(Fixed)
  7.         For Jsqte = Qslz To WglrGrid.Cols - 1
  8.             Call Sjhj(Jsqte)
  9.         Next Jsqte
  10.     End If
  11.     
  12.     '设置操作状态为浏览
  13.     Lab_OperStatus = "1"
  14.     Call Sub_OperStatus("10")
  15.     
  16. End Sub
  17. Private Function Sub_SaveBill() As Boolean                                   '保 存 单 据
  18.   
  19.     Dim Rectemp As New ADODB.Recordset                    '临时使用动态集
  20.     Dim Rec_VouchMain As New ADODB.Recordset              '单据主表动态集
  21.     Dim Rec_VouchSub As New ADODB.Recordset               '单据子表动态集
  22.     Dim Rowjsq As Long                                    '网格行计数器
  23.     Dim Coljsq As Long                                    '网格列计数器
  24.     Dim Jsqte As Integer                                  '临时计数器
  25.     Dim Lng_RowCount As Long                              '有效数据行计数器
  26.     Dim Lrywlz As Long                                    '录入有误列值
  27.     Dim SqlStr As String                                  'SQL语句
  28.   
  29.     Sub_SaveBill = False
  30.   
  31.     '一.============先对单据内容进行有效性判断==============='
  32.   
  33.     '先进行字段不能为空或不能为零有效性判断(Fixed)
  34.     For Jsqte = 0 To Max_Text_Index
  35.         If Textint(Jsqte, 8) = 1 Then     '字段不能为空
  36.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  37.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  38.                 Call Xtxxts(Tsxx, 0, 1)
  39.                 LrText(Jsqte).SetFocus
  40.                 Exit Function
  41.             End If
  42.         Else
  43.             If Textint(Jsqte, 8) = 2 Then   '字段不能为零
  44.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  45.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  46.                     Call Xtxxts(Tsxx, 0, 1)
  47.                     LrText(Jsqte).SetFocus
  48.                     Exit Function
  49.                 End If
  50.             End If
  51.         End If
  52.     Next Jsqte
  53.     
  54.     '对需要进行事后判断的文本框录入内容进行有效性判断 (Fixed)
  55.     For Jsqte = 0 To Max_Text_Index
  56.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  57.             If Not TextYxxpd(Jsqte) Then
  58.                 Call TextShow(Jsqte)
  59.                 Exit Function
  60.             End If
  61.         End If
  62.     Next Jsqte
  63.   
  64.     '[>>
  65.   
  66.     '可在此区域写入其他对单据表头内容的有效性判断.
  67.     
  68.     '单据录入日期是否在当前年度
  69.     If Not Year(CDate(LrText(0))) = PGKjYear Then
  70.         Tsxx = "单据录入日期不在当前年度" + "(" & PGKjYear & ")!"
  71.         Call Xtxxts(Tsxx, 0, 1)
  72.         Exit Function
  73.     End If
  74.     
  75.     '是否在开帐日期之内
  76.     SqlStr = "Select Qsrq FROM  GY_Kjrlb Where KjYear='" & PGKjYear & "' AND chhsjzbz=0"
  77.     Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  78.     
  79.     If CDate(LrText(0).Text) < Rectemp.Fields("Qsrq") Then
  80.         Tsxx = "入库日期必须大于" + CStr(Rectemp.Fields("Qsrq"))
  81.         Call Xtxxts(Tsxx, 0, 1)
  82.         Exit Function
  83.     End If
  84.     
  85.     '<<]
  86.   
  87.     '[>>下面将对所有有效数据行进行有效性判断
  88.   
  89.     Lng_RowCount = 0
  90.   
  91.     With WglrGrid
  92.         For Rowjsq = .FixedRows To .Rows - 1
  93.             '带*号者为有效数据行(Fixed)
  94.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  95.                 Exit For
  96.             Else
  97.                 Lng_RowCount = Lng_RowCount + 1
  98.             End If
  99.             '1.首先进行为空或为零判断(Fixed)
  100.             For Jsqte = Qslz To .Cols - 1
  101.             
  102.                 '字段不能为空
  103.                 If GridInt(Jsqte, 5) = 1 Then
  104.                     If Len(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  105.                         Tsxx = GridStr(Jsqte, 2)
  106.                         Lrywlz = Jsqte
  107.                         GoTo Lrcwcl
  108.                         Exit For
  109.                     End If
  110.                 End If
  111.                 
  112.                 '字段不能为零
  113.                 If GridInt(Jsqte, 5) = 2 Then
  114.                     If Val(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  115.                         Tsxx = GridStr(Jsqte, 2)
  116.                         Lrywlz = Jsqte
  117.                         GoTo Lrcwcl
  118.                         Exit For
  119.                     End If
  120.                 End If
  121.             Next Jsqte
  122.            
  123.             '2.判断存货编码是否存在(Define)
  124.             SqlStr = "SELECT MNumber From Gy_Material Where MNumber='" & Trim(.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))) & "'"
  125.             Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  126.             If Rectemp.EOF Then
  127.                 Tsxx = "此存货编码不存在!"
  128.                 Lrywlz = Sydz("001", GridStr(), Szzls)
  129.                 GoTo Lrcwcl
  130.             End If
  131.         Next Rowjsq
  132.      
  133.         '单据分录行数不能为零(Fixed)
  134.         If Lng_RowCount = 0 Then
  135.             Tsxx = "单据分录行数不能为零!"
  136.             Call Xtxxts(Tsxx, 0, 1)
  137.             Exit Function
  138.         End If
  139.         
  140.         '[>>
  141.         '此处可以定义整张单据不能通过有效性检查的理由
  142.         '<<]
  143.     End With  '网格
  144.    
  145.    
  146.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  147.    
  148.     '对存盘进行事务处理(Fixed)
  149.     On Error GoTo Swcwcl
  150.     Cw_DataEnvi.DataConnect.BeginTrans
  151.     
  152.     '判断单据状态以进行不同处理
  153.     
  154.     '1.先对单据主表进行处理
  155.     If Trim(Lab_OperStatus) = "2" Then
  156.     
  157.         '新增单据
  158.         
  159.         '1.对于某些单据号自动生成的单据则可在此处自动生成
  160.          LrText(2).Text = CreatBillCode(BillCode, True, , , Trim(LrText(1).Tag))
  161.     
  162.         '2.开始存盘
  163.          
  164.         '打开单据主表动态集
  165.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  166.         Rec_VouchMain.Open "Select * From GY_InOutMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  167.              
  168.         With Rec_VouchMain
  169.             .AddNew
  170.             .Fields("InOutMainId") = CreatBillID(BillCode)                                  '单据ID
  171.             .Fields("BillCode") = BillCode                                                  '单据类型
  172.             .Fields("BillNum") = Trim(LrText(2).Text)                                       '单据号
  173.             .Fields("BillDate") = CDate(LrText(0).Text)                                     '日期
  174.             .Fields("WhCode") = Trim(LrText(1).Tag)                                         '仓库
  175.             .Fields("InoutClassCode") = Trim(LrText(5).Tag)                                 '入库类别
  176.             .Fields("DeptCode") = Trim(LrText(3).Tag)                                       '生产部门
  177.             If IsDate(LrText(4).Text) Then
  178.                 .Fields("ProduceDate") = CDate(LrText(4).Text)                              '生产日期
  179.             End If
  180.             .Fields("Remark") = Trim(LrText(6).Text)                                        '备注
  181.             .Fields("Maker") = Xtczy                                                        '制单人
  182.             .Fields("ChhsChecker") = ""                                                     '审核人置空
  183.             .Fields("KjYear") = PGKjYear                                                    '会计年
  184.             .Fields("Period") = Month(CDate(Trim(LrText(0))))                               '会计月
  185.             .Fields("InOutFlag") = 1                                                        '收发标志
  186.             .Fields("OperType") = "产品入库"                                                 '收发类别
  187.             If Opt_Word(0).Value = True Then                                                '红蓝字标志
  188.                 .Fields("RedBlueFlag") = "1"
  189.             Else
  190.                 .Fields("RedBlueFlag") = "0"
  191.             End If
  192.             .Update
  193.             '系统读出单据ID写入Lab_BillID
  194.             Lab_BillId.Caption = .Fields("InOutMainId")
  195.         End With
  196.     Else
  197.         '修改单据
  198.        
  199.         '1.删除原单据子表中所有内容
  200.         
  201.         Cw_DataEnvi.DataConnect.Execute ("Delete GY_InOutSub Where InOutMainId=" & Val(Lab_BillId.Caption))
  202.         
  203.         '打开单据主表动态集
  204.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  205.         Rec_VouchMain.Open "Select * From GY_InOutMain Where InOutMainId=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  206.         
  207.         With Rec_VouchMain
  208.             .Fields("BillNum") = Trim(LrText(2).Text)                                       '单据号
  209.             .Fields("BillDate") = CDate(LrText(0).Text)                                     '日期
  210.             .Fields("DeptCode") = Trim(LrText(3).Tag)                                       '生产部门
  211.             If IsDate(LrText(4).Text) Then
  212.                 .Fields("ProduceDate") = CDate(LrText(4).Text)                              '生产日期
  213.             End If
  214.             .Fields("InoutClassCode") = Trim(LrText(5).Tag)                                 '入库类别
  215.             .Fields("Remark") = Trim(LrText(6).Text)                                        '备注
  216.             .Fields("ChhsChecker") = ""                                                     '审核人置空
  217.             .Fields("Period") = KjMonth(CDate(Trim(LrText(0))))                             '会计月
  218.             .Fields("InOutFlag") = 1                                                        '收发标志
  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("FactReceiptQuan") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))  '数量
  247.             Else
  248.                 .Fields("FactReceiptQuan") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))      '数量
  249.             End If
  250.             If FGISPriceMode = "计划价法" Then
  251.                 .Fields("PlanPrice") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("006", GridStr(), Szzls)))            '计划单价
  252.                 If Opt_Word(0).Value = True Then
  253.                     .Fields("PlanMoney") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)))    '计划金额
  254.                 Else
  255.                     .Fields("PlanMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)))
  256.                 End If
  257.             End If
  258.             .Fields("Price") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("008", GridStr(), Szzls)))                    '实际单价
  259.             If Opt_Word(0).Value = True Then
  260.                 .Fields("EMoney") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("009", GridStr(), Szzls)))           '实际金额
  261.             Else
  262.                 .Fields("EMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("009", GridStr(), Szzls)))
  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(8).Text = Xtczy
  386.     
  387.     '设置审核弃审按钮状态
  388.     Call Sub_CheckStatus
  389.     
  390.     '标识单据发生变化
  391.     Bln_BillChange = True
  392. End Sub
  393. Private Sub Sub_AbandonCheck()          '弃 审
  394.    
  395.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  396.     If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  397.        Exit Sub
  398.     End If
  399.     
  400.     '将单据清除审核标识
  401.     Cw_DataEnvi.DataConnect.Execute ("Update GY_InOutMain Set ChhsChecker='' Where InOutMainId=" & Val(Lab_BillId.Caption))
  402.     
  403.     '清空单据审核人
  404.     LrText(8).Text = ""
  405.     
  406.     '设置审核弃审按钮状态
  407.     Call Sub_CheckStatus
  408.     
  409.     '标识单据发生变化
  410.     Bln_BillChange = True
  411.   
  412. End Sub
  413. Private Function Fun_AllowEdit() As Boolean                      '判断当前单据是否允许编辑或删除
  414.   
  415.     Dim Rectemp As New ADODB.Recordset     '临时使用动态集
  416.     Dim SqlStr As String                   'SQL语句
  417.     
  418.     Fun_AllowEdit = False
  419.     
  420.     SqlStr = "Select * From GY_InOutMain Where InOutMainId='" & Lab_BillId.Caption & "'"
  421.     Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  422.     
  423.     With Rectemp
  424.     
  425.         If Not .EOF Then
  426.         
  427.             '记帐或审核单据不能修改
  428.             If Not Trim(.Fields("ChhsChecker") & "") = "" Then
  429.                 Tsxx = "该单据已审核确认,不能修改或删除!"
  430.                 Call Xtxxts(Tsxx, 0, 4)
  431.                 Exit Function
  432.             End If
  433.         
  434.             If Not Trim(.Fields("ChalkitupMan") & "") = "" Then
  435.                 Tsxx = "该单据已记帐,不能修改或删除!"
  436.                 Call Xtxxts(Tsxx, 0, 4)
  437.                 Exit Function
  438.             End If
  439.             
  440.         End If
  441.         
  442.     End With
  443.     
  444.     Fun_AllowEdit = True
  445. End Function
  446. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  447. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  448. Private Sub Sub_AdjustGrid()
  449.     
  450.     '调 整 网 格
  451.     With WglrGrid
  452.         '加 1 保持一行录入行
  453.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  454.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  455.             For Jsqte = .FixedRows To .Rows - 1
  456.                 .RowHeight(Jsqte) = Sjhgd
  457.             Next Jsqte
  458.         End If
  459.         
  460.         '判断是否有辅助行和录入行,如没有则加行
  461.         Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  462.             .AddItem ""
  463.             .RowHeight(.Rows - 1) = Sjhgd
  464.         Loop
  465.     
  466.     End With
  467.     
  468. End Sub
  469. Private Sub Lrzdbz()                                                      '录入字段帮助
  470.     
  471.     If Not Ydcommand.Visible Then
  472.         Exit Sub
  473.     End If
  474.    
  475.     With WglrGrid
  476.         Valilock = True
  477.     
  478.         '处理通用部分
  479.         Changelock = True        '调入另外窗体必须加锁
  480.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  481.         Changelock = False
  482.         
  483.         If Len(Xtfhcs) <> 0 Then
  484.             If GridInt(.Col, 7) = 0 Then
  485.                 Ydtext.Text = Xtfhcs
  486.             Else
  487.                 Ydtext.Text = Xtfhcsfz
  488.             End If
  489.         End If
  490.         
  491.         Valilock = False
  492.         If Ydtext.Visible Then
  493.             Ydtext.SetFocus
  494.         End If
  495.     End With
  496. End Sub
  497. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  498.     
  499.     With HjGrid
  500.     
  501.        '是否显示合计网格
  502.        If Not Sfxshjwg Then
  503.            .Visible = False
  504.            Exit Sub
  505.        Else
  506.            .Visible = True
  507.        End If
  508.       
  509.        '设置网格相关属性
  510.        .Enabled = False
  511.        .Appearance = flexFlat
  512.        .BorderStyle = flexBorderNone
  513.        .ScrollBars = flexScrollBarNone
  514.        .Width = WglrGrid.Width
  515.        .FixedRows = 0
  516.        .Rows = 1
  517.        .Cols = WglrGrid.Cols
  518.        .LeftCol = WglrGrid.LeftCol
  519.        .TextMatrix(0, Qslz) = "合  计"
  520.        For Jsqte = 0 To WglrGrid.Cols - 1
  521.            .ColHidden(Jsqte) = WglrGrid.ColHidden(Jsqte)
  522.            .ColWidth(Jsqte) = WglrGrid.ColWidth(Jsqte)
  523.            .ColAlignment(Jsqte) = WglrGrid.ColAlignment(Jsqte)
  524.            .ColFormat(Jsqte) = WglrGrid.ColFormat(Jsqte)
  525.        Next Jsqte
  526.        .ColAlignment(Qslz) = flexAlignCenterTop
  527.        For Jsqte = .FixedRows To .Rows - 1
  528.            .RowHeight(Jsqte) = .Height / .Rows
  529.        Next Jsqte
  530.        
  531.       '程序自动调整网格高度(自动设置为网格剩余高度+辅助项网格行数(默认为1)*数据行高度)、并设置其位置信息
  532.        .Height = Fzxwghs * Sjhgd + ((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) Mod Sjhgd)
  533.        .RowHeight(0) = .Height
  534.        .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  535.     End With
  536. End Sub
  537. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  538.    Call Cxxswbk
  539. End Sub
  540. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  541.     Fun_Drfrmyxxpd = True
  542.     With WglrGrid
  543.    
  544.         '如果文本框处于编辑状态,则先进性文本框的有效性判断
  545.         If Ydcommand1.Visible Then
  546.            If Not TextYxxpd(Ydcommand1.Tag) Then
  547.               Fun_Drfrmyxxpd = False
  548.               Exit Function
  549.            End If
  550.         End If
  551.         
  552.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  553.         If Ydtext.Visible Or YdCombo.Visible Then
  554.             Call Lrsjhx
  555.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  556.                 Fun_Drfrmyxxpd = False
  557.                 Exit Function
  558.             End If
  559.         End If
  560.    
  561.         '进行行有效性判断
  562.         If Not Sjhzyxxpd(.Row) Then
  563.             Fun_Drfrmyxxpd = False
  564.             Exit Function
  565.         End If
  566.     End With
  567. End Function
  568. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  569.     
  570.     If HjGrid.Visible Then
  571.         With HjGrid
  572.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  573.         End With
  574.     End If
  575. End Sub
  576. Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
  577.     
  578.     With WglrGrid
  579.         If .Row >= .FixedRows Then
  580.             '[>>
  581.             '此处可以填写显示与此网格行相关信息
  582.             '<<]
  583.         End If
  584.     End With
  585. End Sub
  586. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  587.     '网格得到焦点,如果当前选择行为非数据行
  588.     '则调整当前焦点至有效数据行
  589.     With WglrGrid
  590.         If .Row < .FixedRows And .Rows > .FixedRows Then
  591.             Changelock = True
  592.             .Select .FixedRows, .Col
  593.             Changelock = False
  594.         End If
  595.         If .Col < Qslz Then
  596.             Changelock = True
  597.             .Select .Row, Qslz
  598.             Changelock = False
  599.         End If
  600.     End With
  601. End Sub
  602. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  603.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  604.     If Changelock Then
  605.         Exit Sub
  606.     End If
  607.     '引发网格RowcolChange事件
  608.     With WglrGrid
  609.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  610.             .Select 0, 0
  611.         End If
  612.     End With
  613. End Sub
  614. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  615.     If Gdtlock Then
  616.         Exit Sub
  617.     End If
  618.  
  619.     With WglrGrid
  620.         If Ydtext.Visible Or YdCombo.Visible Then
  621.             Gdtlock = True
  622.             .TopRow = Dqtoprow
  623.             .LeftCol = Dqleftcol
  624.             Gdtlock = False
  625.             Exit Sub
  626.         End If
  627.         HjGrid.LeftCol = .LeftCol
  628.     End With
  629. End Sub
  630. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  631.     
  632.     If Changelock Then
  633.         Exit Sub
  634.     End If
  635.     '记录刚刚离开网格单元的行列值
  636.     Dqlkwgh = WglrGrid.Row
  637.     Dqlkwgl = WglrGrid.Col
  638.     '判断是否需要录入数据回写
  639.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  640.         Exit Sub
  641.     End If
  642.     Call Lrsjhx
  643. End Sub
  644. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  645.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  646.     With WglrGrid
  647.         If Changelock Then
  648.             Exit Sub
  649.         End If
  650.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  651.             Exit Sub
  652.         End If
  653.         If .Row <> Dqlkwgh Then
  654.             If Not Sjhzyxxpd(Dqlkwgh) Then
  655.                 Exit Sub
  656.             End If
  657.         End If
  658.     End With
  659.     
  660.     '<自定义部分>
  661.     If Xt_XtJc Then
  662.         If Trim(WglrGrid.TextMatrix(WglrGrid.Row, 0)) <> "*" Then
  663.             WglrGrid.Select Dqlkwgh, Dqlkwgl
  664.         End If
  665.     End If
  666.     '<end>
  667.    
  668.     Call fhyxh
  669.     Call Xldql
  670.    
  671. End Sub
  672. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  673.   
  674.     With WglrGrid
  675.         Call xswbk
  676.     End With
  677. End Sub
  678. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  679.     
  680.     Valilock = True
  681.     Ydtext.Visible = False
  682.     YdCombo.Visible = False
  683.     Ydcommand.Visible = False
  684. End Sub
  685. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  686.     With WglrGrid
  687.         Select Case KeyCode
  688.             Case vbKeyEscape                'ESC 键放弃录入
  689.                 Valilock = True
  690.                 .SetFocus
  691.                 Call Ycwbk
  692.                 Valilock = False
  693.             Case vbKeyReturn                '回 车 键 =13
  694.                 KeyCode = 0
  695.                 .SetFocus
  696.                 Call Lrsjhx
  697.                 Rowjsq = .Row
  698.                 Coljsq = .Col + 1
  699.                 If Coljsq > .Cols - 1 Then
  700.                     If Rowjsq < .Rows - 1 Then
  701.                         Rowjsq = Rowjsq + 1
  702.                     End If
  703.                     Coljsq = Qslz
  704.                 End If
  705.                 Do While Rowjsq <= .Rows - 1
  706.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  707.                         Coljsq = Coljsq + 1
  708.                         If Coljsq > .Cols - 1 Then
  709.                             Rowjsq = Rowjsq + 1
  710.                             Coljsq = Qslz
  711.                         End If
  712.                     Else
  713.                         Exit Do
  714.                     End If
  715.                 Loop
  716.                 .Select Rowjsq, Coljsq
  717.             Case vbKeyLeft                  '左 箭 头 =37
  718.                 If .Col - 1 = Qslz Then
  719.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  720.                         GoTo jzzx
  721.                     End If
  722.                 End If
  723.                 If .Col > Qslz Then
  724.                     KeyCode = 0
  725.                     .SetFocus
  726.                     Call Lrsjhx
  727.                     Coljsq = .Col - 1
  728.                     Do While Coljsq > Qslz
  729.                         If Coljsq - 1 = Qslz Then
  730.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  731.                                 GoTo jzzx
  732.                             End If
  733.                         End If
  734.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  735.                             Coljsq = Coljsq - 1
  736.                         Else
  737.                             Exit Do
  738.                         End If
  739.                     Loop
  740.                     .Select .Row, Coljsq
  741.                 End If
  742.             Case vbKeyRight                 '右 箭 头 =39
  743.                 KeyCode = 0
  744.                 .SetFocus
  745.                 Call Lrsjhx
  746.                 Rowjsq = .Row
  747.                 Coljsq = .Col + 1
  748.                 If Coljsq > .Cols - 1 Then
  749.                     If Rowjsq < .Rows - 1 Then
  750.                         Rowjsq = Rowjsq + 1
  751.                     End If
  752.                     Coljsq = Qslz
  753.                 End If
  754.                 Do While Rowjsq <= .Rows - 1
  755.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  756.                         Coljsq = Coljsq + 1
  757.                         If Coljsq > .Cols - 1 Then
  758.                             Rowjsq = Rowjsq + 1
  759.                             Coljsq = Qslz
  760.                         End If
  761.                     Else
  762.                         Exit Do
  763.                     End If
  764.                 Loop
  765.                 .Select Rowjsq, Coljsq
  766.         Case Else
  767.    End Select
  768.    
  769. jzzx:
  770.    
  771.     End With
  772. End Sub
  773. Private Sub YdCombo_LostFocus()
  774.   
  775.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  776.         If Not Valilock Then                           '为TRUE
  777.             Call Lrsjhx
  778.             If Not Sjhzyxxpd(Dqlrwgh) Then
  779.                 Exit Sub
  780.             End If
  781.         End If
  782.     End With
  783. End Sub
  784. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  785.     Call Lrzdbz
  786. End Sub
  787. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  788.     Dim Rowjsq As Long, Coljsq As Long
  789.     With WglrGrid
  790.         Select Case KeyCode
  791.             Case vbKeyF2
  792.                 Call Lrzdbz
  793.             Case vbKeyEscape                'ESC 键放弃录入
  794.                 Valilock = True
  795.                 Call Ycwbk
  796.                 .SetFocus
  797.             Case vbKeyReturn                '回 车 键 =13
  798.                 KeyCode = 0
  799.                 .SetFocus
  800.                 Call Lrsjhx
  801.                 Rowjsq = .Row
  802.                 Coljsq = .Col + 1
  803.                 If Coljsq > .Cols - 1 Then
  804.                     If Rowjsq < .Rows - 1 Then
  805.                         Rowjsq = Rowjsq + 1
  806.                     End If
  807.                     Coljsq = Qslz
  808.                 End If
  809.                 Do While Rowjsq <= .Rows - 1
  810.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  811.                         Coljsq = Coljsq + 1
  812.                         If Coljsq > .Cols - 1 Then
  813.                             Rowjsq = Rowjsq + 1
  814.                             Coljsq = Qslz
  815.                         End If
  816.                     Else
  817.                         Exit Do
  818.                     End If
  819.                 Loop
  820.                 If Rowjsq <= .Rows - 1 Then
  821.                     .Select Rowjsq, Coljsq
  822.                 End If
  823.             Case vbKeyUp                    '上 箭 头 =38
  824.                 KeyCode = 0
  825.                 .SetFocus
  826.                 Call Lrsjhx
  827.                 If .Row > .FixedRows Then
  828.                     .Row = .Row - 1
  829.                 End If
  830.             Case vbKeyDown                  '下 箭 头 =40
  831.                 KeyCode = 0
  832.                 .SetFocus
  833.                 Call Lrsjhx
  834.                 If .Row < .Rows - 1 Then
  835.                     .Row = .Row + 1
  836.                 End If
  837.             Case vbKeyLeft                  '左 箭 头 =37
  838.                 If .Col - 1 = Qslz Then
  839.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  840.                         GoTo jzzx
  841.                     End If
  842.                 End If
  843.                 If Ydtext.SelStart = 0 And .Col > Qslz Then
  844.                     KeyCode = 0
  845.                     .SetFocus
  846.                     Call Lrsjhx
  847.                     Coljsq = .Col - 1
  848.                     Do While Coljsq > Qslz
  849.                         If Coljsq - 1 = Qslz Then
  850.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  851.                                 GoTo jzzx
  852.                             End If
  853.                         End If
  854.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  855.                             Coljsq = Coljsq - 1
  856.                         Else
  857.                             Exit Do
  858.                         End If
  859.                     Loop
  860.                     .Select .Row, Coljsq
  861.                 End If
  862. jzzx:
  863.             Case vbKeyRight                 '右 箭 头 =39
  864.                 wblong = Len(Ydtext.Text)
  865.                 If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  866.                     KeyCode = 0
  867.                     .SetFocus
  868.                     Call Lrsjhx
  869.                     Rowjsq = .Row
  870.                     Coljsq = .Col + 1
  871.                     If Coljsq > .Cols - 1 Then
  872.                         If Rowjsq < .Rows - 1 Then
  873.                             Rowjsq = Rowjsq + 1
  874.                         End If
  875.                         Coljsq = Qslz
  876.                     End If
  877.                     Do While Rowjsq <= .Rows - 1
  878.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  879.                             Coljsq = Coljsq + 1
  880.                             If Coljsq > .Cols - 1 Then
  881.                                 Rowjsq = Rowjsq + 1
  882.                                 Coljsq = Qslz
  883.                             End If
  884.                         Else
  885.                             Exit Do
  886.                         End If
  887.                     Loop
  888.                     .Select Rowjsq, Coljsq
  889.                 End If
  890.             Case Else
  891.         End Select
  892.     End With
  893. End Sub
  894. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  895.     
  896.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  897.     If KeyAscii <> 0 Then
  898.         Call Xyxhbz(Dqlrwgh)
  899.     End If
  900. End Sub
  901. Private Sub ydtext_Change()                              '录入事中变化处理
  902.     '防止程序改变但不进行处理
  903.     If Wbkbhlock Then
  904.         Exit Sub
  905.     End If
  906.     With WglrGrid
  907.         '限制字段录入长度
  908.         Wbkbhlock = True
  909.         
  910.         Call TextChangeLimit(Ydtext, GridInt(.Col, 1))  '去掉无效字符
  911.         
  912.         Select Case GridInt(.Col, 1)
  913.             Case 8, 11   '金额型
  914.                 Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  915.             Case 9, 12   '数量型
  916.                 Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  917.             Case 10      '单价型
  918.                 Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  919.             Case Else    '其他类型
  920.                 If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  921.                     Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  922.                 End If
  923.         End Select
  924.         Wbkbhlock = False
  925.     End With
  926. End Sub
  927. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  928.   
  929.     With WglrGrid
  930.         If Not Valilock Then
  931.             Call Lrsjhx
  932.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  933.                 Exit Sub
  934.             End If
  935.             If Not Sjhzyxxpd(Dqlrwgh) Then
  936.                 Exit Sub
  937.             End If
  938.         End If
  939.     End With
  940. End Sub
  941. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  942.     
  943.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  944.   
  945.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  946.     If Not Fun_AllowInput Then
  947.         Exit Sub
  948.     End If
  949.   
  950.     '显示文本框前返回有效行列(解决滚动条问题)
  951.     Call Xldqh
  952.     Call Xldql
  953.   
  954.     '隐藏文本框,帮助按钮,列表组合框
  955.     Call Ycwbk
  956.   
  957.     With WglrGrid
  958.         Dqlrwgh = .Row
  959.         Dqlrwgl = .Col
  960.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  961.             Exit Sub
  962.         End If
  963.      
  964.         Wbkpy = 30
  965.         Wbkpy1 = 15
  966.         
  967.         On Error Resume Next
  968.     
  969.         If GridBoolean(.Col, 3) Then
  970.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  971.             YdCombo.Top = .CellTop + .Top + Wbkpy
  972.             YdCombo.Width = .CellWidth - Wbkpy1
  973.             Call Wbkcl
  974.             YdCombo.Visible = True
  975.             YdCombo.SetFocus
  976.             Ydcommand.Visible = False
  977.             Ydtext.Visible = False
  978.         Else
  979.             If GridBoolean(.Col, 2) Then
  980.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  981.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  982.                 Ydcommand.Visible = True
  983.             Else
  984.                 Ydcommand.Visible = False
  985.             End If
  986.              
  987.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  988.             Ydtext.Top = .CellTop + .Top + Wbkpy
  989.             If Ydcommand.Visible Then
  990.                 If Sfblbzkd Then
  991.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  992.                 Else
  993.                     Ydtext.Width = .CellWidth - Wbkpy1
  994.                 End If
  995.             Else
  996.                 Ydtext.Width = .CellWidth - Wbkpy1
  997.             End If
  998.             Ydtext.Height = .CellHeight - Wbkpy1
  999.         
  1000.             If GridInt(.Col, 2) <> 0 Then
  1001.                 Ydtext.MaxLength = GridInt(.Col, 2)
  1002.             Else
  1003.                 Ydtext.MaxLength = 3000
  1004.             End If
  1005.       
  1006.             Call Wbkcl
  1007.       
  1008.             Ydtext.Visible = True
  1009.             Ydtext.SetFocus
  1010.         End If
  1011.         Dqtoprow = .TopRow
  1012.         Dqleftcol = .LeftCol
  1013.         
  1014.         '重置锁值
  1015.         Valilock = False
  1016.         Wbkbhlock = False
  1017.     End With
  1018. End Sub
  1019. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  1020.    
  1021.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  1022.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1023.         Exit Function
  1024.     End If
  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("006", GridStr(), Szzls)) = False
  1692.                 .ColHidden(Sydz("007", GridStr(), Szzls)) = False
  1693.             Else
  1694.                 .ColHidden(Sydz("006", GridStr(), Szzls)) = True
  1695.                 .ColHidden(Sydz("007", 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