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

企业管理

开发平台:

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 Salary_Frm_Compute 
  5.    BackColor       =   &H00C0C0C0&
  6.    BorderStyle     =   1  'Fixed Single
  7.    Caption         =   "计算工资"
  8.    ClientHeight    =   8310
  9.    ClientLeft      =   660
  10.    ClientTop       =   1155
  11.    ClientWidth     =   11910
  12.    HelpContextID   =   2213005
  13.    Icon            =   "计算工资.frx":0000
  14.    KeyPreview      =   -1  'True
  15.    LinkTopic       =   "Form4"
  16.    MaxButton       =   0   'False
  17.    MinButton       =   0   'False
  18.    ScaleHeight     =   8310
  19.    ScaleWidth      =   11910
  20.    StartUpPosition =   1  '所有者中心
  21.    Begin MSComctlLib.ProgressBar PB_Proc 
  22.       Height          =   330
  23.       Left            =   4200
  24.       TabIndex        =   10
  25.       Top             =   3660
  26.       Visible         =   0   'False
  27.       Width           =   4440
  28.       _ExtentX        =   7832
  29.       _ExtentY        =   582
  30.       _Version        =   393216
  31.       Appearance      =   1
  32.       Scrolling       =   1
  33.    End
  34.    Begin VB.PictureBox Pic_Title 
  35.       BackColor       =   &H00FFFFFF&
  36.       Height          =   1095
  37.       Left            =   15
  38.       Picture         =   "计算工资.frx":1042
  39.       ScaleHeight     =   1035
  40.       ScaleWidth      =   11865
  41.       TabIndex        =   6
  42.       Top             =   585
  43.       Width           =   11925
  44.       Begin MSComctlLib.ImageCombo ImgCmb_Sort 
  45.          Height          =   315
  46.          Left            =   2010
  47.          TabIndex        =   8
  48.          Top             =   705
  49.          Width           =   3225
  50.          _ExtentX        =   5689
  51.          _ExtentY        =   556
  52.          _Version        =   393216
  53.          ForeColor       =   -2147483640
  54.          BackColor       =   -2147483643
  55.          Locked          =   -1  'True
  56.       End
  57.       Begin VB.Label Lab_Mark 
  58.          AutoSize        =   -1  'True
  59.          BackStyle       =   0  'Transparent
  60.          Caption         =   "工资类别:"
  61.          Height          =   180
  62.          Index           =   5
  63.          Left            =   1050
  64.          TabIndex        =   9
  65.          Top             =   765
  66.          Width           =   810
  67.       End
  68.       Begin VB.Label tsLabel 
  69.          AutoSize        =   -1  'True
  70.          BackColor       =   &H80000018&
  71.          BackStyle       =   0  'Transparent
  72.          Caption         =   "计算工资"
  73.          BeginProperty Font 
  74.             Name            =   "宋体"
  75.             Size            =   12
  76.             Charset         =   134
  77.             Weight          =   700
  78.             Underline       =   0   'False
  79.             Italic          =   0   'False
  80.             Strikethrough   =   0   'False
  81.          EndProperty
  82.          ForeColor       =   &H00000000&
  83.          Height          =   240
  84.          Index           =   4
  85.          Left            =   480
  86.          TabIndex        =   7
  87.          Top             =   285
  88.          Width           =   1020
  89.       End
  90.    End
  91.    Begin VB.TextBox Ydtext 
  92.       BackColor       =   &H00C0FFFF&
  93.       BorderStyle     =   0  'None
  94.       Height          =   300
  95.       Left            =   8895
  96.       MultiLine       =   -1  'True
  97.       TabIndex        =   0
  98.       Top             =   2130
  99.       Visible         =   0   'False
  100.       Width           =   1185
  101.    End
  102.    Begin VB.ComboBox YdCombo 
  103.       Height          =   300
  104.       Left            =   8790
  105.       Style           =   2  'Dropdown List
  106.       TabIndex        =   3
  107.       Top             =   1830
  108.       Visible         =   0   'False
  109.       Width           =   1695
  110.    End
  111.    Begin VB.CommandButton Ydcommand 
  112.       Height          =   300
  113.       Left            =   10530
  114.       Picture         =   "计算工资.frx":35106
  115.       Style           =   1  'Graphical
  116.       TabIndex        =   1
  117.       Top             =   1830
  118.       Visible         =   0   'False
  119.       Width           =   300
  120.    End
  121.    Begin VSFlex8Ctl.VSFlexGrid WglrGrid 
  122.       Height          =   6705
  123.       Left            =   75
  124.       TabIndex        =   4
  125.       Top             =   1755
  126.       Width           =   8730
  127.       _ExtentX        =   15399
  128.       _ExtentY        =   11827
  129.       Appearance      =   1
  130.       BorderStyle     =   1
  131.       Enabled         =   -1  'True
  132.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  133.          Name            =   "宋体"
  134.          Size            =   9
  135.          Charset         =   134
  136.          Weight          =   400
  137.          Underline       =   0   'False
  138.          Italic          =   0   'False
  139.          Strikethrough   =   0   'False
  140.       EndProperty
  141.       MousePointer    =   0
  142.       BackColor       =   16777215
  143.       ForeColor       =   -2147483640
  144.       BackColorFixed  =   12632256
  145.       ForeColorFixed  =   -2147483630
  146.       BackColorSel    =   -2147483635
  147.       ForeColorSel    =   -2147483634
  148.       BackColorBkg    =   -2147483636
  149.       BackColorAlternate=   16777215
  150.       GridColor       =   -2147483633
  151.       GridColorFixed  =   -2147483632
  152.       TreeColor       =   -2147483632
  153.       FloodColor      =   192
  154.       SheetBorder     =   -2147483642
  155.       FocusRect       =   1
  156.       HighLight       =   1
  157.       AllowSelection  =   -1  'True
  158.       AllowBigSelection=   -1  'True
  159.       AllowUserResizing=   0
  160.       SelectionMode   =   0
  161.       GridLines       =   1
  162.       GridLinesFixed  =   2
  163.       GridLineWidth   =   1
  164.       Rows            =   50
  165.       Cols            =   5
  166.       FixedRows       =   1
  167.       FixedCols       =   1
  168.       RowHeightMin    =   0
  169.       RowHeightMax    =   0
  170.       ColWidthMin     =   0
  171.       ColWidthMax     =   0
  172.       ExtendLastCol   =   0   'False
  173.       FormatString    =   ""
  174.       ScrollTrack     =   0   'False
  175.       ScrollBars      =   3
  176.       ScrollTips      =   0   'False
  177.       MergeCells      =   0
  178.       MergeCompare    =   0
  179.       AutoResize      =   -1  'True
  180.       AutoSizeMode    =   0
  181.       AutoSearch      =   0
  182.       MultiTotals     =   -1  'True
  183.       SubtotalPosition=   1
  184.       OutlineBar      =   0
  185.       OutlineCol      =   0
  186.       Ellipsis        =   0
  187.       ExplorerBar     =   0
  188.       PicturesOver    =   0   'False
  189.       FillStyle       =   0
  190.       RightToLeft     =   0   'False
  191.       PictureType     =   0
  192.       TabBehavior     =   0
  193.       OwnerDraw       =   0
  194.       Editable        =   0   'False
  195.       ShowComboButton =   -1  'True
  196.       WordWrap        =   0   'False
  197.       TextStyle       =   0
  198.       TextStyleFixed  =   0
  199.       OleDragMode     =   0
  200.       OleDropMode     =   0
  201.       DataMode        =   0
  202.       VirtualData     =   -1  'True
  203.    End
  204.    Begin MSComctlLib.Toolbar Tlb_Action 
  205.       Align           =   1  'Align Top
  206.       Height          =   570
  207.       Left            =   0
  208.       TabIndex        =   2
  209.       Top             =   0
  210.       Width           =   11910
  211.       _ExtentX        =   21008
  212.       _ExtentY        =   1005
  213.       ButtonWidth     =   820
  214.       ButtonHeight    =   953
  215.       AllowCustomize  =   0   'False
  216.       Wrappable       =   0   'False
  217.       Appearance      =   1
  218.       Style           =   1
  219.       ImageList       =   "ImageList1"
  220.       _Version        =   393216
  221.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  222.          NumButtons      =   13
  223.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  224.             Caption         =   "设置"
  225.             Key             =   "ymsz"
  226.             Object.ToolTipText     =   "打印页面设置"
  227.             ImageKey        =   "sz"
  228.          EndProperty
  229.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  230.             Caption         =   "打印"
  231.             Key             =   "dy"
  232.             Object.ToolTipText     =   "打印当前单据或Ctrl+P"
  233.             ImageKey        =   "dy"
  234.          EndProperty
  235.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  236.             Caption         =   "预览"
  237.             Key             =   "yl"
  238.             Object.ToolTipText     =   "显示当前数据的打印模式"
  239.             ImageKey        =   "yl"
  240.          EndProperty
  241.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  242.             Style           =   3
  243.          EndProperty
  244.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  245.             Caption         =   "查询"
  246.             Key             =   "Query"
  247.             Object.ToolTipText     =   "以某种条件取得数据"
  248.             ImageKey        =   "cx"
  249.          EndProperty
  250.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  251.             Caption         =   "定位"
  252.             Key             =   "Locate"
  253.             Object.ToolTipText     =   "根据工号或姓名定位数据"
  254.             ImageKey        =   "Locate"
  255.          EndProperty
  256.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  257.             Caption         =   "刷新"
  258.             Key             =   "Refresh"
  259.             Object.ToolTipText     =   "以当前条件重新取得数据"
  260.             ImageKey        =   "Refresh"
  261.          EndProperty
  262.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  263.             Caption         =   "计算"
  264.             Key             =   "Compute"
  265.             Object.ToolTipText     =   "计算工资"
  266.             ImageKey        =   "Compute"
  267.          EndProperty
  268.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  269.             Style           =   3
  270.          EndProperty
  271.          BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  272.             Caption         =   "项目"
  273.             Key             =   "Item"
  274.             Object.ToolTipText     =   "选择需要显示的项目"
  275.             ImageKey        =   "Item"
  276.          EndProperty
  277.          BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  278.             Style           =   3
  279.          EndProperty
  280.          BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  281.             Caption         =   "帮助"
  282.             Key             =   "bz"
  283.             Object.ToolTipText     =   "获得关于计算工资的帮助"
  284.             ImageKey        =   "bz"
  285.          EndProperty
  286.          BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  287.             Caption         =   "退出"
  288.             Key             =   "fh"
  289.             Object.ToolTipText     =   "退出计算工资"
  290.             ImageKey        =   "tc"
  291.          EndProperty
  292.       EndProperty
  293.       BorderStyle     =   1
  294.    End
  295.    Begin MSComctlLib.ImageList ImageList1 
  296.       Left            =   9315
  297.       Top             =   2670
  298.       _ExtentX        =   1005
  299.       _ExtentY        =   1005
  300.       BackColor       =   -2147483643
  301.       ImageWidth      =   16
  302.       ImageHeight     =   16
  303.       MaskColor       =   12632256
  304.       _Version        =   393216
  305.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  306.          NumListImages   =   32
  307.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  308.             Picture         =   "计算工资.frx":35490
  309.             Key             =   "sz"
  310.          EndProperty
  311.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  312.             Picture         =   "计算工资.frx":3582A
  313.             Key             =   "dy"
  314.          EndProperty
  315.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  316.             Picture         =   "计算工资.frx":35BC4
  317.             Key             =   "yl"
  318.          EndProperty
  319.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  320.             Picture         =   "计算工资.frx":35F5E
  321.             Key             =   "xg"
  322.          EndProperty
  323.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  324.             Picture         =   "计算工资.frx":362F8
  325.             Key             =   "zh"
  326.          EndProperty
  327.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  328.             Picture         =   "计算工资.frx":36692
  329.             Key             =   "sh"
  330.          EndProperty
  331.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  332.             Picture         =   "计算工资.frx":36A2C
  333.             Key             =   "bc"
  334.          EndProperty
  335.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  336.             Picture         =   "计算工资.frx":36DC6
  337.             Key             =   "fq"
  338.          EndProperty
  339.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  340.             Picture         =   "计算工资.frx":37160
  341.             Key             =   "bz"
  342.          EndProperty
  343.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  344.             Picture         =   "计算工资.frx":374FA
  345.             Key             =   "tc"
  346.          EndProperty
  347.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  348.             Picture         =   "计算工资.frx":37894
  349.             Key             =   "bcgs"
  350.          EndProperty
  351.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  352.             Picture         =   "计算工资.frx":37C2E
  353.             Key             =   "mrlk"
  354.          EndProperty
  355.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  356.             Picture         =   "计算工资.frx":37FC8
  357.             Key             =   "xsxm"
  358.          EndProperty
  359.          BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  360.             Picture         =   "计算工资.frx":38362
  361.             Key             =   "first"
  362.          EndProperty
  363.          BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  364.             Picture         =   "计算工资.frx":386FC
  365.             Key             =   "prev"
  366.          EndProperty
  367.          BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  368.             Picture         =   "计算工资.frx":38A96
  369.             Key             =   "next"
  370.          EndProperty
  371.          BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  372.             Picture         =   "计算工资.frx":38E30
  373.             Key             =   "last"
  374.          EndProperty
  375.          BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  376.             Picture         =   "计算工资.frx":391CA
  377.             Key             =   "Item"
  378.          EndProperty
  379.          BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  380.             Picture         =   "计算工资.frx":39564
  381.             Key             =   "define"
  382.          EndProperty
  383.          BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  384.             Picture         =   "计算工资.frx":398FE
  385.             Key             =   "exec"
  386.          EndProperty
  387.          BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  388.             Picture         =   "计算工资.frx":39C98
  389.             Key             =   "xz"
  390.          EndProperty
  391.          BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  392.             Picture         =   "计算工资.frx":3A032
  393.             Key             =   "sc"
  394.          EndProperty
  395.          BeginProperty ListImage23 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  396.             Picture         =   "计算工资.frx":3A3CC
  397.             Key             =   "sx"
  398.          EndProperty
  399.          BeginProperty ListImage24 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  400.             Picture         =   "计算工资.frx":3A766
  401.             Key             =   "cx"
  402.          EndProperty
  403.          BeginProperty ListImage25 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  404.             Picture         =   "计算工资.frx":3AB00
  405.             Key             =   "zd"
  406.          EndProperty
  407.          BeginProperty ListImage26 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  408.             Picture         =   "计算工资.frx":3AE9A
  409.             Key             =   "dz"
  410.          EndProperty
  411.          BeginProperty ListImage27 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  412.             Picture         =   "计算工资.frx":3B234
  413.             Key             =   "ph"
  414.          EndProperty
  415.          BeginProperty ListImage28 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  416.             Picture         =   "计算工资.frx":3B5CE
  417.             Key             =   "fz"
  418.          EndProperty
  419.          BeginProperty ListImage29 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  420.             Picture         =   "计算工资.frx":3B968
  421.             Key             =   "dw"
  422.          EndProperty
  423.          BeginProperty ListImage30 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  424.             Picture         =   "计算工资.frx":3BD02
  425.             Key             =   "Compute"
  426.          EndProperty
  427.          BeginProperty ListImage31 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  428.             Picture         =   "计算工资.frx":3C09C
  429.             Key             =   "Refresh"
  430.          EndProperty
  431.          BeginProperty ListImage32 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  432.             Picture         =   "计算工资.frx":3C436
  433.             Key             =   "Locate"
  434.          EndProperty
  435.       EndProperty
  436.    End
  437.    Begin VB.Label Lab_OperStatus 
  438.       BackColor       =   &H000080FF&
  439.       Caption         =   "1"
  440.       Height          =   345
  441.       Left            =   10500
  442.       TabIndex        =   5
  443.       Top             =   1440
  444.       Visible         =   0   'False
  445.       Width           =   345
  446.    End
  447. End
  448. Attribute VB_Name = "Salary_Frm_Compute"
  449. Attribute VB_GlobalNameSpace = False
  450. Attribute VB_Creatable = False
  451. Attribute VB_PredeclaredId = True
  452. Attribute VB_Exposed = False
  453. '**************************************************************************************
  454. '*    模 块 名 称 计算工资
  455. '*    功 能 描 述 :
  456. '*    程序员姓名  :苗鹏
  457. '*    最后修改人  :苗鹏
  458. '*    最后修改时间:2002/01/01
  459. '*
  460. '***************************************************************************************
  461.  
  462. '以下为自定义变量
  463. Dim sFields() As New CFieldValue
  464. Public sSqlWhere As String
  465. Public sSortID As String
  466. Public sSqlWhereTax As String
  467. Dim iYear As Integer
  468. Dim iPeriod As Integer
  469. Dim bRefreshData As Boolean
  470. '其它固定使用变量
  471. Dim Tsxx As String                              '系统信息提示(Fixed)
  472. Dim ReportTitle As String                       '报表主标题(Fixed)
  473.    
  474. '以下为固定使用变量(网格)
  475. Dim Dyymctbl As New DY_Dyymsz                   '打印页面窗体变量
  476. Dim GridCode As String                          '显示网格网格代码
  477. Dim GridInf() As Variant                        '整个网格设置信息
  478. Dim Pmbcsjhs As Long                            '屏幕网格保持数据行数(大于等于1)
  479. Dim Fzxwghs As Integer                          '辅助项网格行数(包括合计行)
  480. Dim Sfxshjwg As Boolean                         '是否显示合计网格
  481. Dim Qslz As Long                                '网格隐藏(非操作显示)列数
  482. Dim Sjhgd As Double                             '网格数据行高度
  483. Dim GridBoolean() As Boolean                    '网格列信息(布尔型)
  484. Dim GridStr()  As String                        '网格列信息(字符型)
  485. Dim GridInt() As Integer                        '网格列信息(整型)
  486. Dim Sfblbzkd As Boolean                         '是否保留帮助宽度(字段提供帮助时,是否为按钮保留空间)
  487. Dim Dqlrwgh As Long                             '当前录入数据网格行
  488. Dim Dqlrwgl As Long                             '当前录入数据网格列
  489. Dim Dqlkwgh As Long                             '刚刚离开网格行(不一定为录入行)
  490. Dim Dqlkwgl As Long                             '刚刚离开网格列
  491. Dim Dqtoprow As Long                            '当前录入状态时最上端可视行
  492. Dim Dqleftcol As Long                           '当前录入状态时最左端可视列
  493. Dim Zdlrqnr As String                           '字段录入修改前内容(用来判断内容是否修改)
  494. Dim Wbkbhlock As Boolean                        '文本框改变值锁
  495. Dim Changelock As Boolean                       '网格行列改变控制锁(用来区别用户改变.程序改变)
  496. Dim Gdtlock As Boolean                          '滚动条滚动控制(用来区别用户改变.程序改变)
  497. Dim Yxxpdlock As Boolean                        '字段有效性判断锁(内容不修改不需进行字段有效性判断)
  498. Dim Hyxxpdlock As Boolean                       '行有效性判断锁(字段内容不修改不需进行行有效性判断)
  499. Dim Valilock As Boolean                         '文本框失去焦点是否进行有效性控制(TRUE 为锁定*限用网格录入)
  500. Dim Shsfts As Boolean                           '删除记录行是否提示
  501. Dim Szzls As Integer                            '网格信息数组最大下标值(网格列数-1)
  502. Private Sub Form_KeyPress(KeyAscii As Integer)      '限制录入字符"'"
  503.     Select Case KeyAscii
  504.         Case 39           '屏蔽字符"'"
  505.             KeyAscii = 0
  506.     End Select
  507.     
  508. End Sub
  509. Private Sub Form_Load()                              '窗 体 装 入
  510.     On Error GoTo ErrCtrl
  511.     
  512.     Dim s As String
  513.     Dim rs As New ADODB.Recordset
  514.     Dim nod As ComboItem
  515.     '初始化各种锁值(Fixed)
  516.     Changelock = False             '网格行列改变控制锁
  517.     Gdtlock = False                '滚动条滚动控制
  518.     Yxxpdlock = True               '字段有效性判断锁
  519.     Hyxxpdlock = True              '行有效性判断锁
  520.     Wbkbhlock = False              '文本框内容改变锁
  521.      
  522.     '报表主标题及报表编码(Fixed)
  523.     ReportTitle = "计算工资"
  524.     XtReportCode = "PM_ComputeSalary"
  525.     Load Dyymctbl
  526.     
  527.     '调 入 网 格(Fixed)
  528.     GridCode = "Pm_ComputeSalary"      '网格属性编码
  529.     Call BzWgcsh(WglrGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  530.     Qslz = GridInf(1)
  531.     Sjhgd = GridInf(2)
  532.     Pmbcsjhs = GridInf(3)
  533.     Fzxwghs = GridInf(4)
  534.     Sfblbzkd = GridInf(5)
  535.     Shsfts = GridInf(6)
  536.     Sfxshjwg = GridInf(7)
  537.     Szzls = WglrGrid.Cols - 1
  538.     
  539.        
  540.     '设置标题栏宽度、网格宽度高度(Fixed)
  541.     Pic_Title.Move 50, Pic_Title.Top, Me.Width - 150, Pic_Title.Height
  542.     WglrGrid.Move 50, Pic_Title.Top + Pic_Title.Height, Me.Width - 150
  543.     WglrGrid.Height = Me.Height - WglrGrid.Top - 380
  544.       
  545.      '填充工资类别
  546.      s = "select b.SortID,b.SortName FROM PM_OpeSort a inner join PM_Sort b ON a.SortID=b.SortID WHERE a.Czybm='" & Xtczybm & "'"
  547.      Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  548.      With rs
  549.         Do While Not .EOF()
  550.             Set nod = Me.ImgCmb_Sort.ComboItems.Add(, "@" & Trim(!SortId), Trim(!SortName))
  551.             nod.Tag = !SortId
  552.             .MoveNext
  553.         Loop
  554.         .Close
  555.      End With
  556.     
  557.         
  558.     '设置状态为修改状态
  559.     Lab_OperStatus = "2"
  560.     
  561.     '取得会计期间
  562.     s = "select Top 1 KjYear,Period FROM GY_Kjrlb WHERE PMjzbz= 0 ORDER BY KjYear,Period  "
  563.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  564.     With rs
  565.         If Not .EOF() Then
  566.             TextChangeLock = True
  567.             iYear = rs!KjYear
  568.             iPeriod = rs!Period
  569.         Else
  570.             MsgBox "当前会计日期未知", vbOKOnly + vbCritical
  571.             Exit Sub
  572.         End If
  573.         .Close
  574.     End With
  575.     Set rs = Nothing
  576.     Exit Sub
  577.     
  578. ErrCtrl:
  579.     If rs.State = 1 Then
  580.         rs.Close
  581.     End If
  582.     Set rs = notjing
  583.     Set nod = Nothing
  584. End Sub
  585. Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
  586.     If Not Fun_Drfrmyxxpd Then
  587.         Cancel = True
  588.         Exit Sub
  589.     End If
  590.     '卸载打印页面窗体
  591.     Unload Dyymctbl
  592. End Sub
  593. Public Function ShowRecord(sSortID As String) '查询数据填充网格
  594.     On Error GoTo ErrCtrl
  595.     
  596.     '判断刷新是否完成
  597.     Me.MousePointer = 11
  598.     If bRefreshData = True Then
  599.         Me.MousePointer = 0
  600.         Exit Function
  601.     End If
  602.     
  603.     '设置默认查询条件
  604.     Dim sWhere As String
  605.     If Trim(sSqlWhere) = "" Then
  606.         sSqlWhere = "WHERE PM_PayRoll.DeptCode in (Select DeptCode FROM PM_OpeDept WHERE Czybm='" & Xtczybm & "') " & Chr(10) _
  607.             & " AND PM_PayRoll.SortID in (Select SortID FROM PM_OpeSort WHERE Czybm ='" & Xtczybm & "') " & Chr(10) _
  608.             & " AND PM_PayRoll.KjYear=" & iYear & " AND PM_PayRoll.Period=" & iPeriod
  609.     End If
  610.     sWhere = sSqlWhere & " AND PM_PayRoll.SortID='" & sSortID & "' " & Chr(10) _
  611.             & " AND PM_PayRoll.KjYear=" & iYear & " AND PM_PayRoll.Period=" & iPeriod
  612.     
  613.     '定义变量
  614.     Dim s As String
  615.     Dim rs As New ADODB.Recordset
  616.     Dim sSqlExec As String
  617.     Dim sSqlSelect As String
  618.     Dim sSqlFrom As String
  619.     Dim sSqlOrder As String
  620.     Dim i As Long
  621.     Dim j As Long
  622.     Dim iFixedCols As Integer
  623.     Dim iBeginCol As Integer
  624.     
  625.     '初始化各种变量
  626.     iBeginCol = GridInf(1)  '数据开始行数
  627.     'From子句
  628.     sSqlFrom = " FROM PM_PayRoll  Inner Join Rs_BasicInfo ON Rs_BasicInfo.EmpID=PM_PayRoll.EmpID  " & Chr(10) _
  629.         & " Left Outer Join  Rs_ExtendInfo ON PM_PayRoll.EmpID=Rs_ExtendInfo.EmpID " & Chr(10) _
  630.         & " Left Outer Join PM_AttendRecord ON PM_PayRoll.EmpID=PM_AttendRecord.EmpID AND PM_PayRoll.KjYear=PM_AttendRecord.KjYear AND PM_PayRoll.Period=PM_AttendRecord.Period " & Chr(10)
  631.     'Order子句
  632.     sSqlOrder = " ORDER BY PM_PayRoll.DeptCode,Rs_BasicInfo.EmpNo"
  633.     ReDim sFields(2) '字段属性
  634.     sFields(0).FieldName = "PM_PayRoll#DeptCode"
  635.     sFields(0).FieldValueName = "PM_PayRoll#DeptCode#N"
  636.     sFields(0).FieldNameC = "部门"
  637.     sFields(0).FieldLengthInt = 0
  638.     sFields(0).FieldLengthFra = 0
  639.     
  640.     sFields(1).FieldName = "PM_PayRoll#EmpNo"
  641.     sFields(1).FieldValueName = "PM_PayRoll#EmpNo"
  642.     sFields(1).FieldNameC = "工号"
  643.     sFields(1).FieldLengthInt = 0
  644.     sFields(1).FieldLengthFra = 0
  645.     
  646.     sFields(2).FieldName = "PM_PayRoll#EmpName"
  647.     sFields(2).FieldValueName = "PM_PayRoll#EmpName"
  648.     sFields(2).FieldNameC = "姓名"
  649.     sFields(2).FieldLengthInt = 0
  650.     sFields(2).FieldLengthFra = 0
  651.     
  652.     'select子句
  653.     sSqlSelect = "select Pm_PayRoll.EmpID AS Pm_PayRoll#EmpID " & Chr(10) _
  654.         & " ,PM_PayRoll#DeptCode#N=(select DeptName FROM GY_Department a WHERE a.DeptCode=PM_PayRoll.DeptCode) " & Chr(10) _
  655.         & " ,PM_PayRoll.EmpNo AS PM_PayRoll#EmpNo " & Chr(10) _
  656.         & " ,PM_PayRoll.EmpName AS PM_PayRoll#EmpName " & Chr(10)
  657.     s = "select Top 1 KjYear,Period FROM GY_Kjrlb WHERE PMjzbz= 0 ORDER BY KjYear,Period  " '会计期间
  658.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  659.     With rs
  660.         If Not .EOF() Then
  661.             iPeriod = !Period
  662.             iYear = !KjYear
  663.         Else
  664.             MsgBox "当前会计日期未知", vbOKOnly + vbCritical
  665.             Exit Function
  666.         End If
  667.         .Close
  668.     End With
  669.     
  670.     '生成查询语句
  671.     '工资项
  672.     s = "select  b.FieldName AS FieldName ,b.ChName AS FieldNameC,b.FieldLength AS FieldLength ,b.FieldDotL AS FieldDotL   " & Chr(10) _
  673.         & " FROM PM_SortItem a inner join Rs_Items  b ON a.ItemID=b.ItemID " & Chr(10) _
  674.         & " WHERE a.HaltFlag=0 AND SortID ='" & sSortID & "'" & Chr(10) _
  675.         & " order by a.DisplayOrder "
  676.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  677.     With rs
  678.         Do While Not .EOF()
  679.             If Trim(sFields(0).FieldName) <> "" Then
  680.                 ReDim Preserve sFields(UBound(sFields) + 1)
  681.             End If
  682.             sFields(UBound(sFields)).FieldName = Trim("PM_PayRoll#" & Trim(!FieldName))
  683.             sFields(UBound(sFields)).FieldValueName = Trim("PM_PayRoll#" & Trim(!FieldName))
  684.             sFields(UBound(sFields)).FieldNameC = Trim(!FieldNameC)
  685.             sFields(UBound(sFields)).FieldLengthInt = !FieldLength - !FieldDotL
  686.             sFields(UBound(sFields)).FieldLengthFra = !FieldDotL
  687.             sSqlSelect = sSqlSelect & ",PM_PayRoll." & Trim(!FieldName) & " AS " & sFields(UBound(sFields)).FieldValueName & Chr(10)
  688.             .MoveNext
  689.         Loop
  690.         .Close
  691.     End With
  692.     
  693.     With Me.WglrGrid
  694.         '初始化网格
  695.         .Redraw = False
  696.         .Cols = UBound(sFields) + 2
  697.         .FixedCols = iBeginCol + 3
  698.         s = "#,##0"
  699.         For i = .FixedCols To .Cols - 1
  700.             .ColAlignment(i) = flexAlignRightCenter
  701.             .ColFormat(i) = s & IIf(sFields(i - 1).FieldLengthFra = 0, "", "." & String(sFields(i - 1).FieldLengthFra, "0"))
  702.         Next i
  703.         For i = 1 To .Cols - 1
  704.             .TextMatrix(0, i) = sFields(i - 1).FieldNameC
  705.             .FixedAlignment(i) = flexAlignCenterCenter
  706.         Next i
  707.         
  708.         '填充数据
  709.         sSqlSelect = Trim(sSqlSelect)
  710.         sSqlExec = sSqlSelect & sSqlFrom & sWhere & sSqlOrder
  711.         Set rs = Cw_DataEnvi.DataConnect.Execute(sSqlExec)
  712.         .Rows = .FixedRows + rs.RecordCount
  713.         
  714.         '初始化进度条
  715.         Me.PB_Proc.Visible = True
  716.         Me.PB_Proc.Min = 0
  717.         Me.PB_Proc.Value = 0
  718.         Me.PB_Proc.Max = rs.RecordCount + 1
  719.         
  720.         bRefreshData = True '   声明正在刷新数据
  721.         For i = .FixedRows To .Rows - 1
  722.             '相应其他事件
  723.             DoEvents
  724.             '设置进度条
  725.             Me.PB_Proc.Value = Me.PB_Proc.Value + 1
  726.             .RowHeight(i) = GridInf(2)
  727.             .Cell(flexcpBackColor, i, .FixedCols, i, .Cols - 1) = vbWhite
  728.             .TextMatrix(i, 0) = rs.Fields("PM_PayRoll#EmpID")
  729.             For j = iBeginCol To .Cols - 1
  730.                 .TextMatrix(i, j) = rs.Fields(Trim(sFields(j - iBeginCol).FieldValueName)) & ""
  731.                 If IsNumeric(.TextMatrix(i, j)) And Val(.TextMatrix(i, j)) = 0 Then
  732.                     .TextMatrix(i, j) = ""
  733.                 End If
  734.             Next j
  735.             rs.MoveNext
  736.         Next i
  737.         rs.Close
  738.         Me.PB_Proc.Visible = False
  739.         bRefreshData = False '   声明刷新数据完成
  740.         .Redraw = True
  741.     End With
  742.     
  743.     '刷新控制数组
  744.      GridInf(1) = iBeginCol                         '起始列值
  745.      With Me.WglrGrid
  746.         ReDim GridBoolean(.Cols - 1, 1 To 6)
  747.         ReDim GridInt(.Cols - 1, 1 To 7)
  748.         ReDim GridStr(.Cols - 1, 1 To 5)
  749.         For i = 0 To iFixedCols - 1
  750.             GridBoolean(i, 1) = False '网格列是否可编辑
  751.             GridBoolean(i, 2) = False  '网格列是否提供帮助
  752.             GridBoolean(i, 3) = False '网格列是否列表框录入
  753.             GridBoolean(i, 4) = False '网格列是否合计
  754.             GridBoolean(i, 5) = False '网格内容为零是否清空
  755.             GridBoolean(i, 6) = False '网格列是否为布尔型
  756.             GridInt(i, 1) = 0 '字段数据类型
  757.             GridInt(i, 2) = 100 '字段录入长度
  758.             GridInt(i, 3) = 100 '字段整数位长度
  759.             GridInt(i, 4) = 100 '字段小数位长度
  760.             GridInt(i, 5) = 0 '字段不允许为空或为零
  761.             GridInt(i, 6) = 0 '帮助类型
  762.             GridInt(i, 7) = 0 '帮助返回值(0-显示返回编码 1-显示返回名称)
  763.             GridStr(i, 1) = IIf(i - iBeginCol + 1 > 0, Format(i - iBeginCol + 1 > 0, "000"), Format(0, "000")) '网格列索引值
  764.             GridStr(i, 2) = ""  '字段为空提示信息
  765.             GridStr(i, 3) = ""     '通用帮助编码
  766.             GridStr(i, 4) = ""    '连接字段(通用帮助)
  767.             GridStr(i, 5) = ""   '列表框编码
  768.         Next i
  769.         
  770.         For i = .FixedCols To .Cols - 1
  771.             GridBoolean(i, 1) = True '网格列是否可编辑
  772.             GridBoolean(i, 2) = False  '网格列是否提供帮助
  773.             GridBoolean(i, 3) = False '网格列是否列表框录入
  774.             GridBoolean(i, 4) = False '网格列是否合计
  775.             GridBoolean(i, 5) = True '网格内容为零是否清空
  776.             GridBoolean(i, 6) = False '网格列是否为布尔型
  777.             GridInt(i, 1) = 5 '字段数据类型
  778.             GridInt(i, 2) = 0 '字段录入长度
  779.             GridInt(i, 3) = sFields(i - iBeginCol).FieldLengthInt '字段整数位长度
  780.             GridInt(i, 4) = sFields(i - iBeginCol).FieldLengthFra '字段小数位长度
  781.             GridInt(i, 5) = 0 '字段不允许为空或为零
  782.             GridInt(i, 6) = 0 '帮助类型
  783.             GridInt(i, 7) = 0 '帮助返回值(0-显示返回编码 1-显示返回名称)
  784.             GridStr(i, 1) = IIf(i - iBeginCol + 1 > 0, Format(i - iBeginCol + 1 > 0, "000"), Format(0, "000")) '网格列索引值
  785.             GridStr(i, 2) = ""  '字段为空提示信息
  786.             GridStr(i, 3) = ""     '通用帮助编码
  787.             GridStr(i, 4) = ""    '连接字段(通用帮助)
  788.             GridStr(i, 5) = ""   '列表框编码
  789.         Next i
  790.     End With
  791.     Set rs = Nothing
  792.     Me.MousePointer = 0
  793.     Exit Function
  794. ErrCtrl:
  795.     If rs.State = 1 Then
  796.         rs.Close
  797.     End If
  798.     Set rs = Nothing
  799.     Me.WglrGrid.Redraw = True
  800.     Me.MousePointer = 0
  801. End Function
  802. Public Function Locate(sPerson As String) As Integer '根据工号或姓名定位人员,成功返回1,没有找到返回0,错误返回-1
  803.     On Error GoTo ErrCtrl
  804.     
  805.     Dim i As Long, j As Long
  806.     Dim iCol(1) As Integer
  807.     Dim bFound As Boolean
  808.     
  809.     sPerson = UCase(Trim(sPerson))
  810.     With Me.WglrGrid
  811.         If .Rows = .FixedRows Then
  812.             Exit Function
  813.         End If
  814.         '取得工号和姓名列
  815.         If GetCol(sFields, iCol(0), iCol(1), Val(GridInf(1))) <> 1 Then
  816.             MsgBox "无法找到工号和姓名列,定位失败!", vbOKOnly + vbCritical
  817.             GoTo ErrCtrl
  818.         End If
  819.         bFound = False
  820.         .Cell(flexcpBackColor, .Row, .FixedCols, .Row, .Cols - 1) = vbWhite
  821.         For j = 0 To 1
  822.             If iCol(j) >= 0 And bFound = False Then
  823.                  '从当前行的下一行找到末尾
  824.                 For i = .Row + 1 To .Rows - 1
  825.                     If UCase(Trim(.TextMatrix(i, iCol(j)))) = sPerson Then
  826.                         bFound = True
  827.                         .Row = i
  828.                         .TopRow = i
  829.                         .Cell(flexcpBackColor, .Row, .FixedCols, .Row, .Cols - 1) = &HFFC0C0
  830.                         Exit For
  831.                     Else
  832.                         .Cell(flexcpBackColor, i, .FixedCols, i, .Cols - 1) = vbWhite
  833.                     End If
  834.                 Next i
  835.                 '如果没有找到,从数据开始行找到当前行
  836.                 If bFound = False Then
  837.                     For i = .FixedRows To .Row
  838.                         If UCase(Trim(.TextMatrix(i, iCol(j)))) = sPerson Then
  839.                             bFound = True
  840.                             .Row = i
  841.                             .TopRow = i
  842.                             .Cell(flexcpBackColor, .Row, .FixedCols, .Row, .Cols - 1) = &HFFC0C0
  843.                             Exit For
  844.                         Else
  845.                             .Cell(flexcpBackColor, i, .FixedCols, i, .Cols - 1) = vbWhite
  846.                         End If
  847.                     Next i
  848.                 End If
  849.             End If
  850.         Next j
  851.         If bFound = False Then
  852.             Locate = 0
  853.         Else
  854.             Locate = 1
  855.         End If
  856.     End With
  857.     Exit Function
  858. ErrCtrl:
  859.     Locate = -1
  860. End Function
  861. Public Function ComputeSalary() '计算工资
  862.     On Error GoTo ErrCtrl
  863.     
  864.     Dim s As String
  865.     Dim sSortID As String
  866.     Dim st As String
  867.     Dim rs As New ADODB.Recordset
  868.     
  869.     '取得会计期间
  870.     s = "select Top 1 KjYear,Period FROM GY_Kjrlb WHERE PMjzbz= 0 ORDER BY KjYear,Period  "
  871.     Set rs = Cw_DataEnvi.DataConnect.Execute(s)
  872.     With rs
  873.         If Not .EOF() Then
  874.             iPeriod = !Period
  875.             iYear = !KjYear
  876.         Else
  877.             MsgBox "当前会计日期未知", vbOKOnly + vbCritical
  878.             Exit Function
  879.         End If
  880.         .Close
  881.     End With
  882.     Set rs = Nothing
  883.     
  884.     Me.MousePointer = 11
  885.     sSortID = GetComboKey(Me.ImgCmb_Sort, 0)
  886.     st = Replace(Me.sSqlWhere & " AND PM_PayRoll.SortID='" & sSortID & "'", "'", "''")
  887.     s = "PM_SP_ComputeSalary " & "'" & sSortID & "'," & iYear & "," & iPeriod & ",'" & st & "'"
  888.     Cw_DataEnvi.DataConnect.Execute (s)
  889.     DoEvents
  890.     Me.MousePointer = 0
  891.     
  892.     '刷新数据
  893.     ShowRecord sSortID
  894.     
  895.     MsgBox "计算完成!", vbOKOnly + vbInformation
  896.     Exit Function
  897.     
  898. ErrCtrl:
  899.     Me.MousePointer = 0
  900.     If rs.State = 1 Then
  901.         rs.Close
  902.     End If
  903.     Set rs = Nothing
  904.     MsgBox "计算出现错误!", vbOKOnly + vbCritical
  905. End Function
  906. Private Sub ImgCmb_Sort_Click()
  907.     Call Tlb_Action_ButtonClick(Me.Tlb_Action.Buttons("Refresh"))
  908. End Sub
  909. Private Sub Tlb_Action_ButtonClick(ByVal Button As MSComctlLib.Button)             '用户点击工具条
  910.     On Error GoTo ErrCtrl
  911.     
  912.     Dim frm As Form
  913.     '屏蔽文本框,下拉组合框有效性判断
  914.     If Not Fun_Drfrmyxxpd Then
  915.         Exit Sub
  916.     End If
  917.     Valilock = True
  918.      
  919.     '屏蔽网格失去焦点产生的有效性判断
  920.      
  921.     Changelock = True
  922.      
  923.     Select Case Button.Key
  924.         Case "ymsz"                                          '页面设置
  925.             Dyymctbl.Show 1
  926.         Case "yl"                                            '预 览
  927.             If Fun_Drfrmyxxpd Then
  928.                 Call bbyl(True)
  929.             End If
  930.         Case "dy"                                            '打 印
  931.             If Fun_Drfrmyxxpd Then
  932.                 Call bbyl(False)
  933.             End If
  934.         Case "bz"                                            '帮 助
  935.             Call F1bz
  936.         Case "fh"                                            '退 出
  937.             '如果正在刷新数据,则不允许退出
  938.             If bRefreshData = True Then
  939.                 Exit Sub
  940.             End If
  941.             Unload Me
  942.         
  943.         Case "Refresh" '刷新
  944.             With Me.ImgCmb_Sort
  945.                 If .SelectedItem Is Nothing Then
  946.                     Exit Sub
  947.                 End If
  948.                 If .SelectedItem.Key = "" Then
  949.                     Exit Sub
  950.                 End If
  951.                 ShowRecord GetComboKey(Me.ImgCmb_Sort, 0)
  952.             End With
  953.         Case "Query" '查询
  954.             Set frm = New Query_Frm
  955.             Dim coll As New Collection
  956.             With frm
  957.                 Set .collTableName = coll
  958.                 .Show 1
  959.                 If .bChecked = False Then
  960.                     Exit Sub
  961.                 End If
  962.                 If Trim(.sSqlWhere) = "" Then
  963.                     Me.sSqlWhere = "WHERE  PM_PayRoll.DeptCode in (Select DeptCode FROM PM_OpeDept WHERE Czybm='" & Xtczybm & "') " & Chr(10) _
  964.                         & " AND PM_PayRoll.SortID in (Select SortID FROM PM_OpeSort WHERE Czybm ='" & Xtczybm & "') " & Chr(10)
  965.                 Else
  966.                     Me.sSqlWhere = "WHERE   PM_PayRoll.DeptCode in (Select DeptCode FROM PM_OpeDept WHERE Czybm='" & Xtczybm & "') " & Chr(10) _
  967.                         & " AND PM_PayRoll.SortID in (Select SortID FROM PM_OpeSort WHERE Czybm ='" & Xtczybm & "') " & Chr(10) _
  968.                         & " AND " & frm.sSqlWhere
  969.                 End If
  970.             End With
  971.             Call Tlb_Action_ButtonClick(Me.Tlb_Action.Buttons("Refresh"))
  972.         Case "Compute" '计算工资
  973.             If Trim(Me.ImgCmb_Sort.Text) = "" Then
  974.                 GoTo ErrCtrl
  975.             End If
  976.             ComputeSalary
  977.         Case "Locate" '定位
  978.             If Trim(Me.ImgCmb_Sort.Text) = "" Then
  979.                 GoTo ErrCtrl
  980.             End If
  981.             Set frm = New Locate_Frm
  982.             With frm
  983.                 Set .frm = Me
  984.                 .Show 1
  985.             End With
  986.         Case "Item" '选择项目
  987.             Set frm = New Salary_ShowItem_Frm
  988.             Set frm.vs = Me.WglrGrid
  989.             frm.iBeginCol = GridInf(1)
  990.             frm.Show 1
  991.             Set frm = Nothing
  992.     End Select
  993.     
  994.     Set frm = Nothing
  995.     '解 锁
  996.     Valilock = False
  997.     Changelock = False
  998.     Exit Sub
  999. ErrCtrl:
  1000.     Set frm = Nothing
  1001.     '解 锁
  1002.     Valilock = False
  1003.     Changelock = False
  1004. End Sub
  1005. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)        '支持热键操作
  1006.   
  1007.     If Shift = 2 Then
  1008.         Select Case UCase(Chr(KeyCode))
  1009.             Case "P"                   'Ctrl+P 打印
  1010.                 If Tlb_Action.Buttons("dy").Enabled Then
  1011.                     Call bbyl(False)
  1012.                 End If
  1013.         End Select
  1014.     End If
  1015.     
  1016. End Sub
  1017. Private Sub Wbkcl()                                                 '文本框录入之前处理(根据实际情况)
  1018.  
  1019.     Dim xswbrr As String
  1020.     With WglrGrid
  1021.         Zdlrqnr = Trim(.Text)
  1022.         xswbrr = Trim(.Text)
  1023.     
  1024.         If GridBoolean(.Col, 3) Then   '列表框录入
  1025.     
  1026.             '填充列表框程序
  1027.             Call FillCombo(YdCombo, GridStr(.Col, 5), xswbrr, 0)
  1028.         Else
  1029.             Wbkbhlock = True
  1030.        
  1031.             '====以下为用户自定义
  1032.             Ydtext.Text = xswbrr
  1033.             '====以上为用户自定义
  1034.          
  1035.             Wbkbhlock = False
  1036.             Ydtext.SelStart = Len(Ydtext.Text)
  1037.         End If
  1038.     End With
  1039.     
  1040. End Sub
  1041. Private Function sjzdyxxpd(Dqpdwgh As Long, Dqpdwgl As Long)        '录入数据字段有效性判断,同时进行字段录入事后处理
  1042.     
  1043.     Dim Str_JudgeText As String            '临时有效性判断字段内容
  1044.     Dim Coljsq As Long                     '临时列计数器
  1045.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  1046.     Dim Dbl_Qcye As Double                 '临时期初余额
  1047.  
  1048.     With WglrGrid
  1049.     
  1050.         '非录入状态有效性为合法
  1051.         If Yxxpdlock Or .Row < .FixedRows Then
  1052.            sjzdyxxpd = True
  1053.            Exit Function
  1054.         End If
  1055.  
  1056.         Str_JudgeText = Trim(.TextMatrix(Dqpdwgh, Dqpdwgl))
  1057.         Select Case GridStr(Dqpdwgl, 1)
  1058.          
  1059.             '以下为自定义部分[
  1060.                 '1.放置字段有效性判断程序
  1061.                     'Case "004"
  1062.                     
  1063.                 '2.放置字段事后处理程序
  1064.                 
  1065.             '以上为自定义部分]
  1066.             
  1067.         End Select
  1068.      
  1069.         '字段录入正确后为零字段清空
  1070.         Call Qkwlzd(Dqpdwgh, Dqpdwgl)
  1071.     
  1072.         sjzdyxxpd = True
  1073.         Yxxpdlock = True
  1074.         Exit Function
  1075.     
  1076.     End With
  1077.   
  1078. Lrcwcl:    '录入错误处理
  1079.     With WglrGrid
  1080.         Call Xtxxts(Tsxx, 0, 1)
  1081.         Changelock = True
  1082.         .Select Dqpdwgh, Dqpdwgl
  1083.         Changelock = False
  1084.         Call xswbk
  1085.         sjzdyxxpd = False
  1086.         Exit Function
  1087.     End With
  1088.     
  1089. End Function
  1090. Private Function Sjhzyxxpd(ByVal Yxxpdh As Long) As Boolean                  '录入数据行有效性判断,同时进行行处理
  1091.  
  1092.     Dim Lrywlz As Long                     '录入错误列值(Fixed)
  1093.     Dim s As String                   '临时查询字符串
  1094.     Dim i As Long
  1095.     With WglrGrid
  1096.         '行没有发生变化则不进行有效性判断
  1097.         If Hyxxpdlock Then
  1098.             Sjhzyxxpd = True
  1099.             Exit Function
  1100.         End If
  1101.     
  1102.         '以下为自定义部分[
  1103.     
  1104.         '1.1首先进行单个不能为空或不能为零判断(Fixed)
  1105.         For jsqte = Qslz To .Cols - 1
  1106.             '字段不能为空
  1107.             If GridInt(jsqte, 5) = 1 Then
  1108.                 If Len(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0 Then
  1109.                     Tsxx = GridStr(jsqte, 2)
  1110.                     Lrywlz = jsqte
  1111.                     GoTo Lrcwcl
  1112.                     Exit For
  1113.                 End If
  1114.             End If
  1115.             
  1116.             '字段不能为零
  1117.             If GridInt(jsqte, 5) = 2 Then
  1118.                 If Val(Trim(.TextMatrix(Yxxpdh, jsqte))) = 0 Then
  1119.                     Tsxx = GridStr(jsqte, 2)
  1120.                     Lrywlz = jsqte
  1121.                     GoTo Lrcwcl
  1122.                     Exit For
  1123.                 End If
  1124.             End If
  1125.         Next jsqte
  1126.     
  1127.     
  1128.         '1.2进行其他有效性判断,编写格式同1.1
  1129.                 
  1130.         '2.放置行处理程序(当数据行通过有效性判断)
  1131.            
  1132.         
  1133.            
  1134.         On Error GoTo Swcwcl
  1135.         
  1136.         With Me.WglrGrid
  1137.             For i = .FixedCols To .Cols - 1
  1138.                 s = s & "," & Replace(sFields(i - GridInf(1)).FieldName, "#", ".") & "=" & Val(.TextMatrix(Yxxpdh, i)) & Chr(10)
  1139.             Next i
  1140.             If Trim(s) <> "" Then
  1141.                 s = Trim(s)
  1142.                 s = Mid(s, 2, Len(s) - 1)
  1143.                 s = "update PM_PayRoll set " & s & " WHERE EmpID=" & .TextMatrix(Yxxpdh, 0) & " AND SortID='" & GetComboKey(Me.ImgCmb_Sort, 0) & "' " & Chr(10) _
  1144.                     & " AND Period=" & iPeriod & " AND KjYear =" & iYear
  1145.                     
  1146.             Else
  1147.                 Exit Function
  1148.             End If
  1149.         End With
  1150.         Cw_DataEnvi.DataConnect.BeginTrans
  1151.             Cw_DataEnvi.DataConnect.Execute (s)
  1152.         Cw_DataEnvi.DataConnect.CommitTrans
  1153.          
  1154.     End With
  1155.     '以上为自定义部分]
  1156.     Sjhzyxxpd = True
  1157.     Hyxxpdlock = True
  1158.     Exit Function
  1159. Swcwcl:
  1160.     Cw_DataEnvi.DataConnect.RollbackTrans
  1161.     Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  1162.     Call Xtxxts(Tsxx, 0, 1)
  1163.     Exit Function
  1164. Lrcwcl:      '录入错误处理
  1165.     With WglrGrid
  1166.         Call Xtxxts(Tsxx, 0, 1)
  1167.         Changelock = True
  1168.         .Select Yxxpdh, Lrywlz
  1169.         Changelock = False
  1170.         Call xswbk
  1171.         Sjhzyxxpd = False
  1172.         Exit Function
  1173.     End With
  1174.     
  1175. End Function
  1176. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  1177. Private Sub Lrzdbz()                                                      '录入字段帮助
  1178.   
  1179.     If Not Ydcommand.Visible Then
  1180.         Exit Sub
  1181.     End If
  1182.    
  1183.     With WglrGrid
  1184.      
  1185.         Valilock = True
  1186.     
  1187.         '处理通用部分
  1188.         Changelock = True        '调入另外窗体必须加锁
  1189.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  1190.         Changelock = False
  1191.         
  1192.         If Len(Xtfhcs) <> 0 Then
  1193.             If GridInt(.Col, 7) = 0 Then
  1194.                 Ydtext.Text = Xtfhcs
  1195.             Else
  1196.                 Ydtext.Text = Xtfhcsfz
  1197.             End If
  1198.         End If
  1199.         
  1200.         Valilock = False
  1201.   
  1202.         If Ydtext.Visible Then
  1203.             Ydtext.SetFocus
  1204.         End If
  1205.     End With
  1206.     
  1207. End Sub
  1208. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  1209.    
  1210.     Call Cxxswbk
  1211.    
  1212. End Sub
  1213. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  1214.   
  1215.     Fun_Drfrmyxxpd = True
  1216.     
  1217.     With WglrGrid
  1218.    
  1219.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  1220.   
  1221.         If Ydtext.Visible Or YdCombo.Visible Then
  1222.             Call Lrsjhx
  1223.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1224.                 Fun_Drfrmyxxpd = False
  1225.                 Exit Function
  1226.             End If
  1227.         End If
  1228.    
  1229.         '进行行有效性判断
  1230.         If Not Sjhzyxxpd(.Row) Then
  1231.             Fun_Drfrmyxxpd = False
  1232.             Exit Function
  1233.         End If
  1234.     End With
  1235.   
  1236. End Function
  1237. Private Sub WglrGrid_EnterCell()                                          '显示当前数据行相关信息
  1238.     With WglrGrid
  1239.         If .Row >= .FixedRows Then
  1240.             '[>>
  1241.                 '此处可以填写显示与此网格行相关信息
  1242.             '<<]
  1243.         End If
  1244.     End With
  1245.    
  1246. End Sub
  1247. Private Sub WglrGrid_GotFocus()                                           '网格得到焦点
  1248.     '网格得到焦点,如果当前选择行为非数据行
  1249.     '则调整当前焦点至有效数据行
  1250.     With WglrGrid
  1251.         If .Row < .FixedRows And .Rows > .FixedRows Then
  1252.             Changelock = True
  1253.             .Select .FixedRows, .Col
  1254.             Changelock = False
  1255.         End If
  1256.         If .Col < Qslz Then
  1257.             Changelock = True
  1258.             .Select .Row, Qslz
  1259.             Changelock = False
  1260.         End If
  1261.     End With
  1262. End Sub
  1263. Private Sub WglrGrid_LostFocus()                                          '录入网格失去焦点
  1264.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  1265.     If Changelock Then
  1266.         Exit Sub
  1267.     End If
  1268.     '引发网格RowcolChange事件
  1269.     With WglrGrid
  1270.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1271.             .Select 0, 0
  1272.         End If
  1273.     End With
  1274. End Sub
  1275. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                             '限制用户在录入过程中滚动鼠标
  1276.     If Gdtlock Then
  1277.         Exit Sub
  1278.     End If
  1279.  
  1280.     With WglrGrid
  1281.         If Ydtext.Visible Or YdCombo.Visible Then
  1282.             Gdtlock = True
  1283.             .TopRow = Dqtoprow
  1284.             .LeftCol = Dqleftcol
  1285.             Gdtlock = False
  1286.             Exit Sub
  1287.         End If
  1288.     End With
  1289.     
  1290. End Sub
  1291. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  1292.     If Changelock Then
  1293.         Exit Sub
  1294.     End If
  1295.     '记录刚刚离开网格单元的行列值
  1296.     Dqlkwgh = WglrGrid.Row
  1297.     Dqlkwgl = WglrGrid.Col
  1298.     '判断是否需要录入数据回写
  1299.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1300.         Exit Sub
  1301.     End If
  1302.     
  1303.     Call Lrsjhx
  1304.     
  1305. End Sub
  1306. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  1307.    
  1308.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  1309.     
  1310.     With WglrGrid
  1311.         If Changelock Then
  1312.             Exit Sub
  1313.         End If
  1314.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1315.             Exit Sub
  1316.         End If
  1317.         If .Row <> Dqlkwgh Then
  1318.             If Not Sjhzyxxpd(Dqlkwgh) Then
  1319.                 Exit Sub
  1320.             End If
  1321.         End If
  1322.    End With
  1323.    
  1324.    Call fhyxh
  1325.    Call Xldql
  1326.    
  1327. End Sub
  1328. Private Sub WglrGrid_DblClick()                                    '鼠标双击网格显示文本框
  1329.   
  1330.     With WglrGrid
  1331.         Call xswbk
  1332.     End With
  1333.     
  1334. End Sub
  1335. Private Sub Ycwbk()                                                '隐藏文本框,帮助按钮,列表组合框
  1336.     
  1337.     Valilock = True
  1338.     Ydtext.Visible = False
  1339.     YdCombo.Visible = False
  1340.     Ydcommand.Visible = False
  1341.     
  1342. End Sub
  1343. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  1344.     
  1345.     With WglrGrid
  1346.         Select Case KeyCode
  1347.             Case vbKeyEscape                'ESC 键放弃录入
  1348.                 Valilock = True
  1349.                 .SetFocus
  1350.                 Call Ycwbk
  1351.                 Valilock = False
  1352.                 
  1353.             Case vbKeyReturn                '回 车 键 =13
  1354.                 KeyCode = 0
  1355.                 .SetFocus
  1356.                 Call Lrsjhx
  1357.                 Rowjsq = .Row
  1358.                 Coljsq = .Col + 1
  1359.                 If Coljsq > .Cols - 1 Then
  1360.                     If Rowjsq < .Rows - 1 Then
  1361.                         Rowjsq = Rowjsq + 1
  1362.                     End If
  1363.                     Coljsq = Qslz
  1364.                 End If
  1365.                 Do While Rowjsq <= .Rows - 1
  1366.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1367.                         Coljsq = Coljsq + 1
  1368.                         If Coljsq > .Cols - 1 Then
  1369.                             Rowjsq = Rowjsq + 1
  1370.                             Coljsq = Qslz
  1371.                         End If
  1372.                     Else
  1373.                         Exit Do
  1374.                     End If
  1375.                 Loop
  1376.                 .Select Rowjsq, Coljsq
  1377.                 
  1378.             Case vbKeyLeft                  '左 箭 头 =37
  1379.                 If .Col - 1 = Qslz Then
  1380.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1381.                         GoTo jzzx
  1382.                     End If
  1383.                 End If
  1384.                 If .Col > Qslz Then
  1385.                     KeyCode = 0
  1386.                     .SetFocus
  1387.                     Call Lrsjhx
  1388.                     Coljsq = .Col - 1
  1389.                     Do While Coljsq > Qslz
  1390.                         If Coljsq - 1 = Qslz Then
  1391.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1392.                                 GoTo jzzx
  1393.                             End If
  1394.                         End If
  1395.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1396.                             Coljsq = Coljsq - 1
  1397.                         Else
  1398.                             Exit Do
  1399.                         End If
  1400.                     Loop
  1401.                     .Select .Row, Coljsq
  1402.                 End If
  1403.             Case vbKeyRight                 '右 箭 头 =39
  1404.                 KeyCode = 0
  1405.                 .SetFocus
  1406.                 Call Lrsjhx
  1407.                 Rowjsq = .Row
  1408.                 Coljsq = .Col + 1
  1409.                 If Coljsq > .Cols - 1 Then
  1410.                     If Rowjsq < .Rows - 1 Then
  1411.                         Rowjsq = Rowjsq + 1
  1412.                     End If
  1413.                     Coljsq = Qslz
  1414.                 End If
  1415.                 Do While Rowjsq <= .Rows - 1
  1416.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1417.                         Coljsq = Coljsq + 1
  1418.                         If Coljsq > .Cols - 1 Then
  1419.                             Rowjsq = Rowjsq + 1
  1420.                             Coljsq = Qslz
  1421.                         End If
  1422.                     Else
  1423.                         Exit Do
  1424.                     End If
  1425.                 Loop
  1426.                 .Select Rowjsq, Coljsq
  1427.         Case Else
  1428.     End Select
  1429.    
  1430. jzzx:
  1431.    
  1432.     End With
  1433.     
  1434. End Sub
  1435. Private Sub YdCombo_LostFocus()                    '列表框失去焦点
  1436.     
  1437.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  1438.         If Not Valilock Then                           '为TRUE
  1439.             Call Lrsjhx
  1440.             If Not Sjhzyxxpd(Dqlrwgh) Then
  1441.                 Exit Sub
  1442.             End If
  1443.         End If
  1444.     End With
  1445.     
  1446. End Sub
  1447. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  1448.     
  1449.     Call Lrzdbz
  1450.     
  1451. End Sub
  1452. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  1453.    
  1454.     Dim Rowjsq As Long, Coljsq As Long
  1455.    
  1456.     With WglrGrid
  1457.         Select Case KeyCode
  1458.             Case vbKeyF2
  1459.                 Call Lrzdbz
  1460.             Case vbKeyEscape                'ESC 键放弃录入
  1461.                 Valilock = True
  1462.                 Call Ycwbk
  1463.                 .SetFocus
  1464.             Case vbKeyReturn                '回 车 键 =13
  1465.                 KeyCode = 0
  1466.                 .SetFocus
  1467.                 Call Lrsjhx
  1468.                 Rowjsq = .Row
  1469.                 Coljsq = .Col + 1
  1470.                 If Coljsq > .Cols - 1 Then
  1471.                     If Rowjsq < .Rows - 1 Then
  1472.                         Rowjsq = Rowjsq + 1
  1473.                     End If
  1474.                     Coljsq = Qslz
  1475.                 End If
  1476.                 Do While Rowjsq <= .Rows - 1
  1477.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1478.                         Coljsq = Coljsq + 1
  1479.                         If Coljsq > .Cols - 1 Then
  1480.                             Rowjsq = Rowjsq + 1
  1481.                             Coljsq = Qslz
  1482.                         End If
  1483.                     Else
  1484.                         Exit Do
  1485.                     End If
  1486.                 Loop
  1487.                 If Rowjsq <= .Rows - 1 Then
  1488.                     .Select Rowjsq, Coljsq
  1489.                 End If
  1490.                 
  1491.             Case vbKeyUp                    '上 箭 头 =38
  1492.                 KeyCode = 0
  1493.                 .SetFocus
  1494.                 Call Lrsjhx
  1495.                 If .Row > .FixedRows Then
  1496.                     .Row = .Row - 1
  1497.                 End If
  1498.                 
  1499.             Case vbKeyDown                  '下 箭 头 =40
  1500.                 KeyCode = 0
  1501.                 .SetFocus
  1502.                 Call Lrsjhx
  1503.                 If .Row < .Rows - 1 Then
  1504.                     .Row = .Row + 1
  1505.                 End If
  1506.             Case vbKeyLeft                  '左 箭 头 =37
  1507.                 If .Col - 1 = Qslz Then
  1508.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1509.                         GoTo jzzx
  1510.                     End If
  1511.                 End If
  1512.                 If Ydtext.SelStart = 0 And .Col > Qslz Then
  1513.                     KeyCode = 0
  1514.                     .SetFocus
  1515.                     Call Lrsjhx
  1516.                     Coljsq = .Col - 1
  1517.                     Do While Coljsq > Qslz
  1518.                         If Coljsq - 1 = Qslz Then
  1519.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1520.                                 GoTo jzzx
  1521.                             End If
  1522.                         End If
  1523.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1524.                             Coljsq = Coljsq - 1
  1525.                         Else
  1526.                             Exit Do
  1527.                         End If
  1528.                     Loop
  1529.                     .Select .Row, Coljsq
  1530.                 End If
  1531. jzzx:
  1532.            
  1533.            
  1534.             Case vbKeyRight                 '右 箭 头 =39
  1535.                 wblong = Len(Ydtext.Text)
  1536.                 If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  1537.                     KeyCode = 0
  1538.                     .SetFocus
  1539.                     Call Lrsjhx
  1540.                     Rowjsq = .Row
  1541.                     Coljsq = .Col + 1
  1542.                     If Coljsq > .Cols - 1 Then
  1543.                         If Rowjsq < .Rows - 1 Then
  1544.                             Rowjsq = Rowjsq + 1
  1545.                         End If
  1546.                         Coljsq = Qslz
  1547.                     End If
  1548.                     Do While Rowjsq <= .Rows - 1
  1549.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1550.                             Coljsq = Coljsq + 1
  1551.                             If Coljsq > .Cols - 1 Then
  1552.                                 Rowjsq = Rowjsq + 1
  1553.                                 Coljsq = Qslz
  1554.                             End If
  1555.                         Else
  1556.                             Exit Do
  1557.                         End If
  1558.                     Loop
  1559.                     .Select Rowjsq, Coljsq
  1560.                 End If
  1561.             Case Else
  1562.         End Select
  1563.     End With
  1564.     
  1565. End Sub
  1566. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  1567.   
  1568.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1569. End Sub
  1570. Private Sub ydtext_Change()                              '录入事中变化处理
  1571.     '防止程序改变但不进行处理
  1572.     If Wbkbhlock Then
  1573.          Exit Sub
  1574.     End If
  1575.     With WglrGrid
  1576.         '限制字段录入长度
  1577.         Wbkbhlock = True
  1578.         Call TextChangeLimit(Ydtext, GridInt(.Col, 1))  '去掉无效字符
  1579.         Select Case GridInt(.Col, 1)
  1580.             Case 8, 11   '金额型
  1581.                 Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  1582.             Case 9, 12   '数量型
  1583.                 Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  1584.             Case 10      '单价型
  1585.                 Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1586.             Case Else    '其他类型
  1587.                 If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  1588.                     Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  1589.                 End If
  1590.         End Select
  1591.         
  1592.         Wbkbhlock = False
  1593.     End With
  1594.     
  1595. End Sub
  1596. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  1597.   
  1598.     With WglrGrid
  1599.         If Not Valilock Then
  1600.             Call Lrsjhx
  1601.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1602.                 Exit Sub
  1603.             End If
  1604.             If Not Sjhzyxxpd(Dqlrwgh) Then
  1605.                 Exit Sub
  1606.             End If
  1607.         End If
  1608.     End With
  1609.   
  1610. End Sub
  1611. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  1612.     On Error Resume Next
  1613.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  1614.   
  1615.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  1616.     If Not Fun_AllowInput Then
  1617.         Exit Sub
  1618.     End If
  1619.   
  1620.     '显示文本框前返回有效行列(解决滚动条问题)
  1621.     Call Xldqh
  1622.     Call Xldql
  1623.   
  1624.     '隐藏文本框,帮助按钮,列表组合框
  1625.     Call Ycwbk
  1626.   
  1627.     With WglrGrid
  1628.         Dqlrwgh = .Row
  1629.         Dqlrwgl = .Col
  1630.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1631.             Exit Sub
  1632.         End If
  1633.      
  1634.         Wbkpy = 30
  1635.         Wbkpy1 = 15
  1636.     
  1637.         
  1638.         
  1639.         If GridBoolean(.Col, 3) Then
  1640.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1641.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1642.             YdCombo.Width = .CellWidth - Wbkpy1
  1643.             Call Wbkcl
  1644.             YdCombo.Visible = True
  1645.             YdCombo.SetFocus
  1646.             Ydcommand.Visible = False
  1647.             Ydtext.Visible = False
  1648.         Else
  1649.             If GridBoolean(.Col, 2) Then
  1650.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1651.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1652.                 Ydcommand.Visible = True
  1653.             Else
  1654.                 Ydcommand.Visible = False
  1655.             End If
  1656.      
  1657.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1658.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1659.             
  1660.             If Ydcommand.Visible Then
  1661.                 If Sfblbzkd Then
  1662.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1663.                 Else
  1664.                     Ydtext.Width = .CellWidth - Wbkpy1
  1665.                 End If
  1666.             Else
  1667.                 Ydtext.Width = .CellWidth - Wbkpy1
  1668.             End If
  1669.             
  1670.             Ydtext.Height = .CellHeight - Wbkpy1
  1671.       
  1672.             If GridInt(.Col, 2) <> 0 Then
  1673.                 Ydtext.MaxLength = GridInt(.Col, 2)
  1674.             Else
  1675.                 Ydtext.MaxLength = 3000
  1676.             End If
  1677.       
  1678.             Call Wbkcl
  1679.             If .ColHidden(.Col) = False Then
  1680.                 Ydtext.Visible = True
  1681.             End If
  1682.             
  1683.             Ydtext.SetFocus
  1684.         End If
  1685.     
  1686.         Dqtoprow = .TopRow
  1687.         Dqleftcol = .LeftCol
  1688.     
  1689.         '重置锁值
  1690.         Valilock = False
  1691.         Wbkbhlock = False
  1692.     End With
  1693.  
  1694. End Sub
  1695. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  1696.    
  1697.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  1698.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1699.         Exit Function
  1700.     End If
  1701.    
  1702.     '[>>
  1703.     
  1704.         '此处可以填写禁止文本框激活使单据处于录入状态的理由
  1705.    
  1706.     '<<]
  1707.    
  1708.     Fun_AllowInput = True
  1709.     
  1710. End Function
  1711. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  1712.                    
  1713.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  1714.     
  1715.     Wbkpy = 30
  1716.     Wbkpy1 = 15
  1717.     
  1718.     With WglrGrid
  1719.         If YdCombo.Visible Then
  1720.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1721.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1722.             YdCombo.Width = .CellWidth - Wbkpy1
  1723.         End If
  1724.         If Ydcommand.Visible Then
  1725.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1726.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1727.         End If
  1728.         If Ydtext.Visible Then
  1729.             If Ydcommand.Visible Then
  1730.                 If Sfblbzkd Then
  1731.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1732.                 Else
  1733.                     Ydtext.Width = .CellWidth - Wbkpy1
  1734.                 End If
  1735.             Else
  1736.                 Ydtext.Width = .CellWidth - Wbkpy1
  1737.             End If
  1738.       
  1739.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1740.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1741.             Ydtext.Height = .CellHeight - Wbkpy1
  1742.         End If
  1743.        
  1744.         
  1745.     End With
  1746. End Sub
  1747. Private Sub Lrsjhx()                                                             '文本框录入数据回写
  1748.   
  1749.     With WglrGrid
  1750.         If YdCombo.Visible Then
  1751.             .Text = Trim(YdCombo.Text)
  1752.         End If
  1753.         If Ydtext.Visible Then
  1754.             .Text = Trim(Ydtext.Text)
  1755.         End If
  1756.    
  1757.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  1758.         If Zdlrqnr <> Trim(.Text) Then
  1759.             Yxxpdlock = False
  1760.             Hyxxpdlock = False
  1761.         End If
  1762.    
  1763.         '隐藏文本框,帮助按钮,列表组合框
  1764.         Call Ycwbk
  1765.    
  1766.     End With
  1767.     
  1768. End Sub
  1769. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)              '网格快捷键
  1770.   
  1771.     '如果单据操作状态为浏览状态则不能显示录入载体
  1772.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1773.         Exit Sub
  1774.     End If
  1775.     Select Case KeyCode
  1776.         Case vbKeyF2                   '按F2键参照
  1777.             Call xswbk
  1778.             Call Lrzdbz
  1779.     End Select
  1780. End Sub
  1781. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                              '网格接受键盘录入
  1782.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  1783.     If Not Fun_AllowInput Then
  1784.         Exit Sub
  1785.     End If
  1786.   
  1787.     With WglrGrid
  1788.   
  1789.         '屏 蔽 回 车 键
  1790.         If KeyAscii = vbKeyReturn Then
  1791.             KeyAscii = 0
  1792.             Rowjsq = .Row
  1793.             Coljsq = .Col + 1
  1794.             If Coljsq > .Cols - 1 Then
  1795.                 If Rowjsq < .Rows - 1 Then
  1796.                     Rowjsq = Rowjsq + 1
  1797.                 End If
  1798.                 Coljsq = Qslz
  1799.             End If
  1800.             Do While Rowjsq <= .Rows - 1
  1801.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1802.                     Coljsq = Coljsq + 1
  1803.                     If Coljsq > .Cols - 1 Then
  1804.                         Rowjsq = Rowjsq + 1
  1805.                         Coljsq = Qslz
  1806.                     End If
  1807.                 Else
  1808.                     Exit Do
  1809.                 End If
  1810.             Loop
  1811.           
  1812.             If Rowjsq <= .Rows - 1 Then
  1813.                 .Select Rowjsq, Coljsq
  1814.             End If
  1815.        
  1816.             Exit Sub
  1817.        
  1818.         End If
  1819.      
  1820.         '接受用户录入
  1821.         Select Case KeyAscii
  1822.             Case 0 To 32             '用户输入KeyAscii为0-32的键 如空格
  1823.                 '显示录入载体
  1824.                 Call xswbk
  1825.             Case Else
  1826.                 
  1827.                 '防止非编辑字段SendKeys()出现死循环
  1828.                 If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1829.                     Exit Sub
  1830.                 End If
  1831.                 
  1832.                 '如果此字段为列表框录入则调入相应列表框
  1833.                 If GridBoolean(.Col, 3) Then
  1834.                    '列表框录入
  1835.                     Call xswbk
  1836.                 Else
  1837.                     Ydtext.Text = ""
  1838.             
  1839.                     '录入限制
  1840.                     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1841.                     If KeyAscii = 0 Then
  1842.                         Exit Sub
  1843.                     End If
  1844.                     Call xswbk
  1845.                     Ydtext.Text = ""
  1846.                     Valilock = True
  1847.                     SendKeys Chr(KeyAscii), True
  1848.                     DoEvents
  1849.                     Valilock = False
  1850.                 End If
  1851.         End Select
  1852.     End With
  1853. End Sub
  1854. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  1855.     
  1856.     If Not GridBoolean(Sjl, 5) Then
  1857.         Exit Sub
  1858.     End If
  1859.     
  1860.     With WglrGrid
  1861.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  1862.             .TextMatrix(sjh, Sjl) = ""
  1863.         End If
  1864.     End With
  1865. End Sub
  1866. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  1867.     
  1868.     With WglrGrid
  1869.         If .Row >= .FixedRows Then
  1870.             Call Xldqh
  1871.         End If
  1872.     End With
  1873. End Sub
  1874. Private Sub Xldqh()                                                      '显露当前行
  1875.     
  1876.     Dim Toprowte As Long
  1877.     With WglrGrid
  1878.         Toprowte = 0
  1879.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  1880.             Toprowte = .TopRow
  1881.             .TopRow = .TopRow + 1
  1882.         Loop
  1883.         Toprowte = 0
  1884.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  1885.             Toprowte = .TopRow
  1886.             If .TopRow > 1 Then
  1887.                 .TopRow = .TopRow - 1
  1888.             End If
  1889.         Loop
  1890.     End With
  1891. End Sub
  1892. Private Sub Xldql()                                                                  '显露当前列
  1893.     
  1894.     Dim Leftcolte As Long
  1895.     With WglrGrid
  1896.         If .Col >= Qslz And .Col >= .FixedCols Then
  1897.             If .LeftCol > .Col Then
  1898.                 .LeftCol = .Col
  1899.             End If
  1900.             Leftcolte = 0
  1901.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  1902.                 Leftcolte = .LeftCol
  1903.                 .LeftCol = .LeftCol + 1
  1904.             Loop
  1905.         End If
  1906.     End With
  1907. End Sub
  1908. Private Sub WglrGrid_BeforeMoveColumn(ByVal Col As Long, Position As Long)           '网格列发生移动时自动交换网格索引信息
  1909.     Call FnBln_RefreshArray(Col, Position, GridStr(), GridInf())
  1910. End Sub
  1911. Private Sub bbyl(bbylte As Boolean)                    '报表打印预览
  1912.     
  1913.     Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
  1914.     Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
  1915.     Bbxbtgs = 2                                          '报 表 小 标 题 行 数
  1916.     Bbbwhgs = 0                                          '报 表 表 尾 行 数
  1917.     ReDim Bbxbt(1 To Bbxbtgs)
  1918.     ReDim bbxbtzzxs(1 To Bbxbtgs)
  1919.     If Bbbwhgs <> 0 Then
  1920.         ReDim Bbbwh(1 To Bbbwhgs)
  1921.         ReDim Bbbwhzzxs(1 To Bbbwhgs)
  1922.     End If
  1923.     Bbzbt = ReportTitle
  1924.     Bbxbt(2) = "工资类别:" & Me.ImgCmb_Sort.Text
  1925.     Call Scyxsjb(WglrGrid)                               '生成报表数据
  1926.     Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
  1927.     If Not bbylte Then
  1928.         Unload DY_Tybbyldy
  1929.     End If
  1930. End Sub