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

企业管理

开发平台:

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