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

企业管理

开发平台:

Visual Basic

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