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

企业管理

开发平台:

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