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

企业管理

开发平台:

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