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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{D76D7128-4A96-11D3-BD95-D296DC2DD072}#1.0#0"; "VSOCX7.OCX"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  4. Begin VB.Form Tr_Mend 
  5.    BackColor       =   &H00E9F4FA&
  6.    BorderStyle     =   3  'Fixed Dialog
  7.    Caption         =   "维修单"
  8.    ClientHeight    =   6045
  9.    ClientLeft      =   45
  10.    ClientTop       =   330
  11.    ClientWidth     =   10935
  12.    Icon            =   "铁运管理_维修单.frx":0000
  13.    KeyPreview      =   -1  'True
  14.    LinkTopic       =   "Form1"
  15.    MaxButton       =   0   'False
  16.    MinButton       =   0   'False
  17.    ScaleHeight     =   6045
  18.    ScaleWidth      =   10935
  19.    ShowInTaskbar   =   0   'False
  20.    StartUpPosition =   1  '所有者中心
  21.    Begin VB.TextBox LrText 
  22.       ForeColor       =   &H00000000&
  23.       Height          =   300
  24.       Index           =   0
  25.       Left            =   1020
  26.       TabIndex        =   4
  27.       Text            =   "0"
  28.       Top             =   1500
  29.       Width           =   1650
  30.    End
  31.    Begin VB.CommandButton Ydcommand 
  32.       Height          =   300
  33.       Left            =   10680
  34.       Picture         =   "铁运管理_维修单.frx":1042
  35.       Style           =   1  'Graphical
  36.       TabIndex        =   3
  37.       Top             =   990
  38.       Visible         =   0   'False
  39.       Width           =   300
  40.    End
  41.    Begin VB.TextBox Ydtext 
  42.       BackColor       =   &H80000018&
  43.       BorderStyle     =   0  'None
  44.       Height          =   330
  45.       Left            =   7710
  46.       MultiLine       =   -1  'True
  47.       TabIndex        =   2
  48.       Top             =   960
  49.       Visible         =   0   'False
  50.       Width           =   1185
  51.    End
  52.    Begin VB.Timer Timer1 
  53.       Interval        =   1
  54.       Left            =   9690
  55.       Top             =   150
  56.    End
  57.    Begin VB.CommandButton Ydcommand1 
  58.       Height          =   300
  59.       Left            =   10680
  60.       Picture         =   "铁运管理_维修单.frx":13CC
  61.       Style           =   1  'Graphical
  62.       TabIndex        =   1
  63.       Top             =   600
  64.       Visible         =   0   'False
  65.       Width           =   300
  66.    End
  67.    Begin VB.ComboBox YdCombo 
  68.       Height          =   300
  69.       Left            =   9000
  70.       Style           =   2  'Dropdown List
  71.       TabIndex        =   0
  72.       Top             =   960
  73.       Visible         =   0   'False
  74.       Width           =   1155
  75.    End
  76.    Begin MSComctlLib.Toolbar Tlb_Action 
  77.       Align           =   1  'Align Top
  78.       Height          =   570
  79.       Left            =   0
  80.       TabIndex        =   5
  81.       Top             =   0
  82.       Width           =   10935
  83.       _ExtentX        =   19288
  84.       _ExtentY        =   1005
  85.       ButtonWidth     =   820
  86.       ButtonHeight    =   953
  87.       AllowCustomize  =   0   'False
  88.       Wrappable       =   0   'False
  89.       Appearance      =   1
  90.       Style           =   1
  91.       ImageList       =   "ImageList1"
  92.       _Version        =   393216
  93.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  94.          NumButtons      =   24
  95.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  96.             Caption         =   "打印"
  97.             Key             =   "dy"
  98.             Object.ToolTipText     =   "打印当前单据或Ctrl+P"
  99.             ImageKey        =   "dy"
  100.          EndProperty
  101.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  102.             Caption         =   "预览"
  103.             Key             =   "yl"
  104.             ImageKey        =   "yl"
  105.          EndProperty
  106.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  107.             Key             =   "fgh0"
  108.             Style           =   3
  109.          EndProperty
  110.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  111.             Caption         =   "新增"
  112.             Key             =   "xz"
  113.             Object.ToolTipText     =   "新增加一张单据或F5"
  114.             ImageKey        =   "xz"
  115.          EndProperty
  116.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  117.             Caption         =   "修改"
  118.             Key             =   "xg"
  119.             Object.ToolTipText     =   "修改当前单据或F3"
  120.             ImageKey        =   "xg"
  121.          EndProperty
  122.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  123.             Caption         =   "删除"
  124.             Key             =   "sc"
  125.             Object.ToolTipText     =   "删除当前单据"
  126.             ImageKey        =   "sc"
  127.          EndProperty
  128.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  129.             Key             =   "fgh1"
  130.             Style           =   3
  131.          EndProperty
  132.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  133.             Caption         =   "增行"
  134.             Key             =   "zh"
  135.             Object.ToolTipText     =   "插入一行或Insert"
  136.             ImageKey        =   "zh"
  137.          EndProperty
  138.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  139.             Caption         =   "删行"
  140.             Key             =   "sh"
  141.             Object.ToolTipText     =   "删除当前记录行或Delete"
  142.             ImageKey        =   "sh"
  143.          EndProperty
  144.          BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  145.             Key             =   "fgh2"
  146.             Style           =   3
  147.          EndProperty
  148.          BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  149.             Caption         =   "保存"
  150.             Key             =   "bc"
  151.             Object.ToolTipText     =   "保存单据或F6"
  152.             ImageKey        =   "bc"
  153.          EndProperty
  154.          BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  155.             Caption         =   "放弃"
  156.             Key             =   "fq"
  157.             Object.ToolTipText     =   "放弃此次操作"
  158.             ImageKey        =   "fq"
  159.          EndProperty
  160.          BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  161.             Key             =   "fgh3"
  162.             Style           =   3
  163.          EndProperty
  164.          BeginProperty Button14 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  165.             Caption         =   "审核"
  166.             Key             =   "shsh"
  167.             ImageKey        =   "check"
  168.          EndProperty
  169.          BeginProperty Button15 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  170.             Caption         =   "弃审"
  171.             Key             =   "shqs"
  172.             ImageKey        =   "qs"
  173.          EndProperty
  174.          BeginProperty Button16 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  175.             Enabled         =   0   'False
  176.             Object.Visible         =   0   'False
  177.             Caption         =   "作废"
  178.             Key             =   "Revoke"
  179.             ImageKey        =   "zf"
  180.          EndProperty
  181.          BeginProperty Button17 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  182.             Key             =   "fgh4"
  183.             Style           =   3
  184.          EndProperty
  185.          BeginProperty Button18 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  186.             Caption         =   "首张"
  187.             Key             =   "first"
  188.             ImageKey        =   "first"
  189.          EndProperty
  190.          BeginProperty Button19 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  191.             Caption         =   "上张"
  192.             Key             =   "prev"
  193.             ImageKey        =   "prev"
  194.          EndProperty
  195.          BeginProperty Button20 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  196.             Caption         =   "下张"
  197.             Key             =   "next"
  198.             ImageKey        =   "next"
  199.          EndProperty
  200.          BeginProperty Button21 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  201.             Caption         =   "末张"
  202.             Key             =   "last"
  203.             ImageKey        =   "last"
  204.          EndProperty
  205.          BeginProperty Button22 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  206.             Key             =   "fgh5"
  207.             Style           =   3
  208.          EndProperty
  209.          BeginProperty Button23 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  210.             Caption         =   "帮助"
  211.             Key             =   "bz"
  212.             ImageKey        =   "bz"
  213.          EndProperty
  214.          BeginProperty Button24 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  215.             Caption         =   "退出"
  216.             Key             =   "fh"
  217.             ImageKey        =   "tc"
  218.          EndProperty
  219.       EndProperty
  220.       BorderStyle     =   1
  221.    End
  222.    Begin MSComctlLib.ImageList ImageList1 
  223.       Left            =   10410
  224.       Top             =   1350
  225.       _ExtentX        =   1005
  226.       _ExtentY        =   1005
  227.       BackColor       =   -2147483643
  228.       ImageWidth      =   16
  229.       ImageHeight     =   16
  230.       MaskColor       =   12632256
  231.       _Version        =   393216
  232.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  233.          NumListImages   =   38
  234.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  235.             Picture         =   "铁运管理_维修单.frx":1756
  236.             Key             =   "sz"
  237.          EndProperty
  238.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  239.             Picture         =   "铁运管理_维修单.frx":1AF0
  240.             Key             =   "dy"
  241.          EndProperty
  242.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  243.             Picture         =   "铁运管理_维修单.frx":1E8A
  244.             Key             =   "yl"
  245.          EndProperty
  246.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  247.             Picture         =   "铁运管理_维修单.frx":2224
  248.             Key             =   "xg"
  249.          EndProperty
  250.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  251.             Picture         =   "铁运管理_维修单.frx":25BE
  252.             Key             =   "zh"
  253.          EndProperty
  254.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  255.             Picture         =   "铁运管理_维修单.frx":2958
  256.             Key             =   "sh"
  257.          EndProperty
  258.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  259.             Picture         =   "铁运管理_维修单.frx":2CF2
  260.             Key             =   "bc"
  261.          EndProperty
  262.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  263.             Picture         =   "铁运管理_维修单.frx":308C
  264.             Key             =   "fq"
  265.          EndProperty
  266.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  267.             Picture         =   "铁运管理_维修单.frx":3426
  268.             Key             =   "bz"
  269.          EndProperty
  270.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  271.             Picture         =   "铁运管理_维修单.frx":37C0
  272.             Key             =   "tc"
  273.          EndProperty
  274.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  275.             Picture         =   "铁运管理_维修单.frx":3B5A
  276.             Key             =   "bcgs"
  277.          EndProperty
  278.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  279.             Picture         =   "铁运管理_维修单.frx":3EF4
  280.             Key             =   "mrlk"
  281.          EndProperty
  282.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  283.             Picture         =   "铁运管理_维修单.frx":428E
  284.             Key             =   "xsxm"
  285.          EndProperty
  286.          BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  287.             Picture         =   "铁运管理_维修单.frx":4628
  288.             Key             =   "first"
  289.          EndProperty
  290.          BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  291.             Picture         =   "铁运管理_维修单.frx":49C2
  292.             Key             =   "prev"
  293.          EndProperty
  294.          BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  295.             Picture         =   "铁运管理_维修单.frx":4D5C
  296.             Key             =   "next"
  297.          EndProperty
  298.          BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  299.             Picture         =   "铁运管理_维修单.frx":50F6
  300.             Key             =   "last"
  301.          EndProperty
  302.          BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  303.             Picture         =   "铁运管理_维修单.frx":5490
  304.             Key             =   "xx"
  305.          EndProperty
  306.          BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  307.             Picture         =   "铁运管理_维修单.frx":582A
  308.             Key             =   "define"
  309.          EndProperty
  310.          BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  311.             Picture         =   "铁运管理_维修单.frx":5BC4
  312.             Key             =   "exec"
  313.          EndProperty
  314.          BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  315.             Picture         =   "铁运管理_维修单.frx":5F5E
  316.             Key             =   "xz"
  317.          EndProperty
  318.          BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  319.             Picture         =   "铁运管理_维修单.frx":62F8
  320.             Key             =   "sc"
  321.          EndProperty
  322.          BeginProperty ListImage23 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  323.             Picture         =   "铁运管理_维修单.frx":6692
  324.             Key             =   "sx"
  325.          EndProperty
  326.          BeginProperty ListImage24 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  327.             Picture         =   "铁运管理_维修单.frx":6A2C
  328.             Key             =   "cx"
  329.          EndProperty
  330.          BeginProperty ListImage25 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  331.             Picture         =   "铁运管理_维修单.frx":6DC6
  332.             Key             =   "zd"
  333.          EndProperty
  334.          BeginProperty ListImage26 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  335.             Picture         =   "铁运管理_维修单.frx":7160
  336.             Key             =   "dz"
  337.          EndProperty
  338.          BeginProperty ListImage27 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  339.             Picture         =   "铁运管理_维修单.frx":74FA
  340.             Key             =   "ph"
  341.          EndProperty
  342.          BeginProperty ListImage28 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  343.             Picture         =   "铁运管理_维修单.frx":7894
  344.             Key             =   "fz"
  345.          EndProperty
  346.          BeginProperty ListImage29 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  347.             Picture         =   "铁运管理_维修单.frx":7C2E
  348.             Key             =   "dw"
  349.          EndProperty
  350.          BeginProperty ListImage30 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  351.             Picture         =   "铁运管理_维修单.frx":7FC8
  352.             Key             =   "hf"
  353.          EndProperty
  354.          BeginProperty ListImage31 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  355.             Picture         =   "铁运管理_维修单.frx":8362
  356.             Key             =   "pz"
  357.          EndProperty
  358.          BeginProperty ListImage32 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  359.             Picture         =   "铁运管理_维修单.frx":86FC
  360.             Key             =   "check"
  361.          EndProperty
  362.          BeginProperty ListImage33 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  363.             Picture         =   "铁运管理_维修单.frx":8A96
  364.             Key             =   "qs"
  365.          EndProperty
  366.          BeginProperty ListImage34 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  367.             Picture         =   "铁运管理_维修单.frx":8E30
  368.             Key             =   "fullcheck"
  369.          EndProperty
  370.          BeginProperty ListImage35 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  371.             Picture         =   "铁运管理_维修单.frx":91CA
  372.             Key             =   "qq"
  373.          EndProperty
  374.          BeginProperty ListImage36 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  375.             Picture         =   "铁运管理_维修单.frx":9564
  376.             Key             =   "bcw"
  377.          EndProperty
  378.          BeginProperty ListImage37 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  379.             Picture         =   "铁运管理_维修单.frx":98FE
  380.             Key             =   "ye"
  381.          EndProperty
  382.          BeginProperty ListImage38 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  383.             Picture         =   "铁运管理_维修单.frx":9C98
  384.             Key             =   "zf"
  385.          EndProperty
  386.       EndProperty
  387.    End
  388.    Begin VSFlex8Ctl.VSFlexGrid WglrGrid 
  389.       Height          =   3345
  390.       Left            =   120
  391.       TabIndex        =   6
  392.       Top             =   2280
  393.       Width           =   10680
  394.       _ExtentX        =   18838
  395.       _ExtentY        =   5900
  396.       Appearance      =   1
  397.       BorderStyle     =   1
  398.       Enabled         =   -1  'True
  399.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  400.          Name            =   "宋体"
  401.          Size            =   9
  402.          Charset         =   134
  403.          Weight          =   400
  404.          Underline       =   0   'False
  405.          Italic          =   0   'False
  406.          Strikethrough   =   0   'False
  407.       EndProperty
  408.       MousePointer    =   0
  409.       BackColor       =   16777215
  410.       ForeColor       =   -2147483640
  411.       BackColorFixed  =   12640511
  412.       ForeColorFixed  =   -2147483630
  413.       BackColorSel    =   -2147483643
  414.       ForeColorSel    =   -2147483640
  415.       BackColorBkg    =   16777215
  416.       BackColorAlternate=   16777215
  417.       GridColor       =   -2147483633
  418.       GridColorFixed  =   -2147483632
  419.       TreeColor       =   -2147483632
  420.       FloodColor      =   192
  421.       SheetBorder     =   -2147483642
  422.       FocusRect       =   1
  423.       HighLight       =   1
  424.       AllowSelection  =   0   'False
  425.       AllowBigSelection=   0   'False
  426.       AllowUserResizing=   0
  427.       SelectionMode   =   0
  428.       GridLines       =   1
  429.       GridLinesFixed  =   2
  430.       GridLineWidth   =   1
  431.       Rows            =   5000
  432.       Cols            =   10
  433.       FixedRows       =   1
  434.       FixedCols       =   0
  435.       RowHeightMin    =   0
  436.       RowHeightMax    =   0
  437.       ColWidthMin     =   0
  438.       ColWidthMax     =   0
  439.       ExtendLastCol   =   0   'False
  440.       FormatString    =   ""
  441.       ScrollTrack     =   0   'False
  442.       ScrollBars      =   3
  443.       ScrollTips      =   0   'False
  444.       MergeCells      =   0
  445.       MergeCompare    =   0
  446.       AutoResize      =   -1  'True
  447.       AutoSizeMode    =   0
  448.       AutoSearch      =   0
  449.       MultiTotals     =   -1  'True
  450.       SubtotalPosition=   1
  451.       OutlineBar      =   0
  452.       OutlineCol      =   0
  453.       Ellipsis        =   0
  454.       ExplorerBar     =   0
  455.       PicturesOver    =   0   'False
  456.       FillStyle       =   0
  457.       RightToLeft     =   0   'False
  458.       PictureType     =   0
  459.       TabBehavior     =   0
  460.       OwnerDraw       =   0
  461.       Editable        =   0   'False
  462.       ShowComboButton =   -1  'True
  463.       WordWrap        =   -1  'True
  464.       TextStyle       =   0
  465.       TextStyleFixed  =   0
  466.       OleDragMode     =   0
  467.       OleDropMode     =   0
  468.       DataMode        =   0
  469.       VirtualData     =   -1  'True
  470.       Begin VSFlex8Ctl.VSFlexGrid HjGrid 
  471.          Height          =   885
  472.          Left            =   0
  473.          TabIndex        =   7
  474.          Top             =   2400
  475.          Width           =   7545
  476.          _ExtentX        =   13309
  477.          _ExtentY        =   1561
  478.          Appearance      =   1
  479.          BorderStyle     =   0
  480.          Enabled         =   -1  'True
  481.          BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  482.             Name            =   "宋体"
  483.             Size            =   9
  484.             Charset         =   134
  485.             Weight          =   400
  486.             Underline       =   0   'False
  487.             Italic          =   0   'False
  488.             Strikethrough   =   0   'False
  489.          EndProperty
  490.          MousePointer    =   0
  491.          BackColor       =   14671839
  492.          ForeColor       =   -2147483640
  493.          BackColorFixed  =   -2147483633
  494.          ForeColorFixed  =   -2147483630
  495.          BackColorSel    =   -2147483643
  496.          ForeColorSel    =   -2147483640
  497.          BackColorBkg    =   16777215
  498.          BackColorAlternate=   14671839
  499.          GridColor       =   -2147483633
  500.          GridColorFixed  =   -2147483632
  501.          TreeColor       =   -2147483632
  502.          FloodColor      =   192
  503.          SheetBorder     =   -2147483642
  504.          FocusRect       =   1
  505.          HighLight       =   1
  506.          AllowSelection  =   0   'False
  507.          AllowBigSelection=   0   'False
  508.          AllowUserResizing=   0
  509.          SelectionMode   =   0
  510.          GridLines       =   1
  511.          GridLinesFixed  =   2
  512.          GridLineWidth   =   1
  513.          Rows            =   5000
  514.          Cols            =   10
  515.          FixedRows       =   1
  516.          FixedCols       =   0
  517.          RowHeightMin    =   0
  518.          RowHeightMax    =   0
  519.          ColWidthMin     =   0
  520.          ColWidthMax     =   0
  521.          ExtendLastCol   =   0   'False
  522.          FormatString    =   ""
  523.          ScrollTrack     =   0   'False
  524.          ScrollBars      =   3
  525.          ScrollTips      =   0   'False
  526.          MergeCells      =   0
  527.          MergeCompare    =   0
  528.          AutoResize      =   -1  'True
  529.          AutoSizeMode    =   0
  530.          AutoSearch      =   0
  531.          MultiTotals     =   -1  'True
  532.          SubtotalPosition=   1
  533.          OutlineBar      =   0
  534.          OutlineCol      =   0
  535.          Ellipsis        =   0
  536.          ExplorerBar     =   0
  537.          PicturesOver    =   0   'False
  538.          FillStyle       =   0
  539.          RightToLeft     =   0   'False
  540.          PictureType     =   0
  541.          TabBehavior     =   0
  542.          OwnerDraw       =   0
  543.          Editable        =   0   'False
  544.          ShowComboButton =   -1  'True
  545.          WordWrap        =   -1  'True
  546.          TextStyle       =   0
  547.          TextStyleFixed  =   0
  548.          OleDragMode     =   0
  549.          OleDropMode     =   0
  550.          DataMode        =   0
  551.          VirtualData     =   -1  'True
  552.       End
  553.    End
  554.    Begin VB.Label Lab_Title 
  555.       AutoSize        =   -1  'True
  556.       BackColor       =   &H80000018&
  557.       BackStyle       =   0  'Transparent
  558.       Caption         =   "单据标题自动调整"
  559.       BeginProperty Font 
  560.          Name            =   "宋体"
  561.          Size            =   15
  562.          Charset         =   134
  563.          Weight          =   700
  564.          Underline       =   0   'False
  565.          Italic          =   0   'False
  566.          Strikethrough   =   0   'False
  567.       EndProperty
  568.       ForeColor       =   &H00000000&
  569.       Height          =   300
  570.       Left            =   4440
  571.       TabIndex        =   14
  572.       Top             =   840
  573.       Width           =   2520
  574.    End
  575.    Begin VB.Label Lab_BillId 
  576.       AutoSize        =   -1  'True
  577.       BackColor       =   &H0080C0FF&
  578.       Height          =   270
  579.       Left            =   7680
  580.       TabIndex        =   13
  581.       Top             =   600
  582.       Visible         =   0   'False
  583.       Width           =   2490
  584.    End
  585.    Begin VB.Label Lab_Djclzt 
  586.       BackColor       =   &H0000FFFF&
  587.       Caption         =   "1"
  588.       ForeColor       =   &H00808080&
  589.       Height          =   255
  590.       Left            =   10320
  591.       TabIndex        =   12
  592.       Top             =   600
  593.       Visible         =   0   'False
  594.       Width           =   285
  595.    End
  596.    Begin VB.Label Lab_OperStatus 
  597.       BackColor       =   &H000080FF&
  598.       Caption         =   "1"
  599.       Height          =   345
  600.       Left            =   10290
  601.       TabIndex        =   11
  602.       Top             =   960
  603.       Visible         =   0   'False
  604.       Width           =   345
  605.    End
  606.    Begin VB.Label Lab_Bill 
  607.       Appearance      =   0  'Flat
  608.       BackColor       =   &H80000005&
  609.       BackStyle       =   0  'Transparent
  610.       ForeColor       =   &H00000000&
  611.       Height          =   225
  612.       Left            =   9030
  613.       TabIndex        =   10
  614.       Top             =   6330
  615.       Width           =   735
  616.    End
  617.    Begin VB.Label Lab_Checker 
  618.       Appearance      =   0  'Flat
  619.       BackColor       =   &H80000005&
  620.       BackStyle       =   0  'Transparent
  621.       ForeColor       =   &H00000000&
  622.       Height          =   225
  623.       Left            =   7170
  624.       TabIndex        =   9
  625.       Top             =   6360
  626.       Width           =   735
  627.    End
  628.    Begin VB.Label TsLabel 
  629.       Alignment       =   1  'Right Justify
  630.       AutoSize        =   -1  'True
  631.       BackStyle       =   0  'Transparent
  632.       Caption         =   "单据号:"
  633.       Height          =   180
  634.       Index           =   0
  635.       Left            =   240
  636.       TabIndex        =   8
  637.       Top             =   1560
  638.       Width           =   765
  639.    End
  640. End
  641. Attribute VB_Name = "Tr_Mend"
  642. Attribute VB_GlobalNameSpace = False
  643. Attribute VB_Creatable = False
  644. Attribute VB_PredeclaredId = True
  645. Attribute VB_Exposed = False
  646. '***********************************************************************************************************
  647. '*    模 块 名 称 :维修单处理
  648. '*    功 能 描 述 :此功能模块主要完成录入、修改、删除、预览打印等。
  649. '*    程序员姓名  :徐强
  650. '*    最后修改人  :徐强
  651. '*    最后修改时间:
  652. '*    备        注:程序中所有依实际情况自定义部分均用[>>  <<]括起
  653. '***********************************************************************************************************
  654.  
  655. '[以下为根据实际情况设置变量
  656. Dim Bln_BillChange As Boolean                   '标识单据是否发生改动
  657. Dim Rec_Query As New ADODB.Recordset            '单据组查询结果动态集(保存当前单据组ID)
  658. Public Str_QueryCondi As String                 '单据组查询条件(接收单据列表传递查询条件)
  659. Dim Str_RightEdit As String                     '单据编辑(新增、修改、删除)权限索引
  660. Dim Str_RightCheck As String                    '单据审核(审核、弃审)权限索引
  661. ']
  662. '以下为固定使用变量(单据)
  663. Dim BillCode As String                          '单据设计编码(索引号)
  664. Dim Var_Bill() As Variant                       '用来返回单据设计信息
  665. Dim ReportTitle As String                       '报表主标题
  666. Dim Tsxx As String                              '系统提示信息
  667. '以下为固定使用变量(网格)
  668. Dim Cxnrrec As New ADODB.Recordset              '显示查询内容动态集
  669. Dim Dyymctbl As New DY_Dyymsz                   '打印页面窗体变量
  670. Dim GridCode As String                          '显示网格网格代码
  671. Dim GridInf() As Variant                        '整个网格设置信息
  672. Dim Pmbcsjhs As Long                            '屏幕网格保持数据行数(大于等于1)
  673. Dim Fzxwghs As Integer                          '辅助项网格行数(包括合计行)
  674. Dim Sfxshjwg As Boolean                         '是否显示合计网格
  675. Dim Qslz As Long                                '网格隐藏(非操作显示)列数
  676. Dim Sjhgd As Double                             '网格数据行高度
  677. Dim GridBoolean() As Boolean                    '网格列信息(布尔型)
  678. Dim GridStr()  As String                        '网格列信息(字符型)
  679. Dim GridInt() As Integer                        '网格列信息(整型)
  680. Dim Sfblbzkd As Boolean                         '是否保留帮助宽度(字段提供帮助时,是否为按钮保留空间)
  681. Dim Dqlrwgh As Long                             '当前录入数据网格行
  682. Dim Dqlrwgl As Long                             '当前录入数据网格列
  683. Dim Dqlkwgh As Long                             '刚刚离开网格行(不一定为录入行)
  684. Dim Dqlkwgl As Long                             '刚刚离开网格列
  685. Dim Dqtoprow As Long                            '当前录入状态时最上端可视行
  686. Dim Dqleftcol As Long                           '当前录入状态时最左端可视列
  687. Dim Zdlrqnr As String                           '字段录入修改前内容(用来判断内容是否修改)
  688. Dim Wbkbhlock As Boolean                        '文本框改变值锁
  689. Dim Changelock As Boolean                       '网格行列改变控制锁(用来区别用户改变.程序改变)
  690. Dim Gdtlock As Boolean                          '滚动条滚动控制(用来区别用户改变.程序改变)
  691. Dim Yxxpdlock As Boolean                        '字段有效性判断锁(内容不修改不需进行字段有效性判断)
  692. Dim Hyxxpdlock As Boolean                       '行有效性判断锁(字段内容不修改不需进行行有效性判断)
  693. Dim Valilock As Boolean                         '文本框失去焦点是否进行有效性控制(TRUE 为锁定*限用网格录入)
  694. Dim Shsfts As Boolean                           '删除记录行是否提示
  695. Dim szzls As Integer                            '网格信息数组最大下标值(网格列数-1)
  696. '以下为固定使用变量(文本框)
  697. Dim Textvar() As Variant                        '存储变体型文本框信息
  698. Dim Textboolean() As Boolean                    '存储布尔型文本框信息
  699. Dim Textint() As Integer                        '存储整型文本框信息
  700. Dim Textstr() As String                         '存储字符型文本框信息
  701. Dim Max_Text_Index As Integer                   '最大录入文本框索引值
  702. Dim TextGroupCode As String                     '文本框录入分组编码
  703. Dim TextValiLock As Boolean                     '文本框失去焦点是否进行有效性控制判断
  704. Dim TextValiJudgeLock() As Boolean              '文本框录入有效性判断控制锁
  705. Dim TextChangeLock As Boolean                   '文本框内容变换控制锁
  706.     
  707. Private Sub Form_KeyPress(KeyAscii As Integer)      '控 制 焦 点 转 移
  708.     
  709.     Dim jdzygs As Integer
  710.     jdzygs = 4                                       '在单据录入中,此焦点转移控制值一定小于等于文本框个数,否则网格回车键将不支持.
  711.     Select Case KeyAscii
  712.     Case vbKeyReturn
  713.         If Kjjdzy(jdzygs) Then
  714.             KeyAscii = 0
  715.         End If
  716.     Case 39           '屏蔽字符"'"
  717.         KeyAscii = 0
  718.     End Select
  719.     
  720. End Sub
  721. Private Sub Form_Load()                                                        '窗 体 装 入
  722.     
  723.     '初始化各种锁值(Fixed)
  724.     Changelock = False             '网格行列改变控制锁
  725.     Gdtlock = False                '滚动条滚动控制
  726.     Yxxpdlock = True               '字段有效性判断锁
  727.     Hyxxpdlock = True              '行有效性判断锁
  728.     Wbkbhlock = False              '文本框内容改变锁
  729.     
  730.     '单据权限索引设置
  731.     Str_RightEdit = "tr_mend_edit"
  732.     Str_RightCheck = "tr_mend_check"
  733.         
  734.     '调入单据信息(需要修改BillCode)
  735.     BillCode = "1604"
  736.     Call Sub_ReadBillInfo(BillCode, Me, Var_Bill())
  737.     Lab_Title = Var_Bill(2)
  738.     Lab_Title.Move (Me.Width - Lab_Title.Width) / 2, 800
  739.     
  740.     '报表编码
  741.     XtReportCode = Var_Bill(5)
  742.     Load Dyymctbl
  743.     
  744.     '以下为文本框处理程序(Fixed)
  745.     TextGroupCode = Var_Bill(3)
  746.     
  747.     Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
  748.     Call Wbkcsh
  749.     
  750.     '调入网格并记录一些网格信息(Fixed)
  751.     GridCode = Var_Bill(4)         '网格属性编码
  752.     Call BzWgcsh(WglrGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  753.     
  754.     Qslz = GridInf(1)
  755.     Sjhgd = GridInf(2)
  756.     Fzxwghs = GridInf(4)
  757.     Sfblbzkd = GridInf(5)
  758.     Shsfts = GridInf(6)
  759.     Sfxshjwg = GridInf(7)
  760.     szzls = WglrGrid.Cols - 1
  761.     Pmbcsjhs = Int((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) / Sjhgd) - Fzxwghs - 1
  762.     
  763.     For jsqte = WglrGrid.FixedRows To WglrGrid.Rows - 1
  764.         WglrGrid.RowHeight(jsqte) = Sjhgd
  765.     Next jsqte
  766.     
  767.     '初始化合计网格(Fixed)
  768.     Call Cshhjwg
  769.     
  770.     '单据变动置为False(Fixed)
  771.     Bln_BillChange = False
  772.     
  773.     '调入数据初始化模块(Fixed)
  774.     Lab_Djclzt.Caption = Xtcdcs
  775.     Call Sjcsh(Trim(Lab_Djclzt.Caption))
  776.     
  777. End Sub
  778. Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
  779.         
  780.     '是否保存已修改单据
  781.     Dim YAnswer As Integer
  782.     If Lab_OperStatus.Caption = "2" Or Lab_OperStatus.Caption = "3" Then
  783.         Tsxx = "单据尚未保存,是否退出?"
  784.         YAnswer = Xtxxts(Tsxx, 2, 2)
  785.         If YAnswer <> 1 Then
  786.             Cancel = 1
  787.             Exit Sub
  788.         End If
  789.     End If
  790.         
  791.     '卸载打印页面窗体
  792.     Unload Dyymctbl
  793.     
  794.     '判断单据是否发生变化,并返回相应标识
  795.     If Bln_BillChange Then
  796.         Xtfhcs = "1"
  797.     Else
  798.         Xtfhcs = "0"
  799.     End If
  800.     
  801. End Sub
  802. Private Sub Sjcsh(Str_Pzclzt As String)              '数据初始化模块(根据实际情况)
  803.     
  804.     Dim Sqlstr As String       '查询单据列表条件
  805.     
  806.     '[>>根据实际情况初始化
  807.     Select Case Str_Pzclzt
  808.     Case "1"   '填制单据
  809.         '调入用户查询结果动态集(默认显示用户当前操作业务日期的单据)
  810.         Sqlstr = "SELECT MendMainId From Tr_MendMain Where MendDate='" & Xtrq & "' ORDER BY MendMainId "
  811.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  812.         
  813.         '新增单据
  814.         Call Sub_AddBill
  815.     Case "2"   '查询单据(单据列表)
  816.         
  817.         '填充查询单据标识
  818.         Lab_BillId.Caption = XT_BillID
  819.         Str_QueryCondi = Xtcdcsfz
  820.         
  821.         Call Sub_ShowBill
  822.         Call Sub_OperStatus("10")
  823.         
  824.         '调入用户查询结果动态集
  825.         Sqlstr = "SELECT DISTINCT MendMainId From Tr_V_Mend_list " & Str_QueryCondi & " ORDER BY MendMainId"
  826.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  827.         Rec_Query.find "MendMainId=" & Val(Lab_BillId.Caption)
  828.     Case "3"   '明细帐联查单据
  829.         '设置工具条显示
  830.         With Tlb_Action
  831.             .Buttons("xz").Enabled = False             '新增
  832.             .Buttons("xg").Enabled = False             '修改
  833.             .Buttons("sc").Enabled = False             '删除
  834.             .Buttons("fgh0").Enabled = False           '分隔行
  835.             .Buttons("zh").Enabled = False             '增行
  836.             .Buttons("sh").Enabled = False             '删行
  837.             .Buttons("fgh1").Enabled = False           '分隔行
  838.             .Buttons("bc").Enabled = False             '保存
  839.             .Buttons("fq").Enabled = False             '放弃
  840.             .Buttons("shsh").Enabled = False           '审核
  841.             .Buttons("shqs").Enabled = False           '弃审
  842.             .Buttons("Revoke").Enabled = False         '作废
  843.             .Buttons("fgh2").Enabled = False           '分隔行
  844.             .Buttons("first").Enabled = False          '首张
  845.             .Buttons("prev").Enabled = False           '上张
  846.             .Buttons("next").Enabled = False           '下张
  847.             .Buttons("last").Enabled = False           '末张
  848.             .Buttons("fgh5").Enabled = False           '分割行
  849.         End With
  850.         
  851.         Call Sub_ShowBill
  852.         
  853.         '设置操作状态为浏览
  854.         Lab_OperStatus.Caption = "1"
  855.         
  856.         '录入文本框
  857.         For jsqte = Max_Text_Index To 0 Step -1
  858.             LrText(jsqte).Enabled = False
  859.         Next jsqte
  860.     End Select
  861.     
  862.     '<<]
  863.     
  864. End Sub
  865. Private Sub Sub_ShowBill()                                          '根据当前单据ID显示整张单据内容
  866.     
  867.     '过程默认参数为当前窗体中单据ID:Lab_BillID
  868.     Dim Sqlstr As String                           '临时使用字符串
  869.     Dim RecTemp As New ADODB.Recordset             '临时使用动态集
  870.     Dim jsqte As Long                             '临时计数器
  871.     
  872.     '禁止网格刷新动作,为加快网格显示速度(Fixed)
  873.     WglrGrid.Redraw = False
  874.     
  875.     '本张单据查询字符串
  876.     Sqlstr = "SELECT * from Tr_v_Mend_list Where MendMainId='" & Val(Lab_BillId.Caption) & "'"
  877.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  878.     
  879.     With RecTemp
  880.         WglrGrid.Rows = WglrGrid.FixedRows
  881.         If .EOF Then
  882.             WglrGrid.Redraw = True
  883.             Exit Sub
  884.         Else
  885.             '[>>显示单据头
  886.             TextChangeLock = True     '文本框加锁
  887.             LrText(0).Text = Format(.Fields("Menddate"), "yyyy-mm-dd")    '日期
  888.             LrText(1).Text = Trim(.Fields("MendNum"))                     '维修单号
  889.             LrText(2).Text = Trim(.Fields("remark"))                      '备注
  890.             LrText(3).Text = Trim(.Fields("maker") & "")                  '制单人
  891.             LrText(4).Text = Trim(.Fields("checker") & "")                '审核人
  892.             TextChangeLock = False    '文本框解锁
  893.             '<<]
  894.         End If
  895.         jsqte = WglrGrid.FixedRows
  896.         Do While Not .EOF
  897.             WglrGrid.AddItem ""
  898.             '[>>显示单据分录
  899.             WglrGrid.TextMatrix(jsqte, 0) = "*"                                                            '数据有效行标识(必填)
  900.             WglrGrid.TextMatrix(jsqte, 1) = .Fields("MendSubId")
  901.             WglrGrid.TextMatrix(jsqte, 2) = .Fields("VoucherId")
  902.             WglrGrid.TextMatrix(jsqte, Sydz("001", GridStr(), szzls)) = Trim(.Fields("vehiclenum") & "")   '车号
  903.             WglrGrid.TextMatrix(jsqte, Sydz("002", GridStr(), szzls)) = Trim(.Fields("mendtype") & "")     '维修类型
  904.             WglrGrid.TextMatrix(jsqte, Sydz("003", GridStr(), szzls)) = Trim(.Fields("mendpart") & "")     '维修部位
  905.             WglrGrid.TextMatrix(jsqte, Sydz("004", GridStr(), szzls)) = Format(.Fields("begintime") & "", "yyyy-mm-dd hh:mm")      '开始时间
  906.             WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), szzls)) = Format(.Fields("endtime") & "", "yyyy-mm-dd hh:mm")        '结束时间
  907.             WglrGrid.TextMatrix(jsqte, Sydz("006", GridStr(), szzls)) = Trim(.Fields("completecase"))      '完成情况
  908.             WglrGrid.TextMatrix(jsqte, Sydz("007", GridStr(), szzls)) = Trim(.Fields("mendunit") & "")     '维修单位
  909.             '<<]
  910.             
  911.             WglrGrid.RowHeight(jsqte) = Sjhgd
  912.             .MoveNext
  913.             jsqte = jsqte + 1
  914.         Loop
  915.     End With
  916.     
  917.     
  918.     '调整网格(Fixed)
  919.     Call Sub_AdjustGrid
  920.     
  921.     '计算合计数据(Fixed)
  922.     For jsqte = Qslz To WglrGrid.Cols - 1
  923.         Call Sjhj(jsqte)
  924.     Next jsqte
  925.     
  926.     '将网格刷新解禁(Fixed)
  927.     WglrGrid.Redraw = True
  928.     
  929.     '设置审核弃审按钮状态
  930.     Call Sub_CheckStatus
  931.     
  932. End Sub
  933. Private Sub Tlb_Action_ButtonClick(ByVal Button As MSComctlLib.Button)             '用户点击工具条
  934.     
  935.     '屏蔽文本框,下拉组合框有效性判断
  936.     Valilock = True
  937.     
  938.     '屏蔽网格失去焦点产生的有效性判断
  939.     Changelock = True
  940.     
  941.     Select Case Button.Key
  942.     Case "yl"                                            '预 览
  943.         If Fun_Drfrmyxxpd Then
  944.             BillGridPrint WglrGrid, LrText, GridStr(), szzls, GridCode, TextGroupCode, XtReportCode, False
  945.         End If
  946.     Case "dy"                                            '打 印
  947.         If Fun_Drfrmyxxpd Then
  948.             Dim yhAnswer As Integer      '打印提示
  949.             
  950.             '用户确认是否打印单据
  951.             Tsxx = "请确认是否打印当前单据?"
  952.             yhAnswer = Xtxxts(Tsxx, 2, 2)
  953.             If yhAnswer = 2 Then
  954.                 Exit Sub
  955.             End If
  956.             BillGridPrint WglrGrid, LrText, GridStr(), szzls, GridCode, TextGroupCode, XtReportCode, True
  957.         End If
  958.     Case "xz"                                            '新 增
  959.         Call Sub_AddBill
  960.     Case "xg"                                            '修 改
  961.         Call Sub_EditBill
  962.     Case "sc"                                            '删 除
  963.         Call Sub_DeleteBill
  964.     Case "zh"                                            '增 行
  965.         Call zjlrfl
  966.     Case "sh"                                            '删 行
  967.         Call Scdqfl
  968.     Case "bc"                                            '保 存
  969.         If Fun_Drfrmyxxpd Then
  970.             Call Sub_SaveBill
  971.         End If
  972.     Case "fq"                                            '放 弃
  973.         Call Sub_AbandonBill
  974.     Case "shsh"                                          '审 核
  975.         Call Sub_CheckBill
  976.     Case "shqs"                                          '弃 审
  977.         Call Sub_AbandonCheck
  978.     Case "first"                                         '首 张
  979.         Call Sub_First
  980.     Case "prev"                                          '上 张
  981.         Call Sub_Prev
  982.     Case "next"                                          '下 张
  983.         Call Sub_Next
  984.     Case "last"                                          '末 张
  985.         Call Sub_Last
  986.     Case "bz"                                            '帮 助
  987.         Call F1bz
  988.     Case "fh"                                            '退 出
  989.         Unload Me
  990.     End Select
  991.     
  992.     '解 锁
  993.     Valilock = False
  994.     Changelock = False
  995.     TextChangeLock = False
  996.     
  997. End Sub
  998. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)     '支持热键操作
  999.     
  1000.     Select Case KeyCode
  1001.     Case vbKeyF5          '增加单据
  1002.         If Tlb_Action.Buttons("xz").Enabled And Tlb_Action.Buttons("xz").Visible Then
  1003.             Call Sub_AddBill
  1004.         End If
  1005.     Case vbKeyF3          '修改单据
  1006.         If Tlb_Action.Buttons("xg").Enabled And Tlb_Action.Buttons("xg").Visible Then
  1007.             Call Sub_EditBill
  1008.         End If
  1009.     Case vbKeyF6          '保存单据
  1010.         If Tlb_Action.Buttons("bc").Enabled And Tlb_Action.Buttons("bc").Visible Then
  1011.             If Fun_Drfrmyxxpd Then Call Sub_SaveBill
  1012.         End If
  1013.     End Select
  1014.     
  1015. End Sub
  1016. Private Sub Sub_OperStatus(Str_Status As String)                 '工具条依据不同状态所进行的变化
  1017.     
  1018.     With Tlb_Action
  1019.         Select Case Str_Status
  1020.         Case "10"   '浏览((列表)调入单据处理时的进入状态、(列表)新增状态时放弃录入)
  1021.             '工具条
  1022.             .Buttons("dy").Enabled = True       '打印
  1023.             .Buttons("yl").Enabled = True       '预览
  1024.             .Buttons("xz").Enabled = True       '新增
  1025.             .Buttons("xg").Enabled = True       '修改
  1026.             .Buttons("sc").Enabled = True       '删除
  1027.             .Buttons("zh").Enabled = False      '增行
  1028.             .Buttons("sh").Enabled = False      '删行
  1029.             .Buttons("bc").Enabled = False      '保存
  1030.             .Buttons("fq").Enabled = False      '放弃
  1031.             .Buttons("first").Enabled = True    '首张
  1032.             .Buttons("prev").Enabled = True     '上张
  1033.             .Buttons("next").Enabled = True     '下张
  1034.             .Buttons("last").Enabled = True     '末张
  1035.             .Buttons("bz").Enabled = True       '帮助
  1036.             .Buttons("fh").Enabled = True       '退出
  1037.             
  1038.             '设置审核弃审按钮状态
  1039.             Call Sub_CheckStatus
  1040.             
  1041.             '设置文本框录入状态
  1042.             Call Sub_LrtextStatus(False)
  1043.         Case "20"   '新增单据((录入)新增一张单据 、(列表)新增一张单据)
  1044.             '工具条
  1045.             .Buttons("dy").Enabled = False      '打印
  1046.             .Buttons("yl").Enabled = False      '预览
  1047.             .Buttons("xz").Enabled = False      '新增
  1048.             .Buttons("xg").Enabled = False      '修改
  1049.             .Buttons("sc").Enabled = False      '删除
  1050.             .Buttons("zh").Enabled = True       '增行
  1051.             .Buttons("sh").Enabled = True       '删行
  1052.             .Buttons("bc").Enabled = True       '保存
  1053.             .Buttons("fq").Enabled = True       '放弃
  1054.             .Buttons("shsh").Enabled = False    '审核
  1055.             .Buttons("shqs").Enabled = False    '弃审
  1056.             .Buttons("Revoke").Enabled = False  '作废
  1057.             .Buttons("first").Enabled = False   '首张
  1058.             .Buttons("prev").Enabled = False    '上张
  1059.             .Buttons("next").Enabled = False    '下张
  1060.             .Buttons("last").Enabled = False    '末张
  1061.             .Buttons("bz").Enabled = True       '帮助
  1062.             .Buttons("fh").Enabled = True       '退出
  1063.             
  1064.             '设置文本框录入状态
  1065.             Call Sub_LrtextStatus(True)
  1066.         Case "30"   '修改((录入)调入修改功能、(列表)调入修改功能)
  1067.             '工具条
  1068.             .Buttons("dy").Enabled = False      '打印
  1069.             .Buttons("yl").Enabled = False      '预览
  1070.             .Buttons("xz").Enabled = False      '新增
  1071.             .Buttons("xg").Enabled = False      '修改
  1072.             .Buttons("sc").Enabled = False      '删除
  1073.             .Buttons("zh").Enabled = True       '增行
  1074.             .Buttons("sh").Enabled = True       '删行
  1075.             .Buttons("bc").Enabled = True       '保存
  1076.             .Buttons("fq").Enabled = True       '放弃
  1077.             .Buttons("shsh").Enabled = False    '审核
  1078.             .Buttons("shqs").Enabled = False    '弃审
  1079.             .Buttons("Revoke").Enabled = False  '作废
  1080.             .Buttons("first").Enabled = False   '首张
  1081.             .Buttons("prev").Enabled = False    '上张
  1082.             .Buttons("next").Enabled = False    '下张
  1083.             .Buttons("last").Enabled = False    '末张
  1084.             .Buttons("bz").Enabled = True       '帮助
  1085.             .Buttons("fh").Enabled = True       '退出
  1086.             
  1087.             '设置文本框录入状态
  1088.             Call Sub_LrtextStatus(True)
  1089.         End Select
  1090.     End With
  1091.     
  1092. End Sub
  1093. Private Sub Sub_LrtextStatus(TextEnabled As Boolean)                            '设置录入文本框状态
  1094.     
  1095.     '录入文本框状态设置
  1096.     If TextEnabled Then
  1097.         For jsqte = Max_Text_Index To 0 Step -1
  1098.             '判断文本框是否可编辑
  1099.             If Textboolean(jsqte, 5) Then
  1100.                 LrText(jsqte).Enabled = True
  1101.             Else
  1102.                 LrText(jsqte).Enabled = False
  1103.             End If
  1104.         Next jsqte
  1105.     Else
  1106.         For jsqte = Max_Text_Index To 0 Step -1
  1107.             LrText(jsqte).Enabled = False
  1108.         Next jsqte
  1109.     End If
  1110.     
  1111. End Sub
  1112. Private Sub Sub_CheckStatus()                                       '设置审核弃审按钮状态(亦可设置其他动作按钮状态)
  1113.     
  1114.     '根据当前单据状态来确定审核弃审按钮状态
  1115.     If Trim(LrText(3).Text) <> "" And Trim(LrText(4).Text) = "" Then
  1116.         Tlb_Action.Buttons("shsh").Enabled = True      '审核
  1117.     Else
  1118.         Tlb_Action.Buttons("shsh").Enabled = False   '审核
  1119.     End If
  1120.     If Trim(LrText(3).Text) <> "" And Trim(LrText(4).Text) <> "" Then
  1121.         Tlb_Action.Buttons("shqs").Enabled = True      '弃审
  1122.     Else
  1123.         Tlb_Action.Buttons("shqs").Enabled = False   '弃审
  1124.     End If
  1125. End Sub
  1126. Private Sub Wbkcl()                                                 '文本框录入之前处理(根据实际情况)
  1127.     
  1128.     Dim xswbrr As String
  1129.     With WglrGrid
  1130.         Zdlrqnr = Trim(.Text)
  1131.         xswbrr = Trim(.Text)
  1132.         If GridBoolean(.Col, 3) Then   '列表框录入
  1133.             '填充列表框程序
  1134.             Call FillCombo(YdCombo, GridStr(.Col, 5), xswbrr, 0)
  1135.         Else
  1136.             Wbkbhlock = True
  1137.             
  1138.             '====以下为用户自定义
  1139.             Ydtext.Text = xswbrr
  1140.             '====以上为用户自定义
  1141.             
  1142.             Wbkbhlock = False
  1143.             Ydtext.SelStart = Len(Ydtext.Text)
  1144.         End If
  1145.     End With
  1146.     
  1147. End Sub
  1148. Private Function sjzdyxxpd(Dqpdwgh As Long, Dqpdwgl As Long) As Boolean       '录入数据字段有效性判断,同时进行字段录入事后处理
  1149.     
  1150.     '函数参数:Dqpdwgh, Dqpdwgl 当前要判断网格单元所处行列值
  1151.     
  1152.     Dim Str_JudgeText As String                 '临时有效性判断字段内容
  1153.     Dim Coljsq As Long                          '临时列计数器
  1154.     Dim RecTemp As New ADODB.Recordset          '临时使用动态集
  1155.     Dim Sqlstr As String                        '临时使用查询字符串
  1156.     
  1157.     With WglrGrid
  1158.         '非录入状态或非数据行则其有效性为合法
  1159.         If Yxxpdlock Or .Row < .FixedRows Then
  1160.             sjzdyxxpd = True
  1161.             Exit Function
  1162.         End If
  1163.         
  1164.         '取得当前要判断字段内容
  1165.         Str_JudgeText = Trim(.TextMatrix(Dqpdwgh, Dqpdwgl))
  1166.         
  1167.         '根据不同字段进行相应的处理(依据其逻辑编号)
  1168.         Select Case GridStr(Dqpdwgl, 1)
  1169.             '[>>以下为自定义部分
  1170.         Case "001"
  1171.             If Not Trim(Str_JudgeText) = "" Then
  1172.                 Sqlstr = "select * from Tr_V_VehicleFile where IfScrap=0 and vehiclenum='" & Str_JudgeText & "' order by VehicleNum"
  1173.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1174.                 If RecTemp.EOF Then
  1175.                     Tsxx = "车辆档案中没有该车号,或该车已经停用!"
  1176.                     GoTo Lrcwcl
  1177.                 Else
  1178.                 End If
  1179.             Else
  1180.             
  1181.             End If
  1182.             If Trim(Me.WglrGrid.TextMatrix(Dqpdwgh, Sydz("001", GridStr(), szzls))) <> "" Then
  1183.                 For jsqtmp = 0 To Dqpdwgh - 1
  1184.                     If Trim(Me.WglrGrid.TextMatrix(jsqtmp, Sydz("001", GridStr(), szzls))) = Trim(Me.WglrGrid.TextMatrix(Dqpdwgh, Sydz("001", GridStr(), szzls))) Then
  1185.                         Tsxx = "车号不能重复!"
  1186.                         GoTo Lrcwcl
  1187.                     End If
  1188.                 Next
  1189.             End If
  1190.         
  1191.         Case "004"
  1192.             str_value = Trim(Me.WglrGrid.TextMatrix(Dqpdwgh, Sydz(GridStr(Dqpdwgl, 1), GridStr(), szzls)))
  1193.             If str_value <> "" Then
  1194.                 If IsDate(str_value) Then
  1195.                     If Val(str_value) <> Val(Year(Xtrq)) Then
  1196.                         Tsxx = "年度与当前会计年度不符,请重新输入"
  1197.                         GoTo Lrcwcl
  1198.                     End If
  1199.                     .TextMatrix(Dqpdwgh, Sydz("004", GridStr(), szzls)) = Format(str_value, "yyyy-mm-dd hh:mm")
  1200.                 Else
  1201.                     Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd hh:mm") + ")"
  1202.                     GoTo Lrcwcl
  1203.                 End If
  1204.             End If
  1205.                 
  1206.     
  1207.             
  1208.         Case "005"
  1209.             str_value = Trim(Me.WglrGrid.TextMatrix(Dqpdwgh, Sydz(GridStr(Dqpdwgl, 1), GridStr(), szzls)))
  1210.             If str_value <> "" Then
  1211.             
  1212.                 If IsDate(str_value) Then
  1213.                     If Val(str_value) <> Val(Year(Xtrq)) Then
  1214.                         Tsxx = "年度与当前会计年度不符,请重新输入"
  1215.                         GoTo Lrcwcl
  1216.                     End If
  1217.                     .TextMatrix(Dqpdwgh, Sydz("005", GridStr(), szzls)) = Format(str_value, "yyyy-mm-dd hh:mm")
  1218.                 Else
  1219.                     Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd hh:mm") + ")"
  1220.                     GoTo Lrcwcl
  1221.                 End If
  1222.             End If
  1223.         End Select
  1224.         
  1225.         '字段录入正确后为零字段清空(Fixed)
  1226.         Call Qkwlzd(Dqpdwgh, Dqpdwgl)
  1227.         
  1228.         '字段录入正确后进行数据合计(Fixed)
  1229.         For Coljsq = Qslz To .Cols - 1
  1230.             Call Sjhj(Coljsq)
  1231.         Next Coljsq
  1232.         
  1233.         '字段有效性判断通过,将字段有效性判断加锁直至再次改变(Fixed)
  1234.         sjzdyxxpd = True
  1235.         Yxxpdlock = True
  1236.         Exit Function
  1237.     End With
  1238.     
  1239. Lrcwcl:    '录入错误处理
  1240.     With WglrGrid
  1241.         
  1242.         '给出错误提示信息
  1243.         Call Xtxxts(Tsxx, 0, 1)
  1244.         
  1245.         '返回网格错误位置(ChangeLock避免再次引发RowColChange有效性判断),装入录入载体
  1246.         Changelock = True
  1247.         .Select Dqpdwgh, Dqpdwgl
  1248.         Changelock = False
  1249.         Call xswbk
  1250.         
  1251.         '函数返回False
  1252.         sjzdyxxpd = False
  1253.         Exit Function
  1254.     End With
  1255.     
  1256. End Function
  1257. Private Sub Sub_JoinCount(Lng_CountRow As Long, Lng_CountCol As Long)       '当网格列值发生改变时,处理网格列之间的关联计算(可选)
  1258.     
  1259.     '过程参数:Lng_CountRow,Lng_CountCol 网格改变内容所处行列值
  1260.     
  1261.     With WglrGrid
  1262.         Select Case GridStr(Lng_CountCol, 1)         '判断网格列对应逻辑编号
  1263.             '[>>以下为自定义部分
  1264.         
  1265.             '<<以上为自定义部分]
  1266.         End Select
  1267.     End With
  1268.     
  1269. End Sub
  1270. Private Function Sjhzyxxpd(ByVal Yxxpdh As Long) As Boolean                     '录入数据行有效性判断,同时进行行处理
  1271.     
  1272.     '函数参数:Yxxpdh 要进行有效性判断的网格数据行的行值
  1273.     
  1274.     Dim Lrywlz As Long                            '录入有误网格列值
  1275.     Dim RecTemp As New ADODB.Recordset            '临时使用动态集
  1276.     
  1277.     With WglrGrid
  1278.         If .Rows <= .FixedRows Then Exit Function   ' 如果没有记录,则退出
  1279.         '判断行为空(行中所有可编辑列数据均为空或为零)和无效数据行则清除当前行
  1280.         If .TextMatrix(Yxxpdh, 0) <> "*" Then
  1281.             Sjhzyxxpd = True
  1282.             Exit Function
  1283.         Else
  1284.             If pdhwk(Yxxpdh) And Yxxpdh + 1 <= .Rows - 1 Then
  1285.                 '当要判断行处于网格末行时才允许删行,否则要进行有效性判断
  1286.                 If .TextMatrix(Yxxpdh + 1, 0) <> "*" Then
  1287.                     Changelock = True
  1288.                     .RemoveItem Yxxpdh
  1289.                     If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1290.                         .AddItem ""
  1291.                         .RowHeight(.Rows - 1) = Sjhgd
  1292.                     End If
  1293.                     Changelock = False
  1294.                     Sjhzyxxpd = True
  1295.                     Exit Function
  1296.                 End If
  1297.             End If
  1298.         End If
  1299.         
  1300.         '行没有发生变化则不进行有效性判断
  1301.         
  1302.         '[>>以下为自定义部分
  1303.         
  1304.         '1.放置行有效性判断程序
  1305.         
  1306.         '1.1首先进行单个不能为空或不能为零判断(Fixed)
  1307.         For jsqte = Qslz To .Cols - 1
  1308.             
  1309.             '字段不能为空
  1310.             If GridInt(jsqte, 5) = 1 Then
  1311.                 If Len(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0 Then
  1312.                     Tsxx = GridStr(jsqte, 2)
  1313.                     Lrywlz = jsqte
  1314.                     GoTo Lrcwcl
  1315.                     Exit For
  1316.                 End If
  1317.             End If
  1318.             
  1319.             '字段不能为零
  1320.             If GridInt(jsqte, 5) = 2 Then
  1321.                 If Val(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0 Then
  1322.                     Tsxx = GridStr(jsqte, 2)
  1323.                     Lrywlz = jsqte
  1324.                     GoTo Lrcwcl
  1325.                     Exit For
  1326.                 End If
  1327.             End If
  1328.         Next jsqte
  1329.         
  1330.         '1.2进行其他有效性判断,编写格式同1.1
  1331.         
  1332.         '2.放置行处理程序(当数据行通过有效性判断)
  1333.             For jsqte = Qslz To .Cols - 1
  1334.                If (GridInt(jsqte, 5) = 1 And Len(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0) Or (GridInt(jsqte, 5) = 2 And Val(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0) Then
  1335.                   Tsxx = GridStr(jsqte, 2)
  1336.                   Lrywlz = jsqte
  1337.                   GoTo Lrcwcl
  1338.                   Exit For
  1339.                End If
  1340.            Next jsqte
  1341.        
  1342.     Dim Sqlstr As String
  1343.     Dim str_TempSql As String
  1344.     Dim arrVar_TableCon()
  1345.     Dim arrVar_TableCon1()
  1346.     Dim arr_Var_TableCon2()
  1347.     Dim rs_Tmp As New ADODB.Recordset
  1348.     Dim Findrec As New ADODB.Recordset
  1349.     
  1350.     Dim str_VehicleNum As String
  1351.     Dim str_BeginTime As String
  1352.     Dim str_EndTime As String
  1353.     Dim str_VoucherId As String
  1354.     
  1355.     Dqpdwgh = Yxxpdh
  1356. On Error GoTo Lrcwcl
  1357.     
  1358.     
  1359.     Lrywlz = Sydz("005", GridStr(), szzls)
  1360.     str_VehicleNum = Trim(.TextMatrix(Dqpdwgh, Sydz("001", GridStr(), szzls)))
  1361.     str_BeginTime = Trim(.TextMatrix(Dqpdwgh, Sydz("004", GridStr(), szzls)))
  1362.     str_EndTime = Trim(.TextMatrix(Dqpdwgh, Sydz("005", GridStr(), szzls)))
  1363.     str_VoucherId = Trim(.TextMatrix(Dqpdwgh, 2))
  1364.     
  1365.     If str_BeginTime >= str_EndTime And str_EndTime <> "" Then
  1366.         Tsxx = "实际结束时间应大于实际开始时间!"
  1367.         Lrywlz = Sydz("005", GridStr(), szzls)
  1368.         GoTo Lrcwcl
  1369.         Exit Function
  1370.     End If
  1371.     
  1372.     If Lab_OperStatus = 2 Then '增加
  1373.         str_tmp = "select * from tr_nowaccount where vehiclenum='" & str_VehicleNum & "'and limitmark=0 order by begintime      "
  1374.         Set rs_Tmp = Nothing
  1375.         Set rs_Tmp = Cw_DataEnvi.DataConnect.Execute(str_tmp)
  1376.         If Not rs_Tmp.RecordCount = 0 Then
  1377.             ReDim arrVar_TableCon(rs_Tmp.RecordCount - 1, 2)
  1378.         End If
  1379.         k = 0
  1380.         Do While Not rs_Tmp.EOF()
  1381.             arrVar_TableCon(k, 0) = Trim(rs_Tmp.Fields("nowstatus"))
  1382.             arrVar_TableCon(k, 1) = Format(Trim(rs_Tmp.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1383.             arrVar_TableCon(k, 2) = Format(Trim(rs_Tmp.Fields("endtime")), "yyyy-mm-dd hh:mm")
  1384.             rs_Tmp.MoveNext
  1385.             k = k + 1
  1386.         Loop
  1387.         If Not rs_Tmp.RecordCount = 0 Then
  1388.             If str_BeginTime < arrVar_TableCon(UBound(arrVar_TableCon, 1), 2) Then
  1389.                 If Trim(str_EndTime) = "" Then
  1390.                     Tsxx = "实际结束时间不能为空"
  1391.                     GoTo Lrcwcl
  1392.                     Exit Function
  1393.                 End If
  1394.             End If
  1395.             i = UBound(arrVar_TableCon, 1)
  1396.             If str_BeginTime >= arrVar_TableCon(i, 1) Then
  1397.                 Tsxx = "此车号正处于" & arrVar_TableCon(i, 0) & "状态,不能进行其他处理!"
  1398.                 GoTo Lrcwcl
  1399.                 Exit Function
  1400.             End If
  1401.             If str_EndTime <> "" Then
  1402.                 If str_EndTime >= arrVar_TableCon(i, 1) Then
  1403.                     Tsxx = "此车号正处于" & arrVar_TableCon(i, 0) & "状态,不能进行其他处理!"
  1404.                     GoTo Lrcwcl
  1405.                     Exit Function
  1406.                 End If
  1407.             End If
  1408.         End If
  1409.         
  1410.         str_tmp = "select * from tr_nowaccount where vehiclenum='" & str_VehicleNum & "'and limitmark=1 order by begintime      "
  1411.         Set rs_Tmp = Nothing
  1412.         Set rs_Tmp = Cw_DataEnvi.DataConnect.Execute(str_tmp)
  1413.         If Not rs_Tmp.RecordCount = 0 Then
  1414.             ReDim arrVar_TableCon2(rs_Tmp.RecordCount - 1, 2)
  1415.         End If
  1416.         k = 0
  1417.         Do While Not rs_Tmp.EOF()
  1418.             arrVar_TableCon2(k, 0) = Trim(rs_Tmp.Fields("nowstatus"))
  1419.             arrVar_TableCon2(k, 1) = Format(Trim(rs_Tmp.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1420.             arrVar_TableCon2(k, 2) = Format(Trim(rs_Tmp.Fields("endtime")), "yyyy-mm-dd hh:mm")
  1421.             
  1422.             rs_Tmp.MoveNext
  1423.             k = k + 1
  1424.         Loop
  1425.         If Not rs_Tmp.RecordCount = 0 Then
  1426.             If str_BeginTime < arrVar_TableCon2(UBound(arrVar_TableCon2, 1), 2) Then
  1427.                 If Trim(str_EndTime) = "" Then
  1428.                     Tsxx = "实际结束时间不能为空"
  1429.                     GoTo Lrcwcl
  1430.                     Exit Function
  1431.                 End If
  1432.             End If
  1433.             For i = LBound(arrVar_TableCon2, 1) To UBound(arrVar_TableCon2, 1)
  1434.                 If str_BeginTime >= arrVar_TableCon2(i, 1) And str_BeginTime <= arrVar_TableCon2(i, 2) Then
  1435.                     Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1436.                     GoTo Lrcwcl
  1437.                     Exit Function
  1438.                 End If
  1439.                 If str_EndTime >= arrVar_TableCon2(i, 1) And str_EndTime <= arrVar_TableCon2(i, 2) Then
  1440.                     Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1441.                     GoTo Lrcwcl
  1442.                     Exit Function
  1443.                 End If
  1444.                 If str_BeginTime <= arrVar_TableCon2(i, 1) And str_EndTime >= arrVar_TableCon2(i, 2) Then
  1445.                         Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1446.                         GoTo Lrcwcl
  1447.                         Exit Function
  1448.                 End If
  1449.             Next i
  1450.         End If
  1451.     Else  '修改
  1452.         str_tmp = "select * from tr_nowaccount where vehiclenum='" & str_VehicleNum & "'and limitmark=0 order by begintime      "
  1453.         Set rs_Tmp = Nothing
  1454.         Set rs_Tmp = Cw_DataEnvi.DataConnect.Execute(str_tmp)
  1455.         If Not rs_Tmp.RecordCount = 0 Then
  1456.           ReDim arrVar_TableCon(rs_Tmp.RecordCount - 1, 3)
  1457.         End If
  1458.         k = 0
  1459.         Do While Not rs_Tmp.EOF()
  1460.           arrVar_TableCon(k, 0) = Trim(rs_Tmp.Fields("nowstatus"))
  1461.           arrVar_TableCon(k, 1) = Format(Trim(rs_Tmp.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1462.           arrVar_TableCon(k, 2) = Format(Trim(rs_Tmp.Fields("endtime")), "yyyy-mm-dd hh:mm")
  1463.           arrVar_TableCon(k, 3) = rs_Tmp.Fields("VoucherId")
  1464.           rs_Tmp.MoveNext
  1465.           k = k + 1
  1466.         Loop
  1467.         If Not rs_Tmp.RecordCount = 0 Then
  1468.             If str_BeginTime < arrVar_TableCon(UBound(arrVar_TableCon, 1), 2) And Trim(arrVar_TableCon(i, 3)) <> str_VoucherId Then
  1469.                 If Trim(str_EndTime) = "" Then
  1470.                     Tsxx = "实际结束时间不能为空"
  1471.                     GoTo Lrcwcl
  1472.                     Exit Function
  1473.                 End If
  1474.             End If
  1475.             i = UBound(arrVar_TableCon, 1)
  1476.             If str_BeginTime >= arrVar_TableCon(i, 1) And Trim(arrVar_TableCon(i, 3)) <> str_VoucherId Then
  1477.                 Tsxx = "此车号正处于" & arrVar_TableCon(i, 0) & "状态,请重新输入时间!"
  1478.                 GoTo Lrcwcl
  1479.                 Exit Function
  1480.             End If
  1481.             If str_EndTime <> "" Then
  1482.                 If str_EndTime >= arrVar_TableCon(i, 1) And Trim(arrVar_TableCon(i, 3)) <> str_VoucherId Then
  1483.                     Tsxx = "此车号正处于" & arrVar_TableCon(i, 0) & "状态,请重新输入时间!"
  1484.                     GoTo Lrcwcl
  1485.                     Exit Function
  1486.                 End If
  1487.             End If
  1488.         End If
  1489.         
  1490.         str_tmp = "select * from tr_nowaccount where vehiclenum='" & str_VehicleNum & "'and limitmark=1 order by begintime      "
  1491.         Set rs_Tmp = Nothing
  1492.         Set rs_Tmp = Cw_DataEnvi.DataConnect.Execute(str_tmp)
  1493.         If Not rs_Tmp.RecordCount = 0 Then
  1494.           ReDim arrVar_TableCon2(rs_Tmp.RecordCount - 1, 3)
  1495.         End If
  1496.         k = 0
  1497.         Do While Not rs_Tmp.EOF()
  1498.           arrVar_TableCon2(k, 0) = Trim(rs_Tmp.Fields("nowstatus"))
  1499.           arrVar_TableCon2(k, 1) = Format(Trim(rs_Tmp.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1500.           arrVar_TableCon2(k, 2) = Format(Trim(rs_Tmp.Fields("endtime")), "yyyy-mm-dd hh:mm")
  1501.           arrVar_TableCon2(k, 3) = rs_Tmp.Fields("VoucherId")
  1502.           rs_Tmp.MoveNext
  1503.           k = k + 1
  1504.         Loop
  1505.         If Not rs_Tmp.RecordCount = 0 Then
  1506.             If str_BeginTime < arrVar_TableCon2(UBound(arrVar_TableCon2, 1), 2) Then
  1507.                 If Trim(str_EndTime) = "" Then
  1508.                     Tsxx = "实际结束时间不能为空"
  1509.                     GoTo Lrcwcl
  1510.                     Exit Function
  1511.                 End If
  1512.             End If
  1513.             For i = LBound(arrVar_TableCon2, 1) To UBound(arrVar_TableCon2, 1)
  1514.                 If str_BeginTime >= arrVar_TableCon2(i, 1) And str_BeginTime <= arrVar_TableCon2(i, 2) And Trim(arrVar_TableCon2(i, 3)) <> str_VoucherId Then
  1515.                     Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1516.                     GoTo Lrcwcl
  1517.                     Exit Function
  1518.                 End If
  1519.                 If str_EndTime >= arrVar_TableCon2(i, 1) And str_EndTime <= arrVar_TableCon2(i, 2) And Trim(arrVar_TableCon2(i, 3)) <> str_VoucherId Then
  1520.                     Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1521.                     GoTo Lrcwcl
  1522.                     Exit Function
  1523.                 End If
  1524.                 If str_BeginTime <= arrVar_TableCon2(i, 1) And str_EndTime >= arrVar_TableCon2(i, 2) And Trim(arrVar_TableCon2(i, 3)) <> str_VoucherId Then
  1525.                     Tsxx = "此车号在" & arrVar_TableCon2(i, 1) & "至" & arrVar_TableCon2(i, 2) & ",处于" & arrVar_TableCon2(i, 0) & "状态,请重新输入时间!"
  1526.                     GoTo Lrcwcl
  1527.                     Exit Function
  1528.                 End If
  1529.             Next i
  1530.         End If
  1531.     End If
  1532.         '以上为自定义部分<<]
  1533.     End With    'WglrGrid
  1534.     
  1535.     '如果此行通过行有效性判断则加锁,直至此行数据再次发生变化
  1536.     Sjhzyxxpd = True
  1537.     Hyxxpdlock = True
  1538.     Exit Function
  1539.     
  1540. Lrcwcl:      '录入错误处理
  1541.     With WglrGrid
  1542.         
  1543.         '给出错误提示信息
  1544.         Call Xtxxts(Tsxx, 0, 1)
  1545.         
  1546.         '返回网格错误位置 (ChangeLock避免再次引发RowColChange有效性判断), 装入录入载体
  1547.         Changelock = True
  1548.         .Select Yxxpdh, Lrywlz
  1549.         Changelock = False
  1550.         Call xswbk
  1551.         
  1552.         '函数返回False
  1553.         Sjhzyxxpd = False
  1554.         Exit Function
  1555.     End With
  1556.     
  1557. End Function
  1558. Private Sub Sub_AddBill()                                                '新增一张单据
  1559.     
  1560.     Dim RecTemp As New ADODB.Recordset            '临时使用动态集
  1561.     Dim jsqte As Long                            '临时计数器
  1562.      
  1563.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  1564.      If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  1565.         Exit Sub
  1566.      End If
  1567.            
  1568.     '设置操作状态为新增(Fixed)
  1569.     Lab_OperStatus.Caption = "2"
  1570.     
  1571.     '设置工具条状态(Fixed)
  1572.     Call Sub_OperStatus("20")
  1573.     
  1574.     '清空VouchID(Fixed)
  1575.     Lab_BillId.Caption = ""
  1576.     
  1577.     '录入文本框清除内容
  1578.     For jsqte = Max_Text_Index To 0 Step -1
  1579.         LrText(jsqte).Tag = ""
  1580.         LrText(jsqte).Text = ""
  1581.     Next jsqte
  1582.     
  1583.     '[>>显示制单人,清空审核人,此处还可以设置录入默认值如自动生成单据号、默认单据录入日期注意加锁
  1584.     LrText(3).Text = Xtczy
  1585.     LrText(4).Text = ""
  1586.     
  1587.     '读取最新的单据编码
  1588.     LrText(1).Text = CreatBillCode(BillCode, False)
  1589.     
  1590.     '设置订单日期默认为系统业务日期
  1591.     TextChangeLock = True
  1592.     LrText(0).Text = Format(Xtrq, "yyyy-mm-dd")
  1593.     TextChangeLock = False
  1594.     
  1595.     '<<]
  1596.     
  1597.     '重置网格(Fixed)
  1598.     With WglrGrid
  1599.         .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1600.         For jsqte = .FixedRows To .Rows - 1
  1601.             .RowHeight(jsqte) = Sjhgd
  1602.         Next jsqte
  1603.         WglrGrid.Clear 1
  1604.         Changelock = True
  1605.         .Select .FixedRows, Qslz
  1606.         Changelock = False
  1607.     End With
  1608.     
  1609.     '计算合计数据(清零)(Fixed)
  1610.     For jsqte = Qslz To WglrGrid.Cols - 1
  1611.         Call Sjhj(jsqte)
  1612.     Next jsqte
  1613.     
  1614.     
  1615. End Sub
  1616. Private Sub Sub_EditBill()                                                '修改一张单据
  1617.     
  1618.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  1619.      
  1620.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  1621.      If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  1622.         Exit Sub
  1623.      End If
  1624.            
  1625.     '非有效单据不予进行修改动作
  1626.     If Val(Lab_BillId.Caption) = 0 Then
  1627.         Exit Sub
  1628.     End If
  1629.     
  1630.     '判断当前单据是否允许修改
  1631.     If Not Fun_AllowEdit Then
  1632.         Exit Sub
  1633.     End If
  1634.     
  1635.     '设置操作状态为修改
  1636.     Lab_OperStatus.Caption = "3"
  1637.     
  1638.     '设置工具条状态
  1639.     Call Sub_OperStatus("30")
  1640.     
  1641.     '显示制单人
  1642.     LrText(3).Text = Xtczy
  1643.     
  1644. End Sub
  1645. Private Sub Sub_DeleteBill()                                               '删除当前单据
  1646.     Dim YAnswer As Integer               '确认是否删除当前单据
  1647.     Dim jsqte As Long                   '临时使用计数器
  1648.     Dim str_TempSql As String
  1649.      
  1650.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  1651.      If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  1652.         Exit Sub
  1653.      End If
  1654.            
  1655.     '非有效单据不予进行删除动作
  1656.     If Val(Lab_BillId.Caption) = 0 Then
  1657.         Exit Sub
  1658.     End If
  1659.     
  1660.     Tsxx = "请确认是否删除当前单据?"
  1661.     YAnswer = Xtxxts(Tsxx, 2, 2)
  1662.     
  1663.     If YAnswer = 1 Then
  1664.         
  1665.         '判断当前单据是否允许删除
  1666.         If Not Fun_AllowEdit Then
  1667.             Exit Sub
  1668.         End If
  1669.         
  1670.         '进行事务处理
  1671.         On Error GoTo Swcwcl
  1672.         Cw_DataEnvi.DataConnect.BeginTrans
  1673.         
  1674.         '1.删除单据所有内容
  1675.         '删除铁运排它表的相应记录
  1676.         str_TempSql = "delete tr_nowaccount where childid in (select Mendsubid from tr_Mendsub where Mendmainid= '" + Lab_BillId.Caption + "') and vouchernum=5 "
  1677.         Cw_DataEnvi.DataConnect.Execute (str_TempSql)
  1678.         '删除子表、主表
  1679.         Cw_DataEnvi.DataConnect.Execute ("Delete Tr_MendSub Where MendMainId=" & Val(Lab_BillId.Caption))
  1680.         Cw_DataEnvi.DataConnect.Execute ("Delete Tr_MendMain Where MendMainId=" & Val(Lab_BillId.Caption))
  1681.         Cw_DataEnvi.DataConnect.CommitTrans
  1682.         
  1683.         '标识单据发生改动
  1684.         Bln_BillChange = True
  1685.         
  1686.         '单据ID置0
  1687.         Lab_BillId.Caption = 0
  1688.     Else
  1689.         Exit Sub
  1690.     End If
  1691.     
  1692.     '删除单据后重置状态
  1693.     
  1694.     '1.显示下一张单据
  1695.     Call Sub_Next
  1696.     
  1697.     '2.如果无下一张单据则搜索上一张单据
  1698.     If Val(Lab_BillId.Caption) = 0 Then
  1699.         Call Sub_Prev
  1700.     End If
  1701.     
  1702.     '3.如无单据则置单据为空状态
  1703.     If Val(Lab_BillId.Caption) = 0 Then
  1704.         '清除录入文本框
  1705.         For jsqte = Max_Text_Index To 0 Step -1
  1706.             LrText(jsqte).Tag = ""
  1707.             LrText(jsqte).Text = ""
  1708.         Next jsqte
  1709.         
  1710.         '重置网格(Fixed)
  1711.         With WglrGrid
  1712.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1713.             For jsqte = .FixedRows To .Rows - 1
  1714.                 .RowHeight(jsqte) = Sjhgd
  1715.             Next jsqte
  1716.             WglrGrid.Clear 1
  1717.             Changelock = True
  1718.             .Select .FixedRows, Qslz
  1719.             Changelock = False
  1720.         End With
  1721.         
  1722.         '计算合计数据(清零)(Fixed)
  1723.         For jsqte = Qslz To WglrGrid.Cols - 1
  1724.             Call Sjhj(jsqte)
  1725.         Next jsqte
  1726.         
  1727.         '设置操作状态为浏览
  1728.         Lab_OperStatus = "1"
  1729.         Call Sub_OperStatus("10")
  1730.     End If
  1731.     
  1732.     Rec_Query.Requery
  1733.     Rec_Query.find "MendMainId=" & Val(Lab_BillId.Caption)
  1734.     Exit Sub
  1735.     
  1736. Swcwcl:          '单据删除时出现错误
  1737.     Cw_DataEnvi.DataConnect.RollbackTrans
  1738.     Tsxx = "单据删除过程中出现未知错误,程序自动恢复保存前状态!"
  1739.     Call Xtxxts(Tsxx, 0, 1)
  1740.     Exit Sub
  1741.     
  1742. End Sub
  1743. Private Sub Sub_AbandonBill()                                              '放弃对当前单据的操作
  1744.     
  1745.     Dim jsqte As Long                   '临时使用计数器
  1746.     
  1747.     '先关闭录入载体(Fixed)
  1748.     Changelock = True
  1749.     Valilock = True
  1750.     Call Ycwbk
  1751.     Changelock = False
  1752.     Valilock = False
  1753.     
  1754.     '如果单据有效则重新显示当前单据,置单据为空状态
  1755.     If Not Rec_Query.EOF Then
  1756.         Lab_BillId.Caption = Rec_Query.Fields("MendMainId")
  1757.         Call Sub_ShowBill
  1758.     Else
  1759.         '单据ID置为0
  1760.         Lab_BillId.Caption = 0
  1761.         
  1762.         '清除录入文本框
  1763.         For jsqte = Max_Text_Index To 0 Step -1
  1764.             LrText(jsqte).Tag = ""
  1765.             LrText(jsqte).Text = ""
  1766.         Next jsqte
  1767.         
  1768.         '重置网格(Fixed)
  1769.         With WglrGrid
  1770.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1771.             For jsqte = .FixedRows To .Rows - 1
  1772.                 .RowHeight(jsqte) = Sjhgd
  1773.             Next jsqte
  1774.             
  1775.             WglrGrid.Clear 1
  1776.             Changelock = True
  1777.             .Select .FixedRows, Qslz
  1778.             Changelock = False
  1779.         End With
  1780.         
  1781.         '计算合计数据(清零)(Fixed)
  1782.         For jsqte = Qslz To WglrGrid.Cols - 1
  1783.             Call Sjhj(jsqte)
  1784.         Next jsqte
  1785.     End If
  1786.     
  1787.     '设置操作状态为浏览
  1788.     Lab_OperStatus = "1"
  1789.     Call Sub_OperStatus("10")
  1790.     
  1791. End Sub
  1792. Private Function Sub_SaveBill() As Boolean                                   '保 存 单 据
  1793.     
  1794.     Dim RecTemp As New ADODB.Recordset                    '临时使用动态集
  1795.     Dim Rec_VouchMain As New ADODB.Recordset              '单据主表动态集
  1796.     Dim Rec_VouchSub As New ADODB.Recordset               '单据子表动态集
  1797.     Dim Rowjsq As Long                                    '网格行计数器
  1798.     Dim Coljsq As Long                                    '网格列计数器
  1799.     Dim jsqte As Integer                                 '临时计数器
  1800.     Dim Lng_RowCount As Long                              '有效数据行计数器
  1801.     Dim Lrywlz As Long                                    '录入有误列值
  1802.     Dim Findrc As New ADODB.Recordset
  1803.     Sub_SaveBill = False
  1804.     
  1805.     '一.============先对单据内容进行有效性判断==============='
  1806.     
  1807.     '对需要进行事后判断的文本框录入内容进行有效性判断 (Fixed)
  1808.     For jsqte = 0 To Max_Text_Index
  1809.         If Textint(jsqte, 9) = 0 Or Textint(jsqte, 9) = 2 Then
  1810.             If Not TextYxxpd(jsqte) Then
  1811.                 Call TextShow(jsqte)
  1812.                 Exit Function
  1813.             End If
  1814.         End If
  1815.     Next jsqte
  1816.     '先进行字段不能为空或不能为零有效性判断(Fixed)
  1817.     For jsqte = 0 To Max_Text_Index
  1818.         If Textint(jsqte, 8) = 1 Then     '字段不能为空
  1819.             If Len(Trim(LrText(jsqte).Text)) = 0 Then
  1820.                 Tsxx = Textstr(jsqte, 7) & "不能为空!"
  1821.                 Call Xtxxts(Tsxx, 0, 1)
  1822.                 LrText(jsqte).SetFocus
  1823.                 Exit Function
  1824.             End If
  1825.         Else
  1826.             If Textint(jsqte, 8) = 2 Then   '字段不能为零
  1827.                 If Val(Trim(LrText(jsqte).Text)) = 0 Then
  1828.                     Tsxx = Textstr(jsqte, 7) & "不能为零!"
  1829.                     Call Xtxxts(Tsxx, 0, 1)
  1830.                     LrText(jsqte).SetFocus
  1831.                     Exit Function
  1832.                 End If
  1833.             End If
  1834.         End If
  1835.     Next jsqte
  1836.     '[>>
  1837.     
  1838.     '可在此区域写入其他对单据表头内容的有效性判断.
  1839.     
  1840.     '<<]
  1841.     
  1842.     '[>>下面将对所有有效数据行进行有效性判断
  1843.     
  1844.     Lng_RowCount = 0
  1845.     
  1846.     With WglrGrid
  1847.         For Rowjsq = .FixedRows To .Rows - 1
  1848.             '带*号者为有效数据行(Fixed)
  1849.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  1850.                 Exit For
  1851.             Else
  1852.                 Lng_RowCount = Lng_RowCount + 1
  1853.             End If
  1854.             
  1855.             '1.首先进行为空或为零判断(Fixed)
  1856.             
  1857.             For jsqte = Qslz To .Cols - 1
  1858.                 
  1859.                 '字段不能为空
  1860.                 If GridInt(jsqte, 5) = 1 Then
  1861.                     If Len(Trim(.TextMatrix(Rowjsq, jsqte))) = 0 Then
  1862.                         Tsxx = GridStr(jsqte, 2)
  1863.                         Lrywlz = jsqte
  1864.                         GoTo Lrcwcl
  1865.                         Exit For
  1866.                     End If
  1867.                 End If
  1868.                 
  1869.                 '字段不能为零
  1870.                 If GridInt(jsqte, 5) = 2 Then
  1871.                     If Val(Trim(.TextMatrix(Rowjsq, jsqte))) = 0 Then
  1872.                         Tsxx = GridStr(jsqte, 2)
  1873.                         Lrywlz = jsqte
  1874.                         GoTo Lrcwcl
  1875.                         Exit For
  1876.                     End If
  1877.                 End If
  1878.             Next jsqte
  1879.         
  1880.         Next Rowjsq
  1881.         
  1882.         '单据分录行数不能为零(Fixed)
  1883.         If Lng_RowCount = 0 Then
  1884.             Tsxx = "单据分录行数不能为零!"
  1885.             Call Xtxxts(Tsxx, 0, 1)
  1886.             Exit Function
  1887.         End If
  1888.         
  1889.         '[>>
  1890.     
  1891.         '此处可以定义整张单据不能通过有效性检查的理由
  1892.         '<<]
  1893.     End With  '网格
  1894.     
  1895.     
  1896.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  1897.     
  1898.     '对存盘进行事务处理(Fixed)
  1899. On Error GoTo Swcwcl
  1900.     Cw_DataEnvi.DataConnect.BeginTrans
  1901.     If Trim(Lab_OperStatus) = "2" Then '新增单据
  1902.         LrText(1).Text = CreatBillCode(BillCode, True)
  1903.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  1904.         Rec_VouchMain.Open "Select * From Tr_MendMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1905.         With Rec_VouchMain
  1906.             .AddNew
  1907.             .Fields("MendMainId") = CreatBillID(BillCode)
  1908.             .Fields("Menddate") = CDate(LrText(0).Text)           '日期
  1909.             .Fields("Mendnum") = Trim(LrText(1).Text)             '单据号
  1910.             .Fields("remark") = Trim(LrText(2).Text)              '备注
  1911.             .Fields("maker") = Xtczy                              '制单人
  1912.             .Update
  1913.             Lab_BillId.Caption = .Fields("MendMainId")
  1914.         End With
  1915.     Else '修改单据
  1916.         '********************* 删除修改现有内容[删除铁运排它表的相应记录,删除维修子表的记录
  1917.         str_TempSql = "delete tr_nowaccount where childid in (select Mendsubid from tr_Mendsub where Mendmainid= '" + Lab_BillId.Caption + "') and vouchernum=5 "
  1918.         Cw_DataEnvi.DataConnect.Execute (str_TempSql)
  1919.         str_TempSql = "delete from tr_Mendsub where MendMainId='" & Lab_BillId.Caption & "'"
  1920.         Cw_DataEnvi.DataConnect.Execute (str_TempSql)
  1921.         '************************************************************************************
  1922.         '打开单据主表动态集
  1923.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  1924.         Rec_VouchMain.Open "Select * From Tr_MendMain  Where MendMainId=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1925.         With Rec_VouchMain
  1926.             .Fields("Menddate") = CDate(LrText(0).Text)           '日期
  1927.             .Fields("remark") = Trim(LrText(2).Text)              '备注
  1928.             .Fields("maker") = Xtczy                              '制单人                                                                   '审核人置空
  1929.             .Update
  1930.         End With
  1931.     End If
  1932.     
  1933.     '增加子表记录
  1934.     If Rec_VouchSub.State = 1 Then Rec_VouchSub.Close
  1935.     Rec_VouchSub.Open "select * from tr_Mendsub where 1=2  ", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
  1936.     
  1937.     For jsqte = WglrGrid.FixedRows To WglrGrid.Rows - 1
  1938.         If WglrGrid.TextMatrix(jsqte, Sydz("001", GridStr(), szzls)) = "" Then Exit For
  1939.         
  1940.         With Rec_VouchSub
  1941.         '增加子表记录
  1942.          .AddNew
  1943.          .Fields("MendMainId") = Rec_VouchMain.Fields("MendMainId")
  1944.          .Fields("vehiclenum") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("001", GridStr(), szzls)))      '车号
  1945.          .Fields("mendtype") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("002", GridStr(), szzls)))        '维修类型
  1946.          .Fields("mendpart") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("003", GridStr(), szzls)))        '维修部位
  1947.          .Fields("begintime") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("004", GridStr(), szzls)))       '开始时间
  1948.          If Trim(WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), szzls))) <> "" Then
  1949.             .Fields("endtime") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), szzls)))      '结束时间
  1950.             .Fields("result") = 1
  1951.          Else
  1952.             .Fields("result") = 0
  1953.          End If
  1954.          .Fields("completecase") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("006", GridStr(), szzls)))    '完成情况
  1955.          .Fields("mendunit") = Trim(WglrGrid.TextMatrix(jsqte, Sydz("007", GridStr(), szzls)))        '维修单位
  1956.          .UpdateBatch
  1957.         '增加铁运排它表记录
  1958.         If Findrc.State = 1 Then Findrc.Close
  1959.         Findrc.Open "SELECT * FROM tr_nowaccount  where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1960.         Findrc.AddNew
  1961.         Findrc.Fields("vouchernum") = 5
  1962.         Findrc.Fields("childid") = .Fields("MendSubId")
  1963.         Findrc.Fields("vehiclenum") = Trim(.Fields("vehiclenum") & "")
  1964.         If Not IsNull(.Fields("begintime")) Then
  1965.             Findrc.Fields("begintime") = Format(Trim(.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1966.         Else
  1967.             Findrc.Fields("begintime") = Null
  1968.         End If
  1969.         If Not IsNull(.Fields("endtime")) Then
  1970.             Findrc.Fields("endtime") = Format(Trim(.Fields("endtime")), "yyyy-mm-dd hh:mm")
  1971.         Else
  1972.             Findrc.Fields("endtime") = Format(Trim(.Fields("begintime")), "yyyy-mm-dd hh:mm")
  1973.         End If
  1974.         If .Fields("result") = True Then
  1975.             Findrc.Fields("nowstatus") = "已维修"
  1976.             Findrc.Fields("limitmark") = 1
  1977.         Else
  1978.             Findrc.Fields("nowstatus") = "维修"
  1979.            Findrc.Fields("limitmark") = 0
  1980.         End If
  1981.         Findrc.Update
  1982.         End With
  1983.     Next jsqte
  1984.     
  1985.     Cw_DataEnvi.DataConnect.CommitTrans
  1986.     
  1987.     Sub_SaveBill = True
  1988.     Tsxx = "单据存盘完毕! 单据号:" & Trim(LrText(1).Text)
  1989.     Call Xtxxts(Tsxx, 0, 4)
  1990.     
  1991.     
  1992.     Call Sub_ShowBill
  1993.     
  1994.     '标识单据发生改动
  1995.     Bln_BillChange = True
  1996.     
  1997.     '设置单据改变后的状态
  1998.     Lab_OperStatus = "1"
  1999.     Call Sub_OperStatus("10")
  2000.     Rec_Query.Requery
  2001.     Rec_Query.find "MendMainId=" & Val(Lab_BillId.Caption)
  2002.     
  2003.     Exit Function
  2004.     
  2005. Swcwcl:       '数据存盘时出现错误
  2006.     Cw_DataEnvi.DataConnect.RollbackTrans
  2007.     With WglrGrid
  2008.         If Err.Number = -2147217887 Then
  2009.             Tsxx = "单据中第  " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条分录录入数据超出允许范围!"
  2010.             Call Xtxxts(Tsxx, 0, 1)
  2011.             Changelock = True
  2012.             .Select Rowjsq, Qslz
  2013.             WglrGrid.SetFocus
  2014.             Changelock = False
  2015.             Exit Function
  2016.         Else
  2017.             Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  2018.             Call Xtxxts(Tsxx, 0, 1)
  2019.             Exit Function
  2020.         End If
  2021.     End With
  2022.     
  2023. Lrcwcl:        '录入错误处理(存盘前逐行有效性判断)
  2024.     With WglrGrid
  2025.         Call Xtxxts("(第 " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条单据分录)-" & Tsxx, 0, 1)
  2026.         Changelock = True
  2027.         .Select Rowjsq, Lrywlz
  2028.         WglrGrid.SetFocus
  2029.         Changelock = False
  2030.         Exit Function
  2031.     End With
  2032.     
  2033. End Function
  2034. '选择首张,上张,下张,末张(此4个过程只需用您的单据ID字段名替换"OrderBillMainId"即可)
  2035. Private Sub Sub_First()             '首 张
  2036.     
  2037.     With Rec_Query
  2038.         If .RecordCount = 0 Then
  2039.             Exit Sub
  2040.         End If
  2041.         .MoveFirst
  2042.         Lab_BillId.Caption = .Fields("MendMainId")
  2043.         Call Sub_ShowBill
  2044.     End With
  2045.     
  2046. End Sub
  2047. Private Sub Sub_Prev()             '上 张
  2048.     
  2049.     With Rec_Query
  2050.         If .RecordCount = 0 Then
  2051.             Exit Sub
  2052.         End If
  2053.         If Not .BOF Then
  2054.             .MovePrevious
  2055.         End If
  2056.         If Not .BOF Then
  2057.             Lab_BillId.Caption = .Fields("MendMainId")
  2058.         Else
  2059.             .MoveNext
  2060.         End If
  2061.         Call Sub_ShowBill
  2062.     End With
  2063.     
  2064. End Sub
  2065. Private Sub Sub_Next()             '下 张
  2066.     With Rec_Query
  2067.         If .RecordCount = 0 Then
  2068.             Exit Sub
  2069.         End If
  2070.         If Not .EOF Then
  2071.             .MoveNext
  2072.         End If
  2073.         If Not .EOF Then
  2074.             Lab_BillId.Caption = .Fields("MendMainId")
  2075.         Else
  2076.             .MovePrevious
  2077.         End If
  2078.         Call Sub_ShowBill
  2079.     End With
  2080.     
  2081. End Sub
  2082. Private Sub Sub_Last()              '末 张
  2083.     
  2084.     With Rec_Query
  2085.         If .RecordCount = 0 Then
  2086.             Exit Sub
  2087.         End If
  2088.         .MoveLast
  2089.         Lab_BillId.Caption = .Fields("MendMainId")
  2090.         Call Sub_ShowBill
  2091.     End With
  2092.     
  2093. End Sub
  2094.     
  2095. '[>>===================以下为根据实际业务需要自定义过程区域=============================<<]
  2096. '审核,弃审
  2097. Private Sub Sub_CheckBill()             '审 核
  2098.      
  2099.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  2100.      If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  2101.         Exit Sub
  2102.      End If
  2103.            
  2104.     '[>>
  2105.     
  2106.     '<<]
  2107.     
  2108.     '将单据写入审核标识
  2109.     Cw_DataEnvi.DataConnect.Execute ("Update Tr_MendMain Set Checker='" & Xtczy & "' Where MendMainId=" & Val(Lab_BillId.Caption))
  2110.     
  2111.     '写入系统操作员
  2112.     LrText(4).Text = Xtczy
  2113.     
  2114.     '设置审核弃审按钮状态
  2115.     Call Sub_CheckStatus
  2116.     Tsxx = "审核完毕!"
  2117.     Call Xtxxts(Tsxx, 0, 4)
  2118.     '标识单据发生变化
  2119.     Bln_BillChange = True
  2120.     
  2121. End Sub
  2122. Private Sub Sub_AbandonCheck()          '弃 审
  2123.      
  2124.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  2125.      If Not Security_Log(Str_RightCheck, Xtczybm, 1, True) Then
  2126.         Exit Sub
  2127.      End If
  2128.            
  2129.     '[>>
  2130.     
  2131.     '<<]
  2132.     
  2133.     '将单据清除审核标识
  2134.     Cw_DataEnvi.DataConnect.Execute ("Update Tr_MendMain Set Checker='' Where MendMainId=" & Val(Lab_BillId.Caption))
  2135.     
  2136.     '清空单据审核人
  2137.     LrText(4).Text = ""
  2138.     
  2139.     '设置审核弃审按钮状态
  2140.     Call Sub_CheckStatus
  2141.     Tsxx = "弃审完毕!"
  2142.     Call Xtxxts(Tsxx, 0, 4)
  2143.     '标识单据发生变化
  2144.     Bln_BillChange = True
  2145.     
  2146. End Sub
  2147. Private Function Fun_AllowEdit() As Boolean                      '判断当前单据是否允许编辑或删除
  2148.     
  2149.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  2150.     Fun_AllowEdit = False
  2151.     Sqlstr = "Select Checker From Tr_MendMain Where MendMainId=" & Val(Lab_BillId.Caption)
  2152.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  2153.     With RecTemp
  2154.         If Not .EOF Then
  2155.             If Trim(.Fields("Checker") & "") <> "" Then
  2156.                 Tsxx = "该单据已审核确认,不能修改或删除!"
  2157.                 Call Xtxxts(Tsxx, 0, 4)
  2158.                 Exit Function
  2159.             End If
  2160.         End If
  2161.     End With
  2162.     Fun_AllowEdit = True
  2163.     
  2164. End Function
  2165. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  2166. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  2167. Private Sub Sub_AdjustGrid()
  2168.     
  2169.      '调 整 网 格
  2170.     With WglrGrid
  2171.         '加 1 保持一行录入行
  2172.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  2173.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  2174.             For jsqte = .FixedRows To .Rows - 1
  2175.                 .RowHeight(jsqte) = Sjhgd
  2176.             Next jsqte
  2177.         End If
  2178.         
  2179.         '判断是否有辅助行和录入行,如没有则加行
  2180.         Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  2181.             .AddItem ""
  2182.             .RowHeight(.Rows - 1) = Sjhgd
  2183.         Loop
  2184.     
  2185.     End With
  2186.     
  2187. End Sub
  2188. Private Sub Lrzdbz()                                                      '录入字段帮助
  2189.     
  2190.     If Not Ydcommand.Visible Then
  2191.         Exit Sub
  2192.     End If
  2193.     
  2194.     With WglrGrid
  2195.         Valilock = True
  2196.         
  2197.         '处理通用部分
  2198.         Changelock = True        '调入另外窗体必须加锁
  2199.         If .Col = Sydz("002", GridStr(), szzls) Then
  2200.             Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(WglrGrid.TextMatrix(.Row, Sydz("001", GridStr(), szzls))))
  2201.         Else
  2202.             Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  2203.         End If
  2204.         Changelock = False
  2205.         
  2206.         If Len(Xtfhcs) <> 0 Then
  2207.             If GridInt(.Col, 7) = 0 Then
  2208.                 Ydtext.Text = Xtfhcs
  2209.             Else
  2210.                 Ydtext.Text = Xtfhcsfz
  2211.             End If
  2212.         End If
  2213.         
  2214.         Valilock = False
  2215.         If Ydtext.Visible Then
  2216.             Ydtext.SetFocus
  2217.         End If
  2218.     End With
  2219.     
  2220. End Sub
  2221. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  2222.     
  2223.     With HjGrid
  2224.         
  2225.         '是否显示合计网格
  2226.         If Not Sfxshjwg Then
  2227.             .Visible = False
  2228.             Exit Sub
  2229.         Else
  2230.             .Visible = True
  2231.         End If
  2232.         
  2233.         '设置网格相关属性
  2234.         .Enabled = False
  2235.         .Appearance = flexFlat
  2236.         .BorderStyle = flexBorderNone
  2237.         .ScrollBars = flexScrollBarNone
  2238.         .Width = WglrGrid.Width
  2239.         .FixedRows = 0
  2240.         .Rows = 1
  2241.         .Cols = WglrGrid.Cols
  2242.         .LeftCol = WglrGrid.LeftCol
  2243.         .TextMatrix(0, Qslz) = "合  计"
  2244.         For jsqte = 0 To WglrGrid.Cols - 1
  2245.             .ColHidden(jsqte) = WglrGrid.ColHidden(jsqte)
  2246.             .ColWidth(jsqte) = WglrGrid.ColWidth(jsqte)
  2247.             .ColAlignment(jsqte) = WglrGrid.ColAlignment(jsqte)
  2248.             .ColFormat(jsqte) = WglrGrid.ColFormat(jsqte)
  2249.         Next jsqte
  2250.         .ColAlignment(Qslz) = flexAlignCenterTop
  2251.         For jsqte = .FixedRows To .Rows - 1
  2252.             .RowHeight(jsqte) = .Height / .Rows
  2253.         Next jsqte
  2254.         
  2255.         '程序自动调整网格高度(自动设置为网格剩余高度+辅助项网格行数(默认为1)*数据行高度)、并设置其位置信息
  2256.         .Height = Fzxwghs * Sjhgd + ((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) Mod Sjhgd)
  2257.         .RowHeight(0) = .Height
  2258.         .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  2259.     End With
  2260.     
  2261. End Sub
  2262. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  2263.     Call Cxxswbk
  2264. End Sub
  2265. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  2266.     Fun_Drfrmyxxpd = True
  2267.     With WglrGrid
  2268.         
  2269.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  2270.         If Ydtext.Visible Or YdCombo.Visible Then
  2271.             Call Lrsjhx
  2272.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  2273.                 Fun_Drfrmyxxpd = False
  2274.                 Exit Function
  2275.             End If
  2276.         End If
  2277.         
  2278.         '进行行有效性判断
  2279.         If Not Sjhzyxxpd(.Row) Then
  2280.             Fun_Drfrmyxxpd = False
  2281.             Exit Function
  2282.         End If
  2283.         
  2284.     End With
  2285.     
  2286. End Function
  2287. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  2288.     
  2289.     If HjGrid.Visible Then
  2290.         With HjGrid
  2291.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  2292.         End With
  2293.     End If
  2294.     
  2295. End Sub
  2296. Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
  2297.     
  2298.     With WglrGrid
  2299.         If .Row >= .FixedRows Then
  2300.             '[>>
  2301.             '此处可以填写显示与此网格行相关信息
  2302.             '<<]
  2303.         End If
  2304.     End With
  2305.     
  2306. End Sub
  2307. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  2308.     
  2309.     '网格得到焦点,如果当前选择行为非数据行
  2310.     '则调整当前焦点至有效数据行
  2311.     
  2312.     With WglrGrid
  2313.         If .Row < .FixedRows And .Rows > .FixedRows Then
  2314.             Changelock = True
  2315.             .Select .FixedRows, .Col
  2316.             Changelock = False
  2317.         End If
  2318.         If .Col < Qslz Then
  2319.             Changelock = True
  2320.             .Select .Row, Qslz
  2321.             Changelock = False
  2322.         End If
  2323.     End With
  2324.     
  2325. End Sub
  2326. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  2327.     
  2328.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  2329.     If Changelock Then
  2330.         Exit Sub
  2331.     End If
  2332.     
  2333.     '引发网格RowcolChange事件
  2334.     With WglrGrid
  2335.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  2336.             .Select 0, 0
  2337.         End If
  2338.     End With
  2339.     
  2340. End Sub
  2341. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  2342.     
  2343.     If Gdtlock Then
  2344.         Exit Sub
  2345.     End If
  2346.     
  2347.     With WglrGrid
  2348.         If Ydtext.Visible Or YdCombo.Visible Then
  2349.             Gdtlock = True
  2350.             .TopRow = Dqtoprow
  2351.             .LeftCol = Dqleftcol
  2352.             Gdtlock = False
  2353.             Exit Sub
  2354.         End If
  2355.         HjGrid.LeftCol = .LeftCol
  2356.     End With
  2357.     
  2358. End Sub
  2359. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  2360.     
  2361.     If Changelock Then
  2362.         Exit Sub
  2363.     End If
  2364.     
  2365.     '记录刚刚离开网格单元的行列值
  2366.     Dqlkwgh = WglrGrid.Row
  2367.     Dqlkwgl = WglrGrid.Col
  2368.     
  2369.     '判断是否需要录入数据回写
  2370.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  2371.         Exit Sub
  2372.     End If
  2373.     Call Lrsjhx
  2374.     
  2375. End Sub
  2376. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  2377.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  2378.     With WglrGrid
  2379.         If Changelock Then
  2380.             Exit Sub
  2381.         End If
  2382.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  2383.             Exit Sub
  2384.         End If
  2385.         If .Row <> Dqlkwgh Then
  2386.             If Not Sjhzyxxpd(Dqlkwgh) Then
  2387.                 Exit Sub
  2388.             End If
  2389.         End If
  2390.     End With
  2391.     
  2392.     Call fhyxh
  2393.     Call Xldql
  2394.     
  2395. End Sub
  2396. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  2397.     
  2398.     With WglrGrid
  2399.         Call xswbk
  2400.     End With
  2401.     
  2402. End Sub
  2403. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  2404.     
  2405.     Valilock = True
  2406.     Ydtext.Visible = False
  2407.     YdCombo.Visible = False
  2408.     Ydcommand.Visible = False
  2409.     
  2410. End Sub
  2411. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  2412.     With WglrGrid
  2413.         Select Case KeyCode
  2414.         Case vbKeyEscape                'ESC 键放弃录入
  2415.             Valilock = True
  2416.             .SetFocus
  2417.             Call Ycwbk
  2418.             Valilock = False
  2419.         Case vbKeyReturn                '回 车 键 =13
  2420.             KeyCode = 0
  2421.             .SetFocus
  2422.             Call Lrsjhx
  2423.             Rowjsq = .Row
  2424.             Coljsq = .Col + 1
  2425.             If Coljsq > .Cols - 1 Then
  2426.                 If Rowjsq < .Rows - 1 Then
  2427.                     Rowjsq = Rowjsq + 1
  2428.                 End If
  2429.                 Coljsq = Qslz
  2430.             End If
  2431.             Do While Rowjsq <= .Rows - 1
  2432.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2433.                     Coljsq = Coljsq + 1
  2434.                     If Coljsq > .Cols - 1 Then
  2435.                         Rowjsq = Rowjsq + 1
  2436.                         Coljsq = Qslz
  2437.                     End If
  2438.                 Else
  2439.                     Exit Do
  2440.                 End If
  2441.             Loop
  2442.             .Select Rowjsq, Coljsq
  2443.         Case vbKeyLeft                  '左 箭 头 =37
  2444.             If .Col - 1 = Qslz Then
  2445.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2446.                     GoTo jzzx
  2447.                 End If
  2448.             End If
  2449.             If .Col > Qslz Then
  2450.                 KeyCode = 0
  2451.                 .SetFocus
  2452.                 Call Lrsjhx
  2453.                 Coljsq = .Col - 1
  2454.                 Do While Coljsq > Qslz
  2455.                     If Coljsq - 1 = Qslz Then
  2456.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2457.                             GoTo jzzx
  2458.                         End If
  2459.                     End If
  2460.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2461.                         Coljsq = Coljsq - 1
  2462.                     Else
  2463.                         Exit Do
  2464.                     End If
  2465.                 Loop
  2466.                 .Select .Row, Coljsq
  2467.             End If
  2468.         Case vbKeyRight                 '右 箭 头 =39
  2469.             KeyCode = 0
  2470.             .SetFocus
  2471.             Call Lrsjhx
  2472.             Rowjsq = .Row
  2473.             Coljsq = .Col + 1
  2474.             If Coljsq > .Cols - 1 Then
  2475.                 If Rowjsq < .Rows - 1 Then
  2476.                     Rowjsq = Rowjsq + 1
  2477.                 End If
  2478.                 Coljsq = Qslz
  2479.             End If
  2480.             Do While Rowjsq <= .Rows - 1
  2481.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2482.                     Coljsq = Coljsq + 1
  2483.                     If Coljsq > .Cols - 1 Then
  2484.                         Rowjsq = Rowjsq + 1
  2485.                         Coljsq = Qslz
  2486.                     End If
  2487.                 Else
  2488.                     Exit Do
  2489.                 End If
  2490.             Loop
  2491.             .Select Rowjsq, Coljsq
  2492.         Case Else
  2493.         End Select
  2494.         
  2495. jzzx:
  2496.         
  2497.     End With
  2498.     
  2499. End Sub
  2500. Private Sub YdCombo_LostFocus()
  2501.     
  2502.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  2503.         If Not Valilock Then                           '为TRUE
  2504.             Call Lrsjhx
  2505.             If Not Sjhzyxxpd(Dqlrwgh) Then
  2506.                 Exit Sub
  2507.             End If
  2508.         End If
  2509.     End With
  2510.     
  2511. End Sub
  2512. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  2513.     Call Lrzdbz
  2514. End Sub
  2515. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  2516.     Dim Rowjsq As Long, Coljsq As Long
  2517.     With WglrGrid
  2518.         Select Case KeyCode
  2519.         Case vbKeyF2
  2520.             Call Lrzdbz
  2521.         Case vbKeyEscape                'ESC 键放弃录入
  2522.             Valilock = True
  2523.             Call Ycwbk
  2524.             .SetFocus
  2525.         Case vbKeyReturn                '回 车 键 =13
  2526.             KeyCode = 0
  2527.             .SetFocus
  2528.             Call Lrsjhx
  2529.             Rowjsq = .Row
  2530.             Coljsq = .Col + 1
  2531.             If Coljsq > .Cols - 1 Then
  2532.                 If Rowjsq < .Rows - 1 Then
  2533.                     Rowjsq = Rowjsq + 1
  2534.                 End If
  2535.                 Coljsq = Qslz
  2536.             End If
  2537.             Do While Rowjsq <= .Rows - 1
  2538.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2539.                     Coljsq = Coljsq + 1
  2540.                     If Coljsq > .Cols - 1 Then
  2541.                         Rowjsq = Rowjsq + 1
  2542.                         Coljsq = Qslz
  2543.                     End If
  2544.                 Else
  2545.                     Exit Do
  2546.                 End If
  2547.             Loop
  2548.             If Rowjsq <= .Rows - 1 Then
  2549.                 .Select Rowjsq, Coljsq
  2550.             End If
  2551.         Case vbKeyUp                    '上 箭 头 =38
  2552.             KeyCode = 0
  2553.             .SetFocus
  2554.             Call Lrsjhx
  2555.             If .Row > .FixedRows Then
  2556.                 .Row = .Row - 1
  2557.             End If
  2558.         Case vbKeyDown                  '下 箭 头 =40
  2559.             KeyCode = 0
  2560.             .SetFocus
  2561.             Call Lrsjhx
  2562.             If .Row < .Rows - 1 Then
  2563.                 .Row = .Row + 1
  2564.             End If
  2565.         Case vbKeyLeft                  '左 箭 头 =37
  2566.             If .Col - 1 = Qslz Then
  2567.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2568.                     GoTo jzzx
  2569.                 End If
  2570.             End If
  2571.             If Ydtext.SelStart = 0 And .Col > Qslz Then
  2572.                 KeyCode = 0
  2573.                 .SetFocus
  2574.                 Call Lrsjhx
  2575.                 Coljsq = .Col - 1
  2576.                 Do While Coljsq > Qslz
  2577.                     If Coljsq - 1 = Qslz Then
  2578.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2579.                             GoTo jzzx
  2580.                         End If
  2581.                     End If
  2582.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2583.                         Coljsq = Coljsq - 1
  2584.                     Else
  2585.                         Exit Do
  2586.                     End If
  2587.                 Loop
  2588.                 .Select .Row, Coljsq
  2589.             End If
  2590. jzzx:
  2591.         Case vbKeyRight                 '右 箭 头 =39
  2592.             wblong = Len(Ydtext.Text)
  2593.             If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  2594.                 KeyCode = 0
  2595.                 .SetFocus
  2596.                 Call Lrsjhx
  2597.                 Rowjsq = .Row
  2598.                 Coljsq = .Col + 1
  2599.                 If Coljsq > .Cols - 1 Then
  2600.                     If Rowjsq < .Rows - 1 Then
  2601.                         Rowjsq = Rowjsq + 1
  2602.                     End If
  2603.                     Coljsq = Qslz
  2604.                 End If
  2605.                 Do While Rowjsq <= .Rows - 1
  2606.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2607.                         Coljsq = Coljsq + 1
  2608.                         If Coljsq > .Cols - 1 Then
  2609.                             Rowjsq = Rowjsq + 1
  2610.                             Coljsq = Qslz
  2611.                         End If
  2612.                     Else
  2613.                         Exit Do
  2614.                     End If
  2615.                 Loop
  2616.                 .Select Rowjsq, Coljsq
  2617.             End If
  2618.         Case Else
  2619.         End Select
  2620.     End With
  2621.     
  2622. End Sub
  2623. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  2624.     
  2625.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  2626.     If KeyAscii <> 0 Then
  2627.         Call Xyxhbz(Dqlrwgh)
  2628.     End If
  2629.     
  2630. End Sub
  2631. Private Sub ydtext_Change()                              '录入事中变化处理
  2632.     
  2633.     '防止程序改变但不进行处理
  2634.     
  2635.     If Wbkbhlock Then
  2636.         Exit Sub
  2637.     End If
  2638.     
  2639.     With WglrGrid
  2640.         '限制字段录入长度
  2641.         Wbkbhlock = True
  2642.         
  2643.         Call TextChangeLimit(Ydtext, GridInt(.Col, 1))  '去掉无效字符
  2644.         
  2645.         Select Case GridInt(.Col, 1)
  2646.         Case 8, 11   '金额型
  2647.             Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  2648.         Case 9, 12   '数量型
  2649.             Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  2650.         Case 10      '单价型
  2651.             Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  2652.         Case Else    '其他类型
  2653.             If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  2654.                 Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  2655.             End If
  2656.         End Select
  2657.         Wbkbhlock = False
  2658.     End With
  2659.     
  2660. End Sub
  2661. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  2662.     
  2663.     With WglrGrid
  2664.         If Not Valilock Then
  2665.             Call Lrsjhx
  2666.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  2667.                 Exit Sub
  2668.             End If
  2669.             If Not Sjhzyxxpd(Dqlrwgh) Then
  2670.                 Exit Sub
  2671.             End If
  2672.         End If
  2673.     End With
  2674.     
  2675. End Sub
  2676. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  2677.     
  2678.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  2679.     
  2680.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  2681.     If Not Fun_AllowInput Then
  2682.         Exit Sub
  2683.     End If
  2684.     
  2685.     '显示文本框前返回有效行列(解决滚动条问题)
  2686.     Call Xldqh
  2687.     Call Xldql
  2688.     
  2689.     '隐藏文本框,帮助按钮,列表组合框
  2690.     Call Ycwbk
  2691.     
  2692.     With WglrGrid
  2693.         Dqlrwgh = .Row
  2694.         Dqlrwgl = .Col
  2695.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  2696.             Exit Sub
  2697.         End If
  2698.         
  2699.         Wbkpy = 30
  2700.         Wbkpy1 = 15
  2701.         
  2702.         On Error Resume Next
  2703. '        If Lab_OperStatus = "3" And .Col = Sydz("001", GridStr(), szzls) Then
  2704. '            Exit Sub
  2705. '        End If
  2706.         If GridBoolean(.Col, 3) Then
  2707.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  2708.             YdCombo.Top = .CellTop + .Top + Wbkpy
  2709.             YdCombo.Width = .CellWidth - Wbkpy1
  2710.             Call Wbkcl
  2711.             YdCombo.Visible = True
  2712.             YdCombo.SetFocus
  2713.             Ydcommand.Visible = False
  2714.             Ydtext.Visible = False
  2715.         Else
  2716.             If GridBoolean(.Col, 2) Then
  2717.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  2718.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  2719.                 Ydcommand.Visible = True
  2720.             Else
  2721.                 Ydcommand.Visible = False
  2722.             End If
  2723.             
  2724.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  2725.             Ydtext.Top = .CellTop + .Top + Wbkpy
  2726.             If Ydcommand.Visible Then
  2727.                 If Sfblbzkd Then
  2728.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  2729.                 Else
  2730.                     Ydtext.Width = .CellWidth - Wbkpy1
  2731.                 End If
  2732.             Else
  2733.                 Ydtext.Width = .CellWidth - Wbkpy1
  2734.             End If
  2735.             Ydtext.Height = .CellHeight - Wbkpy1
  2736.             
  2737.             If GridInt(.Col, 2) <> 0 Then
  2738.                 Ydtext.MaxLength = GridInt(.Col, 2)
  2739.             Else
  2740.                 Ydtext.MaxLength = 3000
  2741.             End If
  2742.             
  2743.             Call Wbkcl
  2744.             
  2745.             Ydtext.Visible = True
  2746.             Ydtext.SetFocus
  2747.         End If
  2748.         Dqtoprow = .TopRow
  2749.         Dqleftcol = .LeftCol
  2750.         
  2751.         '重置锁值
  2752.         Valilock = False
  2753.         Wbkbhlock = False
  2754.     End With
  2755.     
  2756. End Sub
  2757. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  2758.     
  2759.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  2760.     If Trim(Lab_OperStatus.Caption) = "1" Then
  2761.         Exit Function
  2762.     End If
  2763.     
  2764.     '[>>
  2765.     
  2766.     '此处可以填写禁止文本框激活使单据处于录入状态的理由
  2767.     
  2768.     '<<]
  2769.     
  2770.     Fun_AllowInput = True
  2771.     
  2772. End Function
  2773. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  2774.     
  2775.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  2776.     Wbkpy = 30
  2777.     Wbkpy1 = 15
  2778.     With WglrGrid
  2779.         If YdCombo.Visible Then
  2780.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  2781.             YdCombo.Top = .CellTop + .Top + Wbkpy
  2782.             YdCombo.Width = .CellWidth - Wbkpy1
  2783.         End If
  2784.         If Ydcommand.Visible Then
  2785.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  2786.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  2787.         End If
  2788.         If Ydtext.Visible Then
  2789.             If Ydcommand.Visible Then
  2790.                 If Sfblbzkd Then
  2791.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  2792.                 Else
  2793.                     Ydtext.Width = .CellWidth - Wbkpy1
  2794.                 End If
  2795.             Else
  2796.                 Ydtext.Width = .CellWidth - Wbkpy1
  2797.             End If
  2798.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  2799.             Ydtext.Top = .CellTop + .Top + Wbkpy
  2800.             Ydtext.Height = .CellHeight - Wbkpy1
  2801.         End If
  2802.     End With
  2803.     
  2804. End Sub
  2805. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  2806.     
  2807.     With WglrGrid
  2808.         If YdCombo.Visible Then
  2809.             .Text = Trim(YdCombo.Text)
  2810.         End If
  2811.         If Ydtext.Visible Then
  2812.             .Text = Trim(Ydtext.Text)
  2813.         End If
  2814.         
  2815.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  2816.         If Zdlrqnr <> Trim(.Text) Then
  2817.             Yxxpdlock = False
  2818.             Hyxxpdlock = False
  2819.         End If
  2820.         
  2821.         '如果字段录入内容不为空则写数据行有效性标志
  2822.         If Len(Trim(.Text)) <> 0 Then
  2823.             Call Xyxhbz(.Row)
  2824.         End If
  2825.         
  2826.         '隐藏文本框,帮助按钮,列表组合框
  2827.         Call Ycwbk
  2828.     End With
  2829.     
  2830. End Sub
  2831. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  2832.     
  2833.     '如果单据操作状态为浏览状态则不能显示录入载体
  2834.     If Trim(Lab_OperStatus.Caption) = "1" Then
  2835.         Exit Sub
  2836.     End If
  2837.     
  2838.     Select Case KeyCode
  2839.     Case vbKeyF2                   '按F2键参照
  2840.         Call xswbk
  2841.         Call Lrzdbz
  2842.     Case vbKeyDelete               '删行
  2843.         Call Scdqfl
  2844.     Case vbKeyInsert               '增行
  2845.         Call zjlrfl
  2846.     End Select
  2847.     
  2848. End Sub
  2849. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                             '网格接受键盘录入
  2850.     
  2851.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  2852.     If Not Fun_AllowInput Then
  2853.         Exit Sub
  2854.     End If
  2855.     
  2856.     With WglrGrid
  2857.         '屏 蔽 回 车 键
  2858.         If KeyAscii = vbKeyReturn Then
  2859.             KeyAscii = 0
  2860.             Rowjsq = .Row
  2861.             Coljsq = .Col + 1
  2862.             If Coljsq > .Cols - 1 Then
  2863.                 If Rowjsq < .Rows - 1 Then
  2864.                     Rowjsq = Rowjsq + 1
  2865.                 End If
  2866.                 Coljsq = Qslz
  2867.             End If
  2868.             Do While Rowjsq <= .Rows - 1
  2869.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2870.                     Coljsq = Coljsq + 1
  2871.                     If Coljsq > .Cols - 1 Then
  2872.                         Rowjsq = Rowjsq + 1
  2873.                         Coljsq = Qslz
  2874.                     End If
  2875.                 Else
  2876.                     Exit Do
  2877.                 End If
  2878.             Loop
  2879.             If Rowjsq <= .Rows - 1 Then
  2880.                 .Select Rowjsq, Coljsq
  2881.             End If
  2882.             Exit Sub
  2883.         End If
  2884.         
  2885.         '接受用户录入
  2886.         Select Case KeyAscii
  2887.         Case 0 To 32             '用户输入KeyAscii为0-32的键 如空格
  2888.             '显示录入载体
  2889.             Call xswbk
  2890.         Case Else
  2891.             '防止非编辑字段SendKeys()出现死循环
  2892.             If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  2893.                 Exit Sub
  2894.             End If
  2895.             '如果此字段为列表框录入则调入相应列表框
  2896.             If GridBoolean(.Col, 3) Then
  2897.                 '列表框录入
  2898.                 Call xswbk
  2899.             Else
  2900.                 Ydtext.Text = ""
  2901.                 '录入限制
  2902.                 Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  2903.                 If KeyAscii = 0 Then
  2904.                     Exit Sub
  2905.                 End If
  2906.                 '如果录入字符有效则写有效行数据标志
  2907.                 Call Xyxhbz(.Row)
  2908.                 Call xswbk
  2909.                 Ydtext.Text = ""
  2910.                 Valilock = True
  2911.                 SendKeys Chr(KeyAscii), True
  2912.                 DoEvents
  2913.                 Valilock = False
  2914.             End If
  2915.         End Select
  2916.     End With
  2917.     
  2918. End Sub
  2919. Private Sub zjlrfl()                                                    '增加录入分录
  2920.     
  2921.     With WglrGrid
  2922.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  2923.             If Not Fun_Drfrmyxxpd Then
  2924.                 Exit Sub
  2925.             End If
  2926.         Else
  2927.             Exit Sub
  2928.         End If
  2929.         If .Row < .FixedRows Then
  2930.             Exit Sub
  2931.         End If
  2932.         .AddItem "", .Row
  2933.         .RowHeight(.Row) = Sjhgd
  2934.         If .Row <> .Rows - 1 Then
  2935.             If .TextMatrix(.Row + 1, 0) = "*" Then
  2936.                 .TextMatrix(.Row, 0) = "*"
  2937.             Else
  2938.                 .RemoveItem .Rows - 1
  2939.             End If
  2940.         End If
  2941.         Call Xldqh
  2942.         Call Xldql
  2943.         Hyxxpdlock = False
  2944.     End With
  2945.     
  2946. End Sub
  2947. Private Sub Scdqfl()                                                    '删除当前分录
  2948.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  2949.     With WglrGrid
  2950.         Scqwghz = .Row
  2951.         Scqwglz = .Col
  2952.         If .TextMatrix(.Row, 0) = "*" Then
  2953.             '判断是否为录入状态
  2954.             If Ydtext.Visible Or YdCombo.Visible Then
  2955.                 Sflrzt = True
  2956.                 Validate = True
  2957.                 Call Lrsjhx
  2958.                 Validate = False
  2959.             End If
  2960.             Call Xldqh
  2961.             Changelock = True
  2962.             .Select .Row, 0
  2963.             Changelock = False
  2964.             If Shsfts Then
  2965.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  2966.                 Tsxx = "请确认是否删除当前记录?"
  2967.                 yhAnswer = Xtxxts(Tsxx, 2, 2)
  2968.                 If yhAnswer = 2 Then
  2969.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  2970.                     Changelock = True
  2971.                     .Select Scqwghz, Scqwglz
  2972.                     Changelock = False
  2973.                     
  2974.                     '如为录入状态,则恢复录入
  2975.                     If Sflrzt Then
  2976.                         Call xswbk
  2977.                     End If
  2978.                     Exit Sub
  2979.                 End If
  2980.             End If
  2981.             .RemoveItem .Row
  2982.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  2983.                 .AddItem ""
  2984.                 .RowHeight(.Rows - 1) = Sjhgd
  2985.             End If
  2986.             Changelock = True
  2987.             .Select .Row, Scqwglz
  2988.             Changelock = False
  2989.             
  2990.             '重新计算合计数据
  2991.             For Hjlzte = Qslz To .Cols - 1
  2992.                 Call Sjhj(Hjlzte)
  2993.             Next Hjlzte
  2994.         End If
  2995.     End With
  2996.     
  2997. End Sub
  2998. Private Sub Sjhj(Hjwgl As Long)                                         '网格列数据合计
  2999.     
  3000.     Dim Hjjg As Double
  3001.     If Not GridBoolean(Hjwgl, 4) Then
  3002.         Exit Sub
  3003.     End If
  3004.     With WglrGrid
  3005.         Hjjg = 0
  3006.         For jsqte = .FixedRows To .Rows - 1
  3007.             If .TextMatrix(jsqte, 0) = "*" Then
  3008.                 Hjjg = Hjjg + Val(.TextMatrix(jsqte, Hjwgl))
  3009.             End If
  3010.         Next jsqte
  3011.         If GridBoolean(Hjwgl, 5) And Hjjg = 0 Then
  3012.             HjGrid.TextMatrix(0, Hjwgl) = ""
  3013.         Else
  3014.             HjGrid.TextMatrix(0, Hjwgl) = Hjjg
  3015.         End If
  3016.     End With
  3017.     
  3018. End Sub
  3019. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  3020.     
  3021.     If Not GridBoolean(Sjl, 5) Then
  3022.         Exit Sub
  3023.     End If
  3024.     With WglrGrid
  3025.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  3026.             .TextMatrix(sjh, Sjl) = ""
  3027.         End If
  3028.     End With
  3029.     
  3030. End Sub
  3031. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  3032.     
  3033.     With WglrGrid
  3034.         If .Row >= .FixedRows Then
  3035.             If .TextMatrix(.Row, 0) <> "*" Then
  3036.                 For Rowjsq = .FixedRows To .Rows - 1
  3037.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  3038.                         Exit For
  3039.                     End If
  3040.                 Next Rowjsq
  3041.                 If Rowjsq <= .Rows - 1 Then
  3042.                     Changelock = True
  3043.                     .Select Rowjsq, .Col
  3044.                     Changelock = False
  3045.                 Else
  3046.                     Changelock = True
  3047.                     .Select .Rows - 1, .Col
  3048.                     Changelock = False
  3049.                 End If
  3050.             End If
  3051.             Call Xldqh
  3052.         End If
  3053.     End With
  3054.     
  3055. End Sub
  3056. Private Sub Xldqh()                                                      '显露当前行
  3057.     
  3058.     Dim Toprowte As Long
  3059.     With WglrGrid
  3060.         Toprowte = 0
  3061.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  3062.             Toprowte = .TopRow
  3063.             .TopRow = .TopRow + 1
  3064.         Loop
  3065.         Toprowte = 0
  3066.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  3067.             Toprowte = .TopRow
  3068.             If .TopRow > 1 Then
  3069.                 .TopRow = .TopRow - 1
  3070.             End If
  3071.         Loop
  3072.     End With
  3073.     
  3074. End Sub
  3075. Private Sub Xldql()                                                     '显露当前列
  3076.     
  3077.     Dim Leftcolte As Long
  3078.     With WglrGrid
  3079.         If .Col >= Qslz And .Col >= .FixedCols Then
  3080.             If .LeftCol > .Col Then
  3081.                 .LeftCol = .Col
  3082.             End If
  3083.             Leftcolte = 0
  3084.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  3085.                 Leftcolte = .LeftCol
  3086.                 .LeftCol = .LeftCol + 1
  3087.             Loop
  3088.         End If
  3089.     End With
  3090.     
  3091. End Sub
  3092. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  3093.     
  3094.     With WglrGrid
  3095.         For Coljsq = Qslz To .Cols - 1
  3096.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  3097.                 pdhwk = False
  3098.                 Exit Function
  3099.             End If
  3100.         Next Coljsq
  3101.         pdhwk = True
  3102.     End With
  3103.     
  3104. End Function
  3105. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  3106.     
  3107.     With WglrGrid
  3108.         If .TextMatrix(sjh, 0) = "*" Then
  3109.             Exit Sub
  3110.         End If
  3111.         .TextMatrix(sjh, 0) = "*"
  3112.         If sjh >= .Rows - Fzxwghs - 1 Then
  3113.             .AddItem ""
  3114.             .RowHeight(.Rows - 1) = Sjhgd
  3115.         End If
  3116.     End With
  3117.     
  3118. End Sub
  3119. '*****************************以下为文本框录入处理程序(固定不变部分)*******************************'
  3120. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  3121.     
  3122.     '以下为依据实际情况自定义部分[
  3123.     
  3124.     '在此填写文本框录入事后处理程序
  3125.     
  3126.     ']以上为依据实际情况自定义部分
  3127.     
  3128. End Sub
  3129. Private Sub LrText_Change(Index As Integer)
  3130.     
  3131.     '屏蔽程序改变控制
  3132.     If TextChangeLock Then
  3133.         Exit Sub
  3134.     End If
  3135.     
  3136.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  3137.     
  3138.     '限制字段录入长度
  3139.     
  3140.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  3141.     
  3142.     Call TextChangeLimit(LrText(Index), Textint(Index, 1))  '去掉无效字符
  3143.     
  3144.     Select Case Textint(Index, 1)
  3145.     Case 8, 11       '金额型
  3146.         Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  3147.     Case 9, 12       '数量型
  3148.         Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  3149.     Case 10          '单价型
  3150.         Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  3151.     Case Else        '其他小数类型控制
  3152.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  3153.             Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  3154.         End If
  3155.     End Select
  3156.     
  3157.     TextChangeLock = False '解锁
  3158.     
  3159. End Sub
  3160. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  3161.     Call TextShow(Index)
  3162. End Sub
  3163. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  3164.     
  3165.     Select Case KeyCode
  3166.     Case vbKeyF2
  3167.         Call Text_Help(Index)
  3168.     End Select
  3169.     
  3170. End Sub
  3171. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  3172.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  3173. End Sub
  3174. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  3175.     
  3176.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  3177.         Call TextYxxpd(Index)
  3178.     End If
  3179.     
  3180. End Sub
  3181. Private Sub Ydcommand1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '点击按钮
  3182.     Call Text_Help(Ydcommand1.Tag)
  3183. End Sub
  3184. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  3185.     
  3186.     If Not Ydcommand1.Visible Then
  3187.         Exit Sub
  3188.     End If
  3189.     TextValiLock = True
  3190.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  3191.     If Len(Xtfhcs) <> 0 Then
  3192.         If Textint(Index, 3) = 1 Then
  3193.             LrText(Index).Text = Xtfhcsfz
  3194.             LrText(Index).Tag = Xtfhcs
  3195.         Else
  3196.             LrText(Index).Text = Xtfhcs
  3197.             LrText(Index).Tag = Xtfhcsfz
  3198.         End If
  3199.     End If
  3200.     TextValiLock = False
  3201.     LrText(Index).SetFocus
  3202.     
  3203. End Sub
  3204. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  3205.     
  3206.     '如果文本框有帮助,则显示帮助按钮
  3207.     If Textboolean(Index, 1) Then
  3208.         Ydcommand1.Visible = True
  3209.         Ydcommand1.Move LrText(Index).Left + LrText(Index).Width, LrText(Index).Top
  3210.         Ydcommand1.Tag = Index
  3211.     Else
  3212.         Ydcommand1.Tag = ""
  3213.         Ydcommand1.Visible = False
  3214.     End If
  3215.     
  3216.     '[>>
  3217.     '可在此处定义其他处理动作
  3218.     '<<]
  3219.     
  3220. End Sub
  3221. Private Sub Wbkcsh()                          '录入文本框初始化
  3222.     
  3223.     Dim Int_TabIndex As Integer         'Tab焦点计数器
  3224.     
  3225.     '单据录入中文本框焦点由0开始
  3226.     LrText(0).TabIndex = 0
  3227.     
  3228.     '最大录入文本框索引值
  3229.     Max_Text_Index = Textvar(1)
  3230.     
  3231.     ReDim TextValiJudgeLock(Max_Text_Index)
  3232.     For jsqte = 0 To Max_Text_Index
  3233.         
  3234.         '判断此文本框录入索引号是否存在,如存在则对其进行初始化
  3235.         If Len(Trim(Textstr(jsqte, 1))) <> 0 Then
  3236.             
  3237.             '自动装入录入文本框和其解释标签
  3238.             If jsqte <> 0 Then
  3239.                 Load LrText(jsqte)
  3240.                 Load TsLabel(jsqte)
  3241.                 
  3242.                 '判断录入文本框是否显示
  3243.                 If Textboolean(jsqte, 4) Then
  3244.                     LrText(jsqte).Visible = True
  3245.                     TsLabel(jsqte).Visible = True
  3246.                 Else
  3247.                     LrText(jsqte).Visible = False
  3248.                     TsLabel(jsqte).Visible = False
  3249.                 End If
  3250.                 
  3251.                 '判断文本框是否可编辑
  3252.                 If Textboolean(jsqte, 5) Then
  3253.                     LrText(jsqte).Enabled = True
  3254.                 Else
  3255.                     LrText(jsqte).Enabled = False
  3256.                 End If
  3257.             End If
  3258.             
  3259.             '初始化其内容
  3260.             TextChangeLock = True
  3261.             LrText(jsqte).Text = ""
  3262.             LrText(jsqte).Tag = ""
  3263.             If Textint(jsqte, 5) <> 0 Then
  3264.                 LrText(jsqte).MaxLength = Textint(jsqte, 5)
  3265.             End If
  3266.             TextChangeLock = False
  3267.             
  3268.             '设置文本框位置及大小,并设置相应标签内容及其位置
  3269.             LrText(jsqte).Move Textint(jsqte, 13), Textint(jsqte, 12), Textint(jsqte, 11), Textint(jsqte, 10)
  3270.             TsLabel(jsqte).Caption = Textstr(jsqte, 7) & ":"
  3271.             TsLabel(jsqte).Move Textint(jsqte, 13) - TsLabel(jsqte).Width - 20, Textint(jsqte, 12) + (Textint(jsqte, 10) - TsLabel(jsqte).Height) / 2 - 30
  3272.             
  3273.         End If
  3274.         
  3275.         '将文本框有效性判断进行加锁,在文本框内容发生变化时将锁打开
  3276.         TextValiJudgeLock(jsqte) = True
  3277.         
  3278.     Next jsqte
  3279.     
  3280.     '设置文本框焦点转移顺序(前提文本焦点从0至Max_Text_Index)
  3281.     For Int_TabIndex = 0 To Max_Text_Index
  3282.         For jsqte = 0 To Max_Text_Index
  3283.             If Textint(jsqte, 14) = Int_TabIndex Then
  3284.                 LrText(jsqte).TabIndex = Int_TabIndex
  3285.             End If
  3286.         Next jsqte
  3287.     Next Int_TabIndex
  3288.     
  3289. End Sub
  3290. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  3291.     
  3292.     Dim Sqlstr As String
  3293.     Dim Findrec As New ADODB.Recordset
  3294.     
  3295.     '按帮助不进行有效性判断
  3296.     
  3297.     If TextValiLock Then
  3298.         TextValiLock = False
  3299.         TextYxxpd = True
  3300.         Exit Function
  3301.     End If
  3302.     
  3303.     '文本框内容未曾改变不进行有效性判断
  3304.     
  3305.     If TextValiJudgeLock(Index) Then
  3306.         Ydcommand1.Visible = False
  3307.         TextYxxpd = True
  3308.         Exit Function
  3309.     End If
  3310.     
  3311.     '文本框内容为空认为有效,并清空其Tag值
  3312.     
  3313.     If Trim(LrText(Index)) = "" Then
  3314.         LrText(Index).Tag = ""
  3315.         Call Wbklrwbcl(Index)
  3316.         Ydcommand1.Visible = False
  3317.         TextValiJudgeLock(Index) = True
  3318.         TextYxxpd = True
  3319.         Exit Function
  3320.     End If
  3321.     
  3322.     '[>>
  3323.     
  3324.     '可在此加入不做有效性判断的理由(参照上面程序)
  3325.     
  3326.     '<<]
  3327.     
  3328.     Select Case Textint(Index, 4)
  3329.     Case 1      '编码型
  3330.         Sqlstr = Trim(Textstr(Index, 5))
  3331.         Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  3332.         Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  3333.         If Findrec.EOF Then
  3334.             Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  3335.             LrText(Index).SetFocus
  3336.             Exit Function
  3337.         Else
  3338.             Select Case Textint(Index, 3)
  3339.             Case 0
  3340.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  3341.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  3342.                 End If
  3343.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  3344.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  3345.                 End If
  3346.             Case 1
  3347.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  3348.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  3349.                 End If
  3350.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  3351.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  3352.                 End If
  3353.             End Select
  3354.         End If
  3355.     Case 2      '日期型
  3356.         If IsDate(LrText(Index).Text) Then
  3357.             LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  3358.             If Val(Mid(LrText(Index), 1, 4)) < 1900 Then
  3359.                 LrText(Index).Text = "1900" + Mid(LrText(Index), 5, 6)
  3360.             End If
  3361.         Else
  3362.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  3363.             Call Xtxxts(Tsxx, 0, 1)
  3364.             LrText(Index).SetFocus
  3365.             Exit Function
  3366.         End If
  3367.     Case 3      '其他类型
  3368.     End Select
  3369.     
  3370.     '隐藏帮助按钮
  3371.     Ydcommand1.Visible = False
  3372.     
  3373.     '如果有效则加锁,用户不改变内容则不再进行有效性判断
  3374.     TextValiJudgeLock(Index) = True
  3375.     
  3376.     '调用文本框事后处理程序
  3377.     Call Wbklrwbcl(Index)
  3378.     
  3379.     '有效性判断通过则返回True
  3380.     TextYxxpd = True
  3381.     
  3382. End Function