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

企业管理

开发平台:

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