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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  3. Begin VB.Form FK_FrmFkdcl 
  4.    BackColor       =   &H00E9F4FA&
  5.    BorderStyle     =   1  'Fixed Single
  6.    Caption         =   "单据处理"
  7.    ClientHeight    =   6120
  8.    ClientLeft      =   675
  9.    ClientTop       =   720
  10.    ClientWidth     =   10185
  11.    HelpContextID   =   30401
  12.    Icon            =   "付款处理_付款单处理.frx":0000
  13.    KeyPreview      =   -1  'True
  14.    LinkTopic       =   "Form4"
  15.    MaxButton       =   0   'False
  16.    MinButton       =   0   'False
  17.    ScaleHeight     =   6120
  18.    ScaleWidth      =   10185
  19.    StartUpPosition =   1  '所有者中心
  20.    Begin VB.ComboBox Combo_Fkdlx 
  21.       ForeColor       =   &H00000000&
  22.       Height          =   300
  23.       Left            =   6420
  24.       Style           =   2  'Dropdown List
  25.       TabIndex        =   10
  26.       Top             =   1020
  27.       Width           =   1485
  28.    End
  29.    Begin VB.CommandButton Ydcommand1 
  30.       Height          =   300
  31.       Index           =   0
  32.       Left            =   7740
  33.       Picture         =   "付款处理_付款单处理.frx":1042
  34.       Style           =   1  'Graphical
  35.       TabIndex        =   9
  36.       Top             =   1530
  37.       Visible         =   0   'False
  38.       Width           =   300
  39.    End
  40.    Begin MSComctlLib.Toolbar Tlb_Action 
  41.       Align           =   1  'Align Top
  42.       Height          =   555
  43.       Left            =   0
  44.       TabIndex        =   1
  45.       Top             =   0
  46.       Width           =   10185
  47.       _ExtentX        =   17965
  48.       _ExtentY        =   979
  49.       ButtonWidth     =   820
  50.       ButtonHeight    =   926
  51.       AllowCustomize  =   0   'False
  52.       Wrappable       =   0   'False
  53.       Appearance      =   1
  54.       Style           =   1
  55.       ImageList       =   "ImageList1"
  56.       _Version        =   393216
  57.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  58.          NumButtons      =   22
  59.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  60.             Caption         =   "打印"
  61.             Key             =   "dy"
  62.             Object.ToolTipText     =   "打印当前单据或Ctrl+P"
  63.             ImageKey        =   "dy"
  64.          EndProperty
  65.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  66.             Caption         =   "预览"
  67.             Key             =   "yl"
  68.             ImageKey        =   "yl"
  69.          EndProperty
  70.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  71.             Key             =   "fgh0"
  72.             Style           =   3
  73.          EndProperty
  74.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  75.             Caption         =   "新增"
  76.             Key             =   "xz"
  77.             Object.ToolTipText     =   "新增加一张单据或F5"
  78.             ImageKey        =   "xz"
  79.          EndProperty
  80.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  81.             Caption         =   "修改"
  82.             Key             =   "xg"
  83.             Object.ToolTipText     =   "修改当前单据或F3"
  84.             ImageKey        =   "xg"
  85.          EndProperty
  86.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  87.             Caption         =   "删除"
  88.             Key             =   "sc"
  89.             Object.ToolTipText     =   "删除当前单据"
  90.             ImageKey        =   "sc"
  91.          EndProperty
  92.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  93.             Key             =   "fgh2"
  94.             Style           =   3
  95.          EndProperty
  96.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  97.             Caption         =   "保存"
  98.             Key             =   "bc"
  99.             Object.ToolTipText     =   "保存单据或F6"
  100.             ImageKey        =   "bc"
  101.          EndProperty
  102.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  103.             Caption         =   "放弃"
  104.             Key             =   "fq"
  105.             Object.ToolTipText     =   "放弃此次操作"
  106.             ImageKey        =   "fq"
  107.          EndProperty
  108.          BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  109.             Key             =   "fgh3"
  110.             Style           =   3
  111.          EndProperty
  112.          BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  113.             Caption         =   "审核"
  114.             Key             =   "shsh"
  115.             ImageKey        =   "check"
  116.          EndProperty
  117.          BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  118.             Style           =   3
  119.          EndProperty
  120.          BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  121.             Caption         =   "核销"
  122.             Key             =   "hx"
  123.             ImageKey        =   "hx"
  124.          EndProperty
  125.          BeginProperty Button14 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  126.             Object.Visible         =   0   'False
  127.             Caption         =   "弃审"
  128.             Key             =   "shqs"
  129.             ImageKey        =   "qs"
  130.          EndProperty
  131.          BeginProperty Button15 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  132.             Key             =   "fgh4"
  133.             Style           =   3
  134.          EndProperty
  135.          BeginProperty Button16 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  136.             Caption         =   "首张"
  137.             Key             =   "first"
  138.             ImageKey        =   "first"
  139.          EndProperty
  140.          BeginProperty Button17 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  141.             Caption         =   "上张"
  142.             Key             =   "prev"
  143.             ImageKey        =   "prev"
  144.          EndProperty
  145.          BeginProperty Button18 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  146.             Caption         =   "下张"
  147.             Key             =   "next"
  148.             ImageKey        =   "next"
  149.          EndProperty
  150.          BeginProperty Button19 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  151.             Caption         =   "末张"
  152.             Key             =   "last"
  153.             ImageKey        =   "last"
  154.          EndProperty
  155.          BeginProperty Button20 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  156.             Key             =   "fgh5"
  157.             Style           =   3
  158.          EndProperty
  159.          BeginProperty Button21 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  160.             Caption         =   "帮助"
  161.             Key             =   "bz"
  162.             ImageKey        =   "bz"
  163.          EndProperty
  164.          BeginProperty Button22 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  165.             Caption         =   "退出"
  166.             Key             =   "fh"
  167.             ImageKey        =   "tc"
  168.          EndProperty
  169.       EndProperty
  170.       BorderStyle     =   1
  171.    End
  172.    Begin VB.Timer Timer1 
  173.       Interval        =   1
  174.       Left            =   9690
  175.       Top             =   150
  176.    End
  177.    Begin MSComctlLib.ImageList ImageList1 
  178.       Left            =   6570
  179.       Top             =   1440
  180.       _ExtentX        =   1005
  181.       _ExtentY        =   1005
  182.       BackColor       =   -2147483643
  183.       ImageWidth      =   16
  184.       ImageHeight     =   16
  185.       MaskColor       =   12632256
  186.       _Version        =   393216
  187.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  188.          NumListImages   =   38
  189.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  190.             Picture         =   "付款处理_付款单处理.frx":13CC
  191.             Key             =   "sz"
  192.          EndProperty
  193.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  194.             Picture         =   "付款处理_付款单处理.frx":1766
  195.             Key             =   "dy"
  196.          EndProperty
  197.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  198.             Picture         =   "付款处理_付款单处理.frx":1B00
  199.             Key             =   "yl"
  200.          EndProperty
  201.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  202.             Picture         =   "付款处理_付款单处理.frx":1E9A
  203.             Key             =   "xg"
  204.          EndProperty
  205.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  206.             Picture         =   "付款处理_付款单处理.frx":2234
  207.             Key             =   "zh"
  208.          EndProperty
  209.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  210.             Picture         =   "付款处理_付款单处理.frx":25CE
  211.             Key             =   "sh"
  212.          EndProperty
  213.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  214.             Picture         =   "付款处理_付款单处理.frx":2968
  215.             Key             =   "bc"
  216.          EndProperty
  217.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  218.             Picture         =   "付款处理_付款单处理.frx":2D02
  219.             Key             =   "fq"
  220.          EndProperty
  221.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  222.             Picture         =   "付款处理_付款单处理.frx":309C
  223.             Key             =   "bz"
  224.          EndProperty
  225.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  226.             Picture         =   "付款处理_付款单处理.frx":3436
  227.             Key             =   "tc"
  228.          EndProperty
  229.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  230.             Picture         =   "付款处理_付款单处理.frx":37D0
  231.             Key             =   "bcgs"
  232.          EndProperty
  233.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  234.             Picture         =   "付款处理_付款单处理.frx":3B6A
  235.             Key             =   "mrlk"
  236.          EndProperty
  237.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  238.             Picture         =   "付款处理_付款单处理.frx":3F04
  239.             Key             =   "xsxm"
  240.          EndProperty
  241.          BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  242.             Picture         =   "付款处理_付款单处理.frx":429E
  243.             Key             =   "first"
  244.          EndProperty
  245.          BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  246.             Picture         =   "付款处理_付款单处理.frx":4638
  247.             Key             =   "prev"
  248.          EndProperty
  249.          BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  250.             Picture         =   "付款处理_付款单处理.frx":49D2
  251.             Key             =   "next"
  252.          EndProperty
  253.          BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  254.             Picture         =   "付款处理_付款单处理.frx":4D6C
  255.             Key             =   "last"
  256.          EndProperty
  257.          BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  258.             Picture         =   "付款处理_付款单处理.frx":5106
  259.             Key             =   "xx"
  260.          EndProperty
  261.          BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  262.             Picture         =   "付款处理_付款单处理.frx":54A0
  263.             Key             =   "define"
  264.          EndProperty
  265.          BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  266.             Picture         =   "付款处理_付款单处理.frx":583A
  267.             Key             =   "exec"
  268.          EndProperty
  269.          BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  270.             Picture         =   "付款处理_付款单处理.frx":5BD4
  271.             Key             =   "xz"
  272.          EndProperty
  273.          BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  274.             Picture         =   "付款处理_付款单处理.frx":5F6E
  275.             Key             =   "sc"
  276.          EndProperty
  277.          BeginProperty ListImage23 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  278.             Picture         =   "付款处理_付款单处理.frx":6308
  279.             Key             =   "sx"
  280.          EndProperty
  281.          BeginProperty ListImage24 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  282.             Picture         =   "付款处理_付款单处理.frx":66A2
  283.             Key             =   "cx"
  284.          EndProperty
  285.          BeginProperty ListImage25 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  286.             Picture         =   "付款处理_付款单处理.frx":6A3C
  287.             Key             =   "zd"
  288.          EndProperty
  289.          BeginProperty ListImage26 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  290.             Picture         =   "付款处理_付款单处理.frx":6DD6
  291.             Key             =   "dz"
  292.          EndProperty
  293.          BeginProperty ListImage27 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  294.             Picture         =   "付款处理_付款单处理.frx":7170
  295.             Key             =   "ph"
  296.          EndProperty
  297.          BeginProperty ListImage28 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  298.             Picture         =   "付款处理_付款单处理.frx":750A
  299.             Key             =   "fz"
  300.          EndProperty
  301.          BeginProperty ListImage29 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  302.             Picture         =   "付款处理_付款单处理.frx":78A4
  303.             Key             =   "dw"
  304.          EndProperty
  305.          BeginProperty ListImage30 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  306.             Picture         =   "付款处理_付款单处理.frx":7C3E
  307.             Key             =   "hf"
  308.          EndProperty
  309.          BeginProperty ListImage31 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  310.             Picture         =   "付款处理_付款单处理.frx":7FD8
  311.             Key             =   "pz"
  312.          EndProperty
  313.          BeginProperty ListImage32 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  314.             Picture         =   "付款处理_付款单处理.frx":8372
  315.             Key             =   "check"
  316.          EndProperty
  317.          BeginProperty ListImage33 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  318.             Picture         =   "付款处理_付款单处理.frx":870C
  319.             Key             =   "qs"
  320.          EndProperty
  321.          BeginProperty ListImage34 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  322.             Picture         =   "付款处理_付款单处理.frx":8AA6
  323.             Key             =   "fullcheck"
  324.          EndProperty
  325.          BeginProperty ListImage35 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  326.             Picture         =   "付款处理_付款单处理.frx":8E40
  327.             Key             =   "qq"
  328.          EndProperty
  329.          BeginProperty ListImage36 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  330.             Picture         =   "付款处理_付款单处理.frx":91DA
  331.             Key             =   "bcw"
  332.          EndProperty
  333.          BeginProperty ListImage37 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  334.             Picture         =   "付款处理_付款单处理.frx":9574
  335.             Key             =   "ye"
  336.          EndProperty
  337.          BeginProperty ListImage38 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  338.             Picture         =   "付款处理_付款单处理.frx":990E
  339.             Key             =   "hx"
  340.          EndProperty
  341.       EndProperty
  342.    End
  343.    Begin VB.TextBox LrText 
  344.       ForeColor       =   &H00000000&
  345.       Height          =   300
  346.       Index           =   0
  347.       Left            =   990
  348.       TabIndex        =   0
  349.       Text            =   "0"
  350.       Top             =   1470
  351.       Width           =   1650
  352.    End
  353.    Begin VB.Label Label2 
  354.       BackStyle       =   0  'Transparent
  355.       Caption         =   "类型:"
  356.       Height          =   165
  357.       Left            =   5910
  358.       TabIndex        =   11
  359.       Top             =   1080
  360.       Width           =   465
  361.    End
  362.    Begin VB.Label Lab_Title 
  363.       AutoSize        =   -1  'True
  364.       BackColor       =   &H80000018&
  365.       BackStyle       =   0  'Transparent
  366.       Caption         =   "单据标题自动调整"
  367.       BeginProperty Font 
  368.          Name            =   "宋体"
  369.          Size            =   15
  370.          Charset         =   134
  371.          Weight          =   700
  372.          Underline       =   0   'False
  373.          Italic          =   0   'False
  374.          Strikethrough   =   0   'False
  375.       EndProperty
  376.       ForeColor       =   &H00000000&
  377.       Height          =   300
  378.       Left            =   2730
  379.       TabIndex        =   8
  380.       Top             =   750
  381.       Width           =   2520
  382.    End
  383.    Begin VB.Label Lab_BillId 
  384.       AutoSize        =   -1  'True
  385.       BackColor       =   &H0080C0FF&
  386.       Height          =   270
  387.       Left            =   6570
  388.       TabIndex        =   7
  389.       Top             =   2190
  390.       Visible         =   0   'False
  391.       Width           =   1230
  392.    End
  393.    Begin VB.Label Lab_Djclzt 
  394.       BackColor       =   &H0000FFFF&
  395.       Caption         =   "1"
  396.       ForeColor       =   &H00808080&
  397.       Height          =   255
  398.       Left            =   7260
  399.       TabIndex        =   6
  400.       Top             =   1590
  401.       Visible         =   0   'False
  402.       Width           =   285
  403.    End
  404.    Begin VB.Label Lab_OperStatus 
  405.       BackColor       =   &H000080FF&
  406.       Caption         =   "1"
  407.       Height          =   345
  408.       Left            =   7875
  409.       TabIndex        =   5
  410.       Top             =   2130
  411.       Visible         =   0   'False
  412.       Width           =   345
  413.    End
  414.    Begin VB.Label Lab_Bill 
  415.       Appearance      =   0  'Flat
  416.       BackColor       =   &H80000005&
  417.       BackStyle       =   0  'Transparent
  418.       ForeColor       =   &H00000000&
  419.       Height          =   225
  420.       Left            =   9030
  421.       TabIndex        =   4
  422.       Top             =   6330
  423.       Width           =   735
  424.    End
  425.    Begin VB.Label Lab_Checker 
  426.       Appearance      =   0  'Flat
  427.       BackColor       =   &H80000005&
  428.       BackStyle       =   0  'Transparent
  429.       ForeColor       =   &H00000000&
  430.       Height          =   225
  431.       Left            =   7170
  432.       TabIndex        =   3
  433.       Top             =   6360
  434.       Width           =   735
  435.    End
  436.    Begin VB.Label TsLabel 
  437.       Alignment       =   1  'Right Justify
  438.       AutoSize        =   -1  'True
  439.       BackStyle       =   0  'Transparent
  440.       Caption         =   "单据号:"
  441.       Height          =   180
  442.       Index           =   0
  443.       Left            =   210
  444.       TabIndex        =   2
  445.       Top             =   1530
  446.       Width           =   765
  447.    End
  448. End
  449. Attribute VB_Name = "FK_FrmFkdcl"
  450. Attribute VB_GlobalNameSpace = False
  451. Attribute VB_Creatable = False
  452. Attribute VB_PredeclaredId = True
  453. Attribute VB_Exposed = False
  454. '***********************************************************************************************************
  455. '*    模 块 名 称 :结算单处理
  456. '*    功 能 描 述 :此功能模块主要完成单据录入、修改、删除、预览打印等。
  457. '*    程序员姓名  :张建忠
  458. '*    最后修改人  :张建忠
  459. '*    最后修改时间:2001/12/27
  460. '*    备        注:程序中所有依实际情况自定义部分均用[>>  <<]括起
  461. '*
  462. '*    1.每次调入外部功能窗体,均要加锁ChangeLock=True,窗体关闭后解锁ChangeLock=false
  463. '*                                    TextValiLock=True             TextValiLock=false
  464. '*
  465. '*    2.Lab_OperStatus 用此标签来标识单据录入状态(默认值为1) "1"-浏览 "2"-新增 "3"-修改
  466. '*
  467. '*    3.Lab_Djclzt 用此标签来标识单据处理状态(默认值为1) "1"-填制单据  "2"-查询单据列表  "3"-明细帐联查单据
  468. '*
  469. '*    4.原则:只要单据能够存盘(无论修改或新增)则其必须接受完整性及有效性规则检查
  470. '*
  471. '*    5.支持热键操作:打印:Ctrl+P 新增:F5 修改:F3 存盘:F6
  472. '***********************************************************************************************************
  473.  
  474. '[以下为根据实际情况设置变量
  475. Dim Bln_BillChange As Boolean                   '标识单据是否发生改动
  476. Dim Rec_Query As New ADODB.Recordset            '单据组查询结果动态集(保存当前单据组ID)
  477. Public Str_QueryCondi As String                 '单据组查询条件(接收单据列表传递查询条件)
  478. ']
  479. '以下为固定使用变量(单据)
  480. Dim BillCode As String                          '单据设计编码(索引号)
  481. Dim Var_Bill() As Variant                       '用来返回单据设计信息
  482. Dim ReportTitle As String                       '报表主标题
  483. Dim Tsxx As String                              '系统提示信息
  484. Dim Dyymctbl As New DY_Dyymsz                   '打印页面窗体变量
  485. '以下为固定使用变量(文本框)
  486. Dim Textvar() As Variant                        '存储变体型文本框信息
  487. Dim Textboolean() As Boolean                    '存储布尔型文本框信息
  488. Dim Textint() As Integer                        '存储整型文本框信息
  489. Dim Textstr() As String                         '存储字符型文本框信息
  490. Dim Max_Text_Index As Integer                   '最大录入文本框索引值
  491. Dim TextGroupCode As String                     '文本框录入分组编码
  492. Dim TextValiLock As Boolean                     '文本框失去焦点是否进行有效性控制判断
  493. Dim TextValiJudgeLock() As Boolean              '文本框录入有效性判断控制锁
  494. Dim TextChangeLock As Boolean                   '文本框内容变换控制锁
  495.     
  496. Private Sub Form_KeyPress(KeyAscii As Integer)      '控 制 焦 点 转 移
  497.     
  498.     Dim jdzygs As Integer
  499.     jdzygs = 50
  500.     Select Case KeyAscii
  501.     Case vbKeyReturn
  502.         If Kjjdzy(jdzygs) Then
  503.             KeyAscii = 0
  504.         End If
  505.     Case 39           '屏蔽字符"'"
  506.         KeyAscii = 0
  507.     End Select
  508.     
  509. End Sub
  510. Private Sub Form_Load()                                                        '窗 体 装 入
  511.     
  512.     '初始化各种锁值(Fixed)
  513.     Changelock = False             '网格行列改变控制锁
  514.     Gdtlock = False                '滚动条滚动控制
  515.     Yxxpdlock = True               '字段有效性判断锁
  516.     Hyxxpdlock = True              '行有效性判断锁
  517.     Wbkbhlock = False              '文本框内容改变锁
  518.     
  519.     '调入单据信息(需要修改BillCode)
  520.     BillCode = "0304"
  521.     Call Sub_ReadBillInfo(BillCode, Me, Var_Bill())
  522.     Lab_Title = Var_Bill(2)
  523.     Lab_Title.Move (Me.Width - Lab_Title.Width) / 2, 800
  524.     
  525.     '报表编码
  526.     XtReportCode = Var_Bill(5)
  527.     Load Dyymctbl
  528.     
  529.     '以下为文本框处理程序(Fixed)
  530.     TextGroupCode = Var_Bill(3)
  531.     
  532.     Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
  533.     Call Wbkcsh
  534.     
  535.     '填充付款单类型列表
  536.     Call FillCombo(Combo_Fkdlx, "Ap_Fkdlx", "", 0)
  537.     
  538.     '单据变动置为False(Fixed)
  539.     Bln_BillChange = False
  540.     
  541.     '调入数据初始化模块(Fixed)
  542.     Lab_Djclzt.Caption = Xtcdcs
  543.     Call Sjcsh(Trim(Lab_Djclzt.Caption))
  544.     
  545. End Sub
  546. Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
  547.     
  548.     '是否保存已修改单据
  549.     Dim YAnswer As Integer
  550.     If Lab_OperStatus.Caption = "2" Or Lab_OperStatus.Caption = "3" Then
  551.         Tsxx = "单据尚未保存,是否退出?"
  552.         YAnswer = Xtxxts(Tsxx, 2, 2)
  553.         If YAnswer <> 1 Then
  554.             Cancel = 1
  555.             Exit Sub
  556.         End If
  557.     End If
  558.     
  559.     '卸载打印页面窗体
  560.     Unload Dyymctbl
  561.     
  562.     '判断单据是否发生变化,并返回相应标识
  563.     If Bln_BillChange Then
  564.         Xtfhcs = "1"
  565.     Else
  566.         Xtfhcs = "0"
  567.     End If
  568.     
  569.     '用户退出时写上机日志
  570.     Security_Log "Ap_PayBill", Xtczybm, 2, False
  571.     
  572. End Sub
  573. Private Sub Sjcsh(Str_Pzclzt As String)              '数据初始化模块(根据实际情况)
  574.     Dim Sqlstr As String       '查询单据列表条件
  575.     
  576.     '[>>根据实际情况初始化
  577.     Select Case Str_Pzclzt
  578.     Case "1"   '填制单据
  579.         
  580.         '调入用户查询结果动态集
  581.         Sqlstr = "SELECT CloseBillID From RP_CloseBill  Where RPFlag='AP' And (BillItemCode = '90' OR BillItemCode = '91' OR BillItemCode = '92') And BillDate='" & Xtrq & "' ORDER BY CloseBillID"
  582.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  583.         
  584.         '新增单据
  585.         Call Sub_AddBill
  586.     Case "2"   '查询单据(单据列表)
  587.         
  588.         '填充查询单据标识
  589.         Lab_BillId.Caption = XT_BillID
  590.         Str_QueryCondi = Xtcdcsfz
  591.         
  592.         Call Sub_ShowBill
  593.         
  594.         Call Sub_OperStatus("10")
  595.         
  596.         '调入用户查询结果动态集,并定位该单据
  597.         Sqlstr = "SELECT CloseBillID From RP_CloseBill a " & Str_QueryCondi & " ORDER BY CloseBillID"
  598.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  599.         Rec_Query.Find "CloseBillID=" & Val(Lab_BillId.Caption)
  600.     Case "3"   '明细帐联查单据
  601.         '设置工具条显示
  602.         With Tlb_Action
  603.             .Buttons("xz").Enabled = False             '新增
  604.             .Buttons("xg").Enabled = False             '修改
  605.             .Buttons("sc").Enabled = False             '删除
  606.             .Buttons("fgh0").Enabled = False           '分隔行
  607.             .Buttons("bc").Enabled = False             '保存
  608.             .Buttons("fq").Enabled = False             '放弃
  609.             .Buttons("shsh").Enabled = False           '审核
  610.             .Buttons("hx").Enabled = False             '核销
  611.             .Buttons("fgh2").Enabled = False           '分隔行
  612.             .Buttons("first").Enabled = False          '首张
  613.             .Buttons("prev").Enabled = False           '上张
  614.             .Buttons("next").Enabled = False           '下张
  615.             .Buttons("last").Enabled = False           '末张
  616.             .Buttons("fgh5").Enabled = False           '分割行
  617.         End With
  618.         
  619.         '填充明细联查单据标识
  620.         Lab_BillId.Caption = XT_BillID
  621.             
  622.         Call Sub_ShowBill
  623.         
  624.         '设置操作状态为浏览
  625.         Lab_OperStatus.Caption = "1"
  626.         
  627.         '录入文本框
  628.         For Jsqte = Max_Text_Index To 0 Step -1
  629.             LrText(Jsqte).Enabled = False
  630.         Next Jsqte
  631.         
  632.         '置单据列表框为False
  633.         Combo_Fkdlx.Enabled = False
  634.         
  635.     End Select
  636.     
  637.     '<<]
  638.     
  639. End Sub
  640. Private Sub Sub_ShowBill()                                          '根据当前单据ID显示整张单据内容
  641.     
  642.     '过程默认参数为当前窗体中单据ID:Lab_BillID
  643.     Dim Sqlstr As String                           '临时使用字符串
  644.     Dim RecTemp As New ADODB.Recordset             '临时使用动态集
  645.     Dim Jsqte As Long                              '临时计数器
  646.     
  647.     '本张单据查询字符串
  648.     Sqlstr = "Select * From Ap_V_CloseBill Where RPFlag='AP' And CloseBillID=" & Val(Lab_BillId.Caption)
  649.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  650.     
  651.     With RecTemp
  652.         If Not .EOF Then
  653.             '[>>显示单据
  654.             TextChangeLock = True     '文本框加锁
  655.                  
  656.                  Dim Int_Modulus As Integer                '金额系数(针对退款单)
  657.                  Select Case .Fields("BillItemCode")
  658.                     Case "90"  '付款
  659.                       Int_Modulus = 1
  660.                       Combo_Fkdlx.ListIndex = 0
  661.                     Case "91"  '预付款
  662.                       Int_Modulus = 1
  663.                       Combo_Fkdlx.ListIndex = 1
  664.                     Case "92"  '退款单
  665.                       Combo_Fkdlx.ListIndex = 2
  666.                       Int_Modulus = -1
  667.                  End Select
  668.                              
  669.                  LrText(0).Text = Trim(.Fields("BillCode"))                               '单据编号
  670.                  
  671.                  LrText(1).Text = Format(.Fields("BillDate"), "yyyy-mm-dd")               '单据日期
  672.                  
  673.                  LrText(2).Tag = Trim(.Fields("PSCode"))                                  '供应商编码
  674.                  LrText(2).Text = Trim(.Fields("SupplierName") & "")                      '供应商名称
  675.                  
  676.                                 
  677.                  LrText(3).Tag = Trim(.Fields("SScode") & "")                             '结算方式编码
  678.                  LrText(3).Text = Trim(.Fields("SSName") & "")                            '结算方式名称
  679.                  
  680.                  
  681.                  LrText(4).Text = Trim(.Fields("AccCode") & "")                           '结算科目
  682.                  
  683.                  LrText(5).Tag = Trim(.Fields("ForeignCurrCode") & "")                    '原币编码
  684.                  LrText(5).Text = Trim(.Fields("ForeignCurrName") & "")                   '原币名称
  685.                  
  686.                  LrText(6).Text = .Fields("AccRate")                                      '记帐汇率
  687.                  LrText(7).Text = .Fields("Ybssje") * Int_Modulus                         '原币金额
  688.                  
  689.                  LrText(8).Text = Trim(.Fields("BankBillNo") & "")                        '银行票号
  690.                  LrText(9).Text = Trim(.Fields("BankCode") & "")                          '银行帐号
  691.                  
  692.                  LrText(10).Tag = Trim(.Fields("DeptCode") & "")                          '部门编码
  693.                  LrText(10).Text = Trim(.Fields("DeptName") & "")                         '部门名称
  694.                  
  695.                  LrText(11).Tag = Trim(.Fields("PersonCode") & "")                        '经办人编码
  696.                  LrText(11).Text = Trim(.Fields("PersonName") & "")                       '经办人名称
  697.                  
  698.                  LrText(12).Text = Trim(.Fields("Digest") & "")                           '摘要
  699.                  
  700.                  LrText(13).Text = Trim(.Fields("Maker") & "")                            '制单人
  701.                  LrText(14).Text = Trim(.Fields("Checker") & "")                          '审核人
  702.             TextChangeLock = False    '文本框解锁
  703.             '<<]
  704.         End If
  705.     End With
  706.     
  707.     '设置审核弃审按钮状态  ****(如果通过应付明细帐进行明细查询时审核和核销按钮进行灰化处理)****
  708.     If Xtcdcs <> "3" Then
  709.         Call Sub_CheckStatus
  710.     End If
  711.     
  712. End Sub
  713. Private Sub Tlb_Action_ButtonClick(ByVal Button As MSComctlLib.Button)             '用户点击工具条
  714.     
  715.     '屏蔽文本框,下拉组合框有效性判断
  716.     Valilock = True
  717.     
  718.     '屏蔽网格失去焦点产生的有效性判断
  719.     Changelock = True
  720.     
  721.     Select Case Button.Key
  722.     Case "yl"                                            '预 览
  723.         BillTextPrint Lab_Title, LrText, TextGroupCode, XtReportCode, False
  724.     Case "dy"                                            '打 印
  725.         Dim yhAnswer As Integer      '打印提示
  726.         '用户确认是否打印单据
  727.         Tsxx = "请确认是否打印当前单据?"
  728.         yhAnswer = Xtxxts(Tsxx, 2, 2)
  729.         If yhAnswer = 2 Then
  730.             Exit Sub
  731.         End If
  732.         BillTextPrint Lab_Title, LrText, TextGroupCode, XtReportCode, True
  733.     Case "xz"                                            '新 增
  734.         Call Sub_AddBill
  735.     Case "xg"                                            '修 改
  736.         Call Sub_EditBill
  737.     Case "sc"                                            '删 除
  738.         Call Sub_DeleteBill
  739.     Case "bc"                                            '保 存
  740.         Call Sub_SaveBill
  741.     Case "fq"                                            '放 弃
  742.         Call Sub_AbandonBill
  743.     Case "shsh"                                          '审 核
  744.         Call Sub_CheckBill
  745.     Case "hx"                                            '核 销
  746.         Call Sub_CancelBill
  747.     Case "first"                                         '首 张
  748.         Call Sub_First
  749.     Case "prev"                                          '上 张
  750.         Call Sub_Prev
  751.     Case "next"                                          '下 张
  752.         Call Sub_Next
  753.     Case "last"                                          '末 张
  754.         Call Sub_Last
  755.     Case "bz"                                            '帮 助
  756.         Call F1bz
  757.     Case "fh"                                            '退 出
  758.         Unload Me
  759.     End Select
  760.     
  761.     '解 锁
  762.     Valilock = False
  763.     Changelock = False
  764.     TextChangeLock = False
  765.     
  766. End Sub
  767. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)     '支持热键操作
  768.     
  769.     Select Case KeyCode
  770.     Case vbKeyF5          '增加单据
  771.         If Tlb_Action.Buttons("xz").Enabled And Tlb_Action.Buttons("xz").Visible Then
  772.             Call Sub_AddBill
  773.         End If
  774.     Case vbKeyF3          '修改单据
  775.         If Tlb_Action.Buttons("xg").Enabled And Tlb_Action.Buttons("xg").Visible Then
  776.             Call Sub_EditBill
  777.         End If
  778.     Case vbKeyF6          '保存单据
  779.         If Tlb_Action.Buttons("bc").Enabled And Tlb_Action.Buttons("bc").Visible Then
  780.             Call Sub_SaveBill
  781.         End If
  782.     End Select
  783.     
  784. End Sub
  785. Private Sub Sub_OperStatus(Str_Status As String)                 '工具条依据不同状态所进行的变化
  786.     
  787.     With Tlb_Action
  788.         Select Case Str_Status
  789.         Case "10"   '浏览((列表)调入单据处理时的进入状态、(列表)新增状态时放弃录入)
  790.             '工具条
  791.             .Buttons("dy").Enabled = True       '打印
  792.             .Buttons("yl").Enabled = True       '预览
  793.             .Buttons("xz").Enabled = True       '新增
  794.             .Buttons("xg").Enabled = True       '修改
  795.             .Buttons("sc").Enabled = True       '删除
  796.             .Buttons("bc").Enabled = False      '保存
  797.             .Buttons("fq").Enabled = False      '放弃
  798.             .Buttons("first").Enabled = True    '首张
  799.             .Buttons("prev").Enabled = True     '上张
  800.             .Buttons("next").Enabled = True     '下张
  801.             .Buttons("last").Enabled = True     '末张
  802.             .Buttons("bz").Enabled = True       '帮助
  803.             .Buttons("fh").Enabled = True       '退出
  804.             
  805.             '设置审核弃审按钮状态
  806.             Call Sub_CheckStatus
  807.             
  808.             '设置文本框录入状态
  809.             Call Sub_LrtextStatus(False)
  810.             
  811.             '置单据列表框为False
  812.             Combo_Fkdlx.Enabled = False
  813.             
  814.         Case "20"   '新增单据((录入)新增一张单据 、(列表)新增一张单据)
  815.             '工具条
  816.             .Buttons("dy").Enabled = False      '打印
  817.             .Buttons("yl").Enabled = False      '预览
  818.             .Buttons("xz").Enabled = False      '新增
  819.             .Buttons("xg").Enabled = False      '修改
  820.             .Buttons("sc").Enabled = False      '删除
  821.             .Buttons("bc").Enabled = True       '保存
  822.             .Buttons("fq").Enabled = True       '放弃
  823.             .Buttons("shsh").Enabled = False    '审核
  824.             .Buttons("hx").Enabled = False      '弃审
  825.             .Buttons("first").Enabled = False   '首张
  826.             .Buttons("prev").Enabled = False    '上张
  827.             .Buttons("next").Enabled = False    '下张
  828.             .Buttons("last").Enabled = False    '末张
  829.             .Buttons("bz").Enabled = True       '帮助
  830.             .Buttons("fh").Enabled = True       '退出
  831.             
  832.             '设置文本框录入状态
  833.             Call Sub_LrtextStatus(True)
  834.             
  835.             '置单据列表框为True
  836.             Combo_Fkdlx.Enabled = True
  837.             
  838.         Case "30"   '修改((录入)调入修改功能、(列表)调入修改功能)
  839.             '工具条
  840.             .Buttons("dy").Enabled = False      '打印
  841.             .Buttons("yl").Enabled = False      '预览
  842.             .Buttons("xz").Enabled = False      '新增
  843.             .Buttons("xg").Enabled = False      '修改
  844.             .Buttons("sc").Enabled = False      '删除
  845.             .Buttons("bc").Enabled = True       '保存
  846.             .Buttons("fq").Enabled = True       '放弃
  847.             .Buttons("shsh").Enabled = False    '审核
  848.             .Buttons("hx").Enabled = False      '弃审
  849.             .Buttons("first").Enabled = False   '首张
  850.             .Buttons("prev").Enabled = False    '上张
  851.             .Buttons("next").Enabled = False    '下张
  852.             .Buttons("last").Enabled = False    '末张
  853.             .Buttons("bz").Enabled = True       '帮助
  854.             .Buttons("fh").Enabled = True       '退出
  855.             
  856.             '设置文本框录入状态
  857.             Call Sub_LrtextStatus(True)
  858.             
  859.             '置单据列表框为True
  860.             Combo_Fkdlx.Enabled = True
  861.         End Select
  862.     End With
  863.     
  864. End Sub
  865. Private Sub Sub_LrtextStatus(TextEnabled As Boolean)                            '设置录入文本框状态
  866.     
  867.     '录入文本框状态设置
  868.     If TextEnabled Then
  869.         For Jsqte = Max_Text_Index To 0 Step -1
  870.             '判断文本框是否可编辑
  871.             If Textboolean(Jsqte, 5) Then
  872.                 LrText(Jsqte).Enabled = True
  873.             Else
  874.                 LrText(Jsqte).Enabled = False
  875.             End If
  876.         Next Jsqte
  877.     Else
  878.         For Jsqte = Max_Text_Index To 0 Step -1
  879.             LrText(Jsqte).Enabled = False
  880.         Next Jsqte
  881.     End If
  882.     
  883. End Sub
  884. Private Sub Sub_CheckStatus()                                       '设置审核弃审按钮状态(亦可设置其他动作按钮状态)
  885.     
  886.     '根据当前单据状态来确定审核弃审按钮状态
  887.     If Trim(LrText(13).Text) <> "" And Trim(LrText(14).Text) = "" Then
  888.         Tlb_Action.Buttons("shsh").Enabled = True      '审核
  889.     Else
  890.         Tlb_Action.Buttons("shsh").Enabled = False   '审核
  891.     End If
  892.     If Trim(LrText(13).Text) <> "" And Trim(LrText(14).Text) <> "" Then
  893.         Tlb_Action.Buttons("hx").Enabled = True      '核销
  894.     Else
  895.         Tlb_Action.Buttons("hx").Enabled = False     '核销
  896.     End If
  897.     
  898. End Sub
  899. Private Sub Sub_AddBill()                                                '新增一张单据
  900.     
  901.     Dim RecTemp As New ADODB.Recordset            '临时使用动态集
  902.     Dim Jsqte As Long                             '临时计数器
  903.     
  904.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  905.     If Not Security_Log("Ap_PayBill_Edit", Xtczybm, 1, True) Then
  906.         Exit Sub
  907.     End If
  908.     
  909.     '设置操作状态为新增(Fixed)
  910.     Lab_OperStatus.Caption = "2"
  911.     
  912.     '设置工具条状态(Fixed)
  913.     Call Sub_OperStatus("20")
  914.     
  915.     '清空VouchID(Fixed)
  916.     Lab_BillId.Caption = ""
  917.     
  918.     '录入文本框清除内容
  919.     For Jsqte = Max_Text_Index To 0 Step -1
  920.         LrText(Jsqte).Tag = ""
  921.         LrText(Jsqte).Text = ""
  922.     Next Jsqte
  923.     
  924.     '[>>显示制单人,清空审核人,此处还可以设置录入默认值如自动生成单据号、默认单据录入日期注意加锁
  925.     LrText(13).Text = Xtczy
  926.     LrText(14).Text = ""
  927.     
  928.     '设置订单日期默认为系统业务日期,默认币别为本位币
  929.     TextChangeLock = True
  930.         LrText(1).Text = Xtrq
  931.         LrText(5).Text = XtSCurrName
  932.         LrText(5).Tag = XtSCurrCode
  933.         LrText(6).Text = 1
  934.     TextChangeLock = False
  935.     
  936.     '读取最新的单据编码
  937.     LrText(0).Text = CreatBillCode(BillCode, False)
  938.     
  939.     '<<]
  940.     
  941.     '让第一个录入项得到焦点(Fixed)
  942.     On Error Resume Next
  943.     LrText(1).SetFocus
  944.     
  945. End Sub
  946. Private Sub Sub_EditBill()                                                '修改一张单据
  947.     
  948.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  949.     
  950.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  951.     If Not Security_Log("Ap_PayBill_Edit", Xtczybm, 1, True) Then
  952.         Exit Sub
  953.     End If
  954.     
  955.     '非有效单据不予进行修改动作
  956.     If Val(Lab_BillId.Caption) = 0 Then
  957.         Exit Sub
  958.     End If
  959.     
  960.     '判断当前单据是否允许修改
  961.     If Not Fun_AllowEdit Then
  962.         Exit Sub
  963.     End If
  964.     
  965.     '设置操作状态为修改
  966.     Lab_OperStatus.Caption = "3"
  967.     
  968.     '设置工具条状态
  969.     Call Sub_OperStatus("30")
  970.     
  971.     '显示制单人
  972.     LrText(13).Text = Xtczy
  973.     
  974. End Sub
  975. Private Sub Sub_DeleteBill()                                               '删除当前单据
  976.     
  977.     Dim YAnswer As Integer               '确认是否删除当前单据
  978.     Dim Jsqte As Long                    '临时使用计数器
  979.     
  980.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  981.     If Not Security_Log("Ap_PayBill_Edit", Xtczybm, 1, True) Then
  982.         Exit Sub
  983.     End If
  984.     
  985.     '非有效单据不予进行删除动作
  986.     If Val(Lab_BillId.Caption) = 0 Then
  987.         Exit Sub
  988.     End If
  989.     
  990.     Tsxx = "请确认是否删除当前单据?"
  991.     YAnswer = Xtxxts(Tsxx, 2, 2)
  992.     
  993.     If YAnswer = 1 Then
  994.         
  995.         '判断当前单据是否允许删除
  996.         If Not Fun_AllowEdit Then
  997.             Exit Sub
  998.         End If
  999.         
  1000.         '进行事务处理
  1001.         On Error GoTo Swcwcl
  1002.         Cw_DataEnvi.DataConnect.BeginTrans
  1003.         
  1004.         '1.删除单据所有内容
  1005.         Cw_DataEnvi.DataConnect.Execute ("Delete RP_CloseBill Where CloseBillID=" & Val(Lab_BillId.Caption))
  1006.         Cw_DataEnvi.DataConnect.CommitTrans
  1007.         
  1008.         '标识单据发生改动
  1009.         Bln_BillChange = True
  1010.         
  1011.         '单据ID置0
  1012.         Lab_BillId.Caption = 0
  1013.     Else
  1014.         Exit Sub
  1015.     End If
  1016.     
  1017.     '删除单据后重置状态
  1018.     
  1019.     '1.显示下一张单据
  1020.     Call Sub_Next
  1021.     
  1022.     '2.如果无下一张单据则搜索上一张单据
  1023.     If Val(Lab_BillId.Caption) = 0 Then
  1024.         Call Sub_Prev
  1025.     End If
  1026.     
  1027.     '3.如无单据则置单据为空状态
  1028.     If Val(Lab_BillId.Caption) = 0 Then
  1029.         '清除录入文本框
  1030.         For Jsqte = Max_Text_Index To 0 Step -1
  1031.             LrText(Jsqte).Tag = ""
  1032.             LrText(Jsqte).Text = ""
  1033.         Next Jsqte
  1034.         
  1035.         '设置操作状态为浏览
  1036.         Lab_OperStatus = "1"
  1037.         Call Sub_OperStatus("10")
  1038.     End If
  1039.     
  1040.     Rec_Query.Requery
  1041.     Rec_Query.Find "CloseBillID=" & Val(Lab_BillId.Caption)
  1042.     Exit Sub
  1043. Swcwcl:          '单据删除时出现错误
  1044.     Cw_DataEnvi.DataConnect.RollbackTrans
  1045.     Tsxx = "单据删除过程中出现未知错误,程序自动恢复保存前状态!"
  1046.     Call Xtxxts(Tsxx, 0, 1)
  1047.     Exit Sub
  1048. End Sub
  1049. Private Sub Sub_AbandonBill()                                              '放弃对当前单据的操作
  1050.     
  1051.     Dim Jsqte As Long                    '临时使用计数器
  1052.     
  1053.     '如果单据有效则重新显示当前单据,置单据为空状态
  1054.     If Not Rec_Query.EOF Then
  1055.         Lab_BillId.Caption = Rec_Query.Fields("CloseBillID")
  1056.         Call Sub_ShowBill
  1057.     Else
  1058.         '单据ID置为0
  1059.         Lab_BillId.Caption = 0
  1060.         
  1061.         '清除录入文本框
  1062.         For Jsqte = Max_Text_Index To 0 Step -1
  1063.             LrText(Jsqte).Tag = ""
  1064.             LrText(Jsqte).Text = ""
  1065.         Next Jsqte
  1066.     End If
  1067.     
  1068.     '设置操作状态为浏览
  1069.     Lab_OperStatus = "1"
  1070.     Call Sub_OperStatus("10")
  1071.     
  1072. End Sub
  1073. Private Function Sub_SaveBill() As Boolean                                   '保 存 单 据
  1074.     
  1075.     Dim RecTemp As New ADODB.Recordset                    '临时使用动态集
  1076.     Dim Rec_Bill As New ADODB.Recordset                   '单据表动态集
  1077.     Dim Jsqte As Integer                                  '临时计数器
  1078.     
  1079.     Dim Int_Kjyear As Integer                             '会计年度
  1080.     Dim Int_Period As Integer                             '会计期间
  1081.     Dim Bln_ConVertFlag As Boolean                        '币种折算方式
  1082.     Dim Dbl_AccRate As Double                             '币种记帐汇率
  1083.     Dim Dbl_Bbje As Double                                '本币金额
  1084.     Dim Int_Modulus As Integer                            '金额系数(针对退款单)
  1085.     
  1086.     Sub_SaveBill = False
  1087.     
  1088.     '一.============先对单据内容进行有效性判断==============='
  1089.     
  1090.     '先进行字段不能为空或不能为零有效性判断(Fixed)
  1091.     For Jsqte = 0 To Max_Text_Index
  1092.         If Textint(Jsqte, 8) = 1 Then     '字段不能为空
  1093.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  1094.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  1095.                 Call Xtxxts(Tsxx, 0, 1)
  1096.                 LrText(Jsqte).SetFocus
  1097.                 Exit Function
  1098.             End If
  1099.         Else
  1100.             If Textint(Jsqte, 8) = 2 Then   '字段不能为零
  1101.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  1102.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  1103.                     Call Xtxxts(Tsxx, 0, 1)
  1104.                     LrText(Jsqte).SetFocus
  1105.                     Exit Function
  1106.                 End If
  1107.             End If
  1108.         End If
  1109.     Next Jsqte
  1110.     
  1111.     '对需要进行事后判断的文本框录入内容进行有效性判断 (Fixed)
  1112.     For Jsqte = 0 To Max_Text_Index
  1113.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  1114.             If Not TextYxxpd(Jsqte) Then
  1115.                 Exit Function
  1116.             End If
  1117.         End If
  1118.     Next Jsqte
  1119.     
  1120.     '[>>
  1121.     
  1122.     '可在此区域写入其他对单据表头内容的有效性判断,具体格式参照如下
  1123.     
  1124.     '1.判断单据日期是否有效,如有效同时记录会计年度和会计期间
  1125.     If Not Fun_GetPeriod(Trim(LrText(1).Text), Int_Kjyear, Int_Period) Then
  1126.         LrText(1).SetFocus
  1127.         Exit Function
  1128.     End If
  1129.     
  1130.      '2.如果用户选择币种为本位币则汇率必须为1,否则汇率不能为零
  1131.     If Trim(LrText(5).Tag) <> XtSCurrCode Then
  1132.        If Val(LrText(6).Text) = 0 Then
  1133.           Tsxx = "汇率不能为零!"
  1134.           Call Xtxxts(Tsxx, 0, 1)
  1135.           LrText(6).SetFocus
  1136.           Exit Function
  1137.        End If
  1138.     Else
  1139.        LrText(6).Text = 1
  1140.     End If
  1141.     
  1142.     '计算本币金额
  1143.     Call Sub_GetAccRate(LrText(5).Tag, Bln_ConVertFlag, Dbl_AccRate)
  1144.     
  1145.     If Bln_ConVertFlag Then
  1146.        Dbl_Bbje = Val(Format(Val(LrText(7).Text) / Val(LrText(6).Text), "##." + String(Xtjexsws, "0")))
  1147.     Else
  1148.        Dbl_Bbje = Val(Format(Val(LrText(7).Text) * Val(LrText(6).Text), "##." + String(Xtjexsws, "0")))
  1149.     End If
  1150.     
  1151.     '<<]
  1152.     
  1153.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  1154.     
  1155.     '对存盘进行事务处理(Fixed)
  1156.     On Error GoTo Swcwcl
  1157.     Cw_DataEnvi.DataConnect.BeginTrans
  1158.     
  1159.     '判断单据状态以进行不同处理
  1160.     
  1161.     '1.先对单据主表进行处理
  1162.     If Trim(Lab_OperStatus) = "2" Then
  1163.         '新增单据
  1164.         
  1165.         '1.对于某些单据号自动生成的单据则可在此处自动生成
  1166.         LrText(0).Text = CreatBillCode(BillCode, True)
  1167.         
  1168.         '2.开始存盘
  1169.         
  1170.         '打开单据表动态集
  1171.         If Rec_Bill.State = 1 Then Rec_Bill.Close
  1172.         Rec_Bill.Open "Select * From RP_CloseBill Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1173.         With Rec_Bill
  1174.             .AddNew
  1175.             .Fields("RPFlag") = "AP"                                                                     '应付帐标识
  1176.             .Fields("CloseBillId") = CreatBillID(BillCode)                                               '单据ID
  1177.              Select Case Combo_Fkdlx.ListIndex                                                           '结算单类型
  1178.                Case 0      '付款
  1179.                  Int_Modulus = 1
  1180.                  .Fields("BillItemCode") = "90"
  1181.                Case 1      '预付款
  1182.                  Int_Modulus = 1
  1183.                  .Fields("BillItemCode") = "91"
  1184.                Case 2      '退款单
  1185.                  Int_Modulus = -1
  1186.                  .Fields("BillItemCode") = "92"
  1187.              End Select
  1188.             .Fields("BillCode") = Trim(LrText(0).Text)                                                   '单据号
  1189.             .Fields("BillDate") = CDate(LrText(1).Text)                                                  '单据日期
  1190.             .Fields("Kjyear") = Int_Kjyear                                                               '会计年度
  1191.             .Fields("Period") = Int_Period                                                               '会计期间
  1192.             .Fields("PSCode") = Trim(LrText(2).Tag)                                                      '供应商编码
  1193.             .Fields("SScode") = Trim(LrText(3).Tag)                                                      '结算方式
  1194.             .Fields("AccCode") = Trim(LrText(4).Text)                                                    '结算科目
  1195.             If Combo_Fkdlx.ListIndex = 1 Then
  1196.                 .Fields("AccCodeArAp") = Fun_InputCodeSupplier(LrText(2).Tag, 1)                         '预付帐款科目
  1197.             Else
  1198.                 .Fields("AccCodeArAp") = Fun_InputCodeSupplier(LrText(2).Tag, 0)                         '应付帐款科目
  1199.             End If
  1200.             .Fields("ForeignCurrCode") = Trim(LrText(5).Tag)                                             '原币编码
  1201.             .Fields("AccRate") = Val(LrText(6).Text)                                                     '记帐汇率
  1202.             .Fields("YbSsJe") = Val(LrText(7).Text) * Int_Modulus                                        '原币金额
  1203.             .Fields("BbSsje") = Dbl_Bbje * Int_Modulus                                                   '本币金额
  1204.             .Fields("BankBillNo") = Trim(LrText(8).Text)                                                 '银行票号
  1205.             .Fields("BankCode") = Trim(LrText(9).Tag)                                                    '银行帐号
  1206.             .Fields("DeptCode") = Trim(LrText(10).Tag)                                                   '部门
  1207.             .Fields("PersonCode") = Trim(LrText(11).Tag)                                                 '经办人
  1208.             .Fields("Digest") = Trim(LrText(12).Text)                                                    '摘要
  1209.             .Fields("Maker") = Trim(LrText(13).Text)                                                     '制单人
  1210.             .Update
  1211.             
  1212.             '系统读出单据ID写入Lab_BillID
  1213.             Lab_BillId.Caption = .Fields("CloseBillID")
  1214.         End With
  1215.     Else
  1216.         '修改单据
  1217.         
  1218.         '打开单据表动态集
  1219.         If Rec_Bill.State = 1 Then Rec_Bill.Close
  1220.         Rec_Bill.Open "Select * From RP_CloseBill  Where CloseBillID=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1221.         With Rec_Bill
  1222.             .Fields("BillDate") = CDate(LrText(1).Text)                                                  '单据日期
  1223.             .Fields("Kjyear") = Int_Kjyear                                                               '会计年度
  1224.             .Fields("Period") = Int_Period                                                               '会计期间
  1225.             Select Case Combo_Fkdlx.ListIndex                                                            '结算单类型
  1226.                Case 0      '付款
  1227.                  Int_Modulus = 1
  1228.                  .Fields("BillItemCode") = "90"
  1229.                Case 1      '预付款
  1230.                  Int_Modulus = 1
  1231.                  .Fields("BillItemCode") = "91"
  1232.                Case 2      '退款单
  1233.                  Int_Modulus = -1
  1234.                  .Fields("BillItemCode") = "92"
  1235.              End Select
  1236.             .Fields("PSCode") = Trim(LrText(2).Tag)                                                      '供应商编码
  1237.             .Fields("SScode") = Trim(LrText(3).Tag)                                                      '结算方式
  1238.             .Fields("AccCode") = Trim(LrText(4).Text)                                                    '结算科目
  1239.             If Combo_Fkdlx.ListIndex = 1 Then
  1240.                 .Fields("AccCodeArAp") = Fun_InputCodeSupplier(LrText(2).Tag, 1)                         '预付帐款科目
  1241.             Else
  1242.                 .Fields("AccCodeArAp") = Fun_InputCodeSupplier(LrText(2).Tag, 0)                         '应付帐款科目
  1243.             End If
  1244.             .Fields("ForeignCurrCode") = Trim(LrText(5).Tag)                                             '原币编码
  1245.             .Fields("AccRate") = Val(LrText(6).Text)                                                     '记帐汇率
  1246.             .Fields("YbSsJe") = Val(LrText(7).Text) * Int_Modulus                                        '原币金额
  1247.             .Fields("BbSsje") = Dbl_Bbje * Int_Modulus                                                   '本币金额
  1248.             .Fields("BankBillNo") = Trim(LrText(8).Text)                                                 '银行票号
  1249.             .Fields("BankCode") = Trim(LrText(9).Tag)                                                    '银行帐号
  1250.             .Fields("DeptCode") = Trim(LrText(10).Tag)                                                   '部门
  1251.             .Fields("PersonCode") = Trim(LrText(11).Tag)                                                 '经办人
  1252.             .Fields("Digest") = Trim(LrText(12).Text)                                                    '摘要
  1253.             .Fields("Maker") = Trim(LrText(13).Text)                                                     '制单人
  1254.             .Update
  1255.         End With
  1256.     End If
  1257.     
  1258.     Cw_DataEnvi.DataConnect.CommitTrans
  1259.     
  1260.     Sub_SaveBill = True
  1261.     Tsxx = "单据存盘完毕! 单据号:" & Trim(LrText(0).Text)
  1262.     Call Xtxxts(Tsxx, 0, 4)
  1263.     
  1264.     '标识单据发生改动
  1265.     Bln_BillChange = True
  1266.     
  1267.     '设置单据改变后的状态
  1268.     Lab_OperStatus = "1"
  1269.     Call Sub_OperStatus("10")
  1270.     Rec_Query.Requery
  1271.     Rec_Query.Find "CloseBillID=" & Val(Lab_BillId.Caption)
  1272.     Exit Function
  1273. Swcwcl:       '数据存盘时出现错误
  1274.     Cw_DataEnvi.DataConnect.RollbackTrans
  1275.     Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  1276.     Call Xtxxts(Tsxx, 0, 1)
  1277.     Exit Function
  1278.     
  1279. End Function
  1280. '选择首张,上张,下张,末张(此4个过程只需用您的单据ID字段名替换"CloseBillID"即可)
  1281. Private Sub Sub_First()             '首 张
  1282.     
  1283.     With Rec_Query
  1284.         If .RecordCount = 0 Then
  1285.             Exit Sub
  1286.         End If
  1287.         .MoveFirst
  1288.         Lab_BillId.Caption = .Fields("CloseBillID")
  1289.         Call Sub_ShowBill
  1290.     End With
  1291.     
  1292. End Sub
  1293. Private Sub Sub_Prev()             '上 张
  1294.     
  1295.     With Rec_Query
  1296.         If .RecordCount = 0 Then
  1297.             Exit Sub
  1298.         End If
  1299.         If Not .BOF Then
  1300.             .MovePrevious
  1301.         End If
  1302.         
  1303.         If Not .BOF Then
  1304.             Lab_BillId.Caption = .Fields("CloseBillID")
  1305.         Else
  1306.             .MoveNext
  1307.         End If
  1308.         
  1309.         Call Sub_ShowBill
  1310.     End With
  1311.     
  1312. End Sub
  1313. Private Sub Sub_Next()             '下 张
  1314.     
  1315.     With Rec_Query
  1316.         If .RecordCount = 0 Then
  1317.             Exit Sub
  1318.         End If
  1319.         If Not .EOF Then
  1320.             .MoveNext
  1321.         End If
  1322.         
  1323.         If Not .EOF Then
  1324.             Lab_BillId.Caption = .Fields("CloseBillID")
  1325.         Else
  1326.             .MovePrevious
  1327.         End If
  1328.         
  1329.         Call Sub_ShowBill
  1330.     End With
  1331.     
  1332. End Sub
  1333. Private Sub Sub_Last()              '末 张
  1334.     
  1335.     With Rec_Query
  1336.         If .RecordCount = 0 Then
  1337.             Exit Sub
  1338.         End If
  1339.         .MoveLast
  1340.         Lab_BillId.Caption = .Fields("CloseBillID")
  1341.         Call Sub_ShowBill
  1342.     End With
  1343.     
  1344. End Sub
  1345.     
  1346. '[>>===================以下为根据实际业务需要自定义过程区域=============================<<]
  1347. '审核,弃审
  1348. Private Sub Sub_CheckBill()             '审 核
  1349.     '[>>
  1350.     '此处可以写入禁止单据审核的理由
  1351.     '<<]
  1352.         
  1353.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  1354.     If Not Security_Log("Ap_PayBill_Check", Xtczybm, 1, True) Then
  1355.         Exit Sub
  1356.     End If
  1357.         
  1358.     If Fun_CheckCloseBill(Val(Lab_BillId.Caption)) Then
  1359.     
  1360.         '写入系统操作员
  1361.         LrText(14).Text = Xtczy
  1362.         
  1363.         '设置审核弃审按钮状态
  1364.         Call Sub_CheckStatus
  1365.         
  1366.         '标识单据发生变化
  1367.         Bln_BillChange = True
  1368.     End If
  1369. End Sub
  1370. Private Function Fun_AllowEdit() As Boolean                      '判断当前单据是否允许编辑或删除
  1371.     
  1372.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  1373.     Fun_AllowEdit = False
  1374.     Sqlstr = "Select Checker From RP_CloseBill Where CloseBillID=" & Val(Lab_BillId.Caption)
  1375.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1376.     With RecTemp
  1377.         If Not .EOF Then
  1378.             If Trim(.Fields("Checker") & "") <> "" Then
  1379.                 Tsxx = "该单据已审核确认,不能修改或删除!"
  1380.                 Call Xtxxts(Tsxx, 0, 4)
  1381.                 Exit Function
  1382.             End If
  1383.         End If
  1384.     End With
  1385.     Fun_AllowEdit = True
  1386.     
  1387. End Function
  1388. Private Sub Combo_Fkdlx_Click()             '点击收款单类型下拉框
  1389.    Select Case Combo_Fkdlx.ListIndex
  1390.        Case 0      '付款
  1391.          Lab_Title.ForeColor = &H0&
  1392.          Lab_Title.Caption = "付款单"
  1393.        Case 1      '预付款
  1394.          Lab_Title.ForeColor = &HFF0000
  1395.          Lab_Title.Caption = "预付款"
  1396.        Case 2      '退款单
  1397.          Lab_Title.ForeColor = &HFF&
  1398.          Lab_Title.Caption = "退款单"
  1399.    End Select
  1400. End Sub
  1401. Private Sub Sub_CancelBill()                '单据核销
  1402.     
  1403.     '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  1404.     If Not Security_Log("Ap_PayBill_Check", Xtczybm, 1, True) Then
  1405.         Exit Sub
  1406.     End If
  1407.     
  1408.     On Error Resume Next
  1409.     
  1410.     If Combo_Fkdlx.ListIndex = 1 Then
  1411.          HX_FrmHxCxtj.Combo_Jshxlx.ListIndex = 1                '预收冲应收
  1412.     Else
  1413.          HX_FrmHxCxtj.Combo_Jshxlx.ListIndex = 0                '到款结算
  1414.     End If
  1415.     HX_FrmHxCxtj.LrText(0).Tag = LrText(2).Tag                  '客户编码
  1416.     HX_FrmHxCxtj.LrText(0).Text = LrText(2).Text                '客户名称
  1417.     HX_FrmHxCxtj.Imgebo_ForeignCurr.Text = LrText(5).Text
  1418.     HX_FrmHxgl.Timer1.Enabled = True
  1419.     HX_FrmHxgl.Show 1
  1420.     
  1421. End Sub
  1422. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  1423. '*****************************以下为文本框录入处理程序(固定不变部分)*******************************'
  1424. '************以下为文本框录入处理程序(固定不变部分)*************'
  1425. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  1426.     
  1427.     '以下为依据实际情况自定义部分[
  1428.     
  1429.     '在此填写文本框录入事后处理程序
  1430.     
  1431.     Select Case Index
  1432.          Case 5
  1433.             Dim Bln_ConVertFlag As Boolean                        '币种折算方式
  1434.             Dim Dbl_AccRate As Double                             '币种记帐汇率
  1435.             
  1436.             Call Sub_GetAccRate(LrText(5).Tag, Bln_ConVertFlag, Dbl_AccRate)    '取外币记帐汇率
  1437.             
  1438.             TextChangeLock = True
  1439.                 If Dbl_AccRate <> 0 Then
  1440.                     LrText(6).Text = Dbl_AccRate
  1441.                 Else
  1442.                     LrText(6).Text = ""
  1443.                 End If
  1444.                 
  1445.             TextChangeLock = False
  1446.       End Select
  1447.     
  1448.     ']以上为依据实际情况自定义部分
  1449.     
  1450. End Sub
  1451. Private Sub LrText_Change(Index As Integer)
  1452.     
  1453.     '屏蔽程序改变控制
  1454.     If TextChangeLock Then
  1455.         Exit Sub
  1456.     End If
  1457.     
  1458.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  1459.     
  1460.     '限制字段录入长度
  1461.     
  1462.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  1463.     
  1464.     Call TextChangeLimit(LrText(Index), Textint(Index, 1))  '去掉无效字符
  1465.     
  1466.     Select Case Textint(Index, 1)
  1467.     Case 8, 11      '金额型
  1468.         Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  1469.     Case 9, 12      '数量型
  1470.         Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  1471.     Case 10          '单价型
  1472.         Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1473.     Case Else        '其他小数类型控制
  1474.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  1475.             Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  1476.         End If
  1477.     End Select
  1478.     
  1479.     TextChangeLock = False '解锁
  1480.     
  1481. End Sub
  1482. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  1483.     
  1484.     Call TextShow(Index)
  1485.     CurTextIndex = Index
  1486.     LrText(Index).SelStart = Len(LrText(Index))
  1487.     
  1488. End Sub
  1489. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  1490.     
  1491.     Select Case KeyCode
  1492.     Case vbKeyF2
  1493.         Call Text_Help(Index)
  1494.     End Select
  1495.     
  1496. End Sub
  1497. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  1498.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  1499. End Sub
  1500. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点
  1501.     
  1502.     '显示相应信息但不能进行有效性判断
  1503.     
  1504.     Call Wbklrwbcl(Index)
  1505.     
  1506. End Sub
  1507. Private Sub Ydcommand1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)     '按钮提供帮助
  1508.     
  1509.     '文本框处于非录入状态时不允许调入帮助
  1510.     If Not LrText(Index).Enabled Then
  1511.         Exit Sub
  1512.     End If
  1513.     
  1514.     Call Text_Help(Index)
  1515.     
  1516. End Sub
  1517. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  1518.     
  1519.     If Not Textboolean(Index, 1) Then
  1520.         Exit Sub
  1521.     End If
  1522.     
  1523.     '调用帮助
  1524.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  1525.     
  1526.     '根据设置选择显示编码和名称,并进行存储
  1527.     If Len(Xtfhcs) <> 0 Then
  1528.         If Textint(Index, 3) = 1 Then
  1529.             LrText(Index).Text = Xtfhcsfz
  1530.             LrText(Index).Tag = Xtfhcs
  1531.         Else
  1532.             LrText(Index).Text = Xtfhcs
  1533.             LrText(Index).Tag = Xtfhcsfz
  1534.         End If
  1535.     End If
  1536.     
  1537.     LrText(Index).SetFocus
  1538.     
  1539. End Sub
  1540. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  1541.     
  1542.     '填写文本框得到焦点,进行相应信息处理程序
  1543.     
  1544. End Sub
  1545. Private Sub Wbkcsh()                          '录入文本框初始化
  1546.     
  1547.     Dim Int_TabIndex As Integer         'Tab焦点计数器
  1548.     
  1549.     '单据录入中文本框焦点由0开始
  1550.     LrText(0).TabIndex = 0
  1551.     
  1552.     '最大录入文本框索引值
  1553.     Max_Text_Index = Textvar(1)
  1554.     
  1555.     ReDim TextValiJudgeLock(Max_Text_Index)
  1556.     For Jsqte = 0 To Max_Text_Index
  1557.         
  1558.         '判断此文本框录入索引号是否存在,如存在则对其进行初始化
  1559.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then
  1560.             
  1561.             '自动装入录入文本框和其解释标签
  1562.             If Jsqte <> 0 Then
  1563.                 Load LrText(Jsqte)
  1564.                 Load tsLabel(Jsqte)
  1565.                 
  1566.                 '判断录入文本框是否显示
  1567.                 If Textboolean(Jsqte, 4) Then
  1568.                     LrText(Jsqte).Visible = True
  1569.                     tsLabel(Jsqte).Visible = True
  1570.                 End If
  1571.                 
  1572.                 '判断文本框是否可编辑
  1573.                 If Textboolean(Jsqte, 5) Then
  1574.                     LrText(Jsqte).Enabled = True
  1575.                 Else
  1576.                     LrText(Jsqte).Enabled = False
  1577.                 End If
  1578.                 
  1579.                 '判断文本框是否提供帮助
  1580.                 If Textboolean(Jsqte, 1) Then
  1581.                     If Not Textboolean(Jsqte, 3) Then
  1582.                         Load Ydcommand1(Jsqte)
  1583.                     End If
  1584.                 End If
  1585.             End If
  1586.             
  1587.             '初始化其内容
  1588.             TextChangeLock = True
  1589.             LrText(Jsqte).Text = ""
  1590.             LrText(Jsqte).Tag = ""
  1591.             If Textint(Jsqte, 5) <> 0 Then
  1592.                 LrText(Jsqte).MaxLength = Textint(Jsqte, 5)
  1593.             End If
  1594.             TextChangeLock = False
  1595.             
  1596.             '设置文本框位置及大小,并设置相应标签内容及其位置
  1597.             LrText(Jsqte).Move Textint(Jsqte, 13), Textint(Jsqte, 12), Textint(Jsqte, 11), Textint(Jsqte, 10)
  1598.             tsLabel(Jsqte).Caption = Textstr(Jsqte, 7) & ":"
  1599.             tsLabel(Jsqte).Move Textint(Jsqte, 13) - tsLabel(Jsqte).Width - 20, Textint(Jsqte, 12) + (Textint(Jsqte, 10) - tsLabel(Jsqte).Height) / 2 - 30
  1600.             
  1601.             '判断文本框是否提供帮助
  1602.             If Textboolean(Jsqte, 1) Then
  1603.                 Ydcommand1(Jsqte).Visible = True
  1604.                 Ydcommand1(Jsqte).Move LrText(Jsqte).Left + LrText(Jsqte).Width, LrText(Jsqte).Top
  1605.             End If
  1606.         End If
  1607.         
  1608.         '将文本框有效性判断进行加锁,在文本框内容发生变化时将锁打开
  1609.         TextValiJudgeLock(Jsqte) = True
  1610.         
  1611.     Next Jsqte
  1612.     
  1613.     '设置文本框焦点转移顺序(前提文本焦点从0至Max_Text_Index)
  1614.     For Int_TabIndex = 0 To Max_Text_Index
  1615.         For Jsqte = 0 To Max_Text_Index
  1616.             If Textint(Jsqte, 14) = Int_TabIndex Then
  1617.                 LrText(Jsqte).TabIndex = Int_TabIndex
  1618.             End If
  1619.         Next Jsqte
  1620.     Next Int_TabIndex
  1621.     
  1622. End Sub
  1623. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  1624.     
  1625.     Dim Sqlstr As String
  1626.     Dim Findrec As ADODB.Recordset
  1627.     
  1628.     '文本框内容未曾改变不进行有效性判断
  1629.     If TextValiJudgeLock(Index) Then
  1630.         TextYxxpd = True
  1631.         Exit Function
  1632.     End If
  1633.     
  1634.     '文本框内容为空认为有效,并清空其Tag值
  1635.     If Trim(LrText(Index)) = "" Then
  1636.         LrText(Index).Tag = ""
  1637.         Call Wbklrwbcl(Index)
  1638.         TextValiJudgeLock(Index) = True
  1639.         TextYxxpd = True
  1640.         Exit Function
  1641.     End If
  1642.     
  1643.     '可在此加入不做有效性判断的理由
  1644.     
  1645.     Select Case Textint(Index, 4)
  1646.     Case 1      '编码型
  1647.         Sqlstr = Trim(Textstr(Index, 5))
  1648.         Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  1649.         Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1650.         If Findrec.EOF Then
  1651.             Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  1652.             LrText(Index).SetFocus
  1653.             Exit Function
  1654.         Else
  1655.             Select Case Textint(Index, 3)
  1656.             Case 0
  1657.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1658.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1659.                 End If
  1660.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1661.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1662.                 End If
  1663.             Case 1
  1664.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1665.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1666.                 End If
  1667.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1668.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1669.                 End If
  1670.             End Select
  1671.         End If
  1672.     Case 2      '日期型
  1673.         If IsDate(LrText(Index).Text) Then
  1674.             LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  1675.             If Val(Mid(LrText(Index), 1, 4)) < 1900 Then
  1676.                 LrText(Index).Text = "1900" + Mid(LrText(Index), 5, 6)
  1677.             End If
  1678.         Else
  1679.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  1680.             Call Xtxxts(Tsxx, 0, 1)
  1681.             LrText(Index).SetFocus
  1682.             Exit Function
  1683.         End If
  1684.     Case 3      '其他类型
  1685.         If Index = 4 Then
  1686.              Sqlstr = "Select Ccode,EndFlag,StopFlag From Cwzz_AccCode Where Ccode='" & Trim(LrText(Index).Text) & "'"
  1687.              Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1688.              With Findrec
  1689.                  If .EOF Then
  1690.                     Tsxx = "此科目不存在!"
  1691.                     Call Xtxxts(Tsxx, 0, 1)
  1692.                     LrText(Index).SetFocus
  1693.                     Exit Function
  1694.                  End If
  1695.                     If Not .Fields("EndFlag") Then
  1696.                        Tsxx = "此科目非末级科目!"
  1697.                        Call Xtxxts(Tsxx, 0, 1)
  1698.                        LrText(Index).SetFocus
  1699.                        Exit Function
  1700.                     End If
  1701.                     If .Fields("StopFlag") Then
  1702.                        Tsxx = "此科目已停用!"
  1703.                        Call Xtxxts(Tsxx, 0, 1)
  1704.                        LrText(Index).SetFocus
  1705.                        Exit Function
  1706.                     End If
  1707.               End With
  1708.             End If
  1709.     
  1710.     End Select
  1711.     
  1712.     '如果有效则加锁,用户不改变内容则不再进行有效性判断
  1713.     TextValiJudgeLock(Index) = True
  1714.     
  1715.     '调用文本框事后处理程序
  1716.     Call Wbklrwbcl(Index)
  1717.     
  1718.     '有效性判断通过则返回True
  1719.     TextYxxpd = True
  1720.     
  1721. End Function