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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  3. Object = "{BDC217C8-ED16-11CD-956C-0000C04E4C0A}#1.1#0"; "TABCTL32.OCX"
  4. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx"
  5. Begin VB.Form Ed_EmpArInfoFrm 
  6.    BorderStyle     =   1  'Fixed Single
  7.    Caption         =   "人事信息维护"
  8.    ClientHeight    =   8475
  9.    ClientLeft      =   1035
  10.    ClientTop       =   1155
  11.    ClientWidth     =   11910
  12.    HelpContextID   =   2213001
  13.    Icon            =   "处理_个人档案维护.frx":0000
  14.    KeyPreview      =   -1  'True
  15.    LinkTopic       =   "Form1"
  16.    MaxButton       =   0   'False
  17.    MinButton       =   0   'False
  18.    ScaleHeight     =   8475
  19.    ScaleMode       =   0  'User
  20.    ScaleWidth      =   11910
  21.    StartUpPosition =   2  '屏幕中心
  22.    Begin MSComctlLib.Toolbar SzToolbar 
  23.       Align           =   1  'Align Top
  24.       Height          =   555
  25.       Left            =   0
  26.       TabIndex        =   5
  27.       Top             =   0
  28.       Width           =   11910
  29.       _ExtentX        =   21008
  30.       _ExtentY        =   979
  31.       ButtonWidth     =   820
  32.       ButtonHeight    =   926
  33.       Appearance      =   1
  34.       Style           =   1
  35.       ImageList       =   "ImageList1"
  36.       _Version        =   393216
  37.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  38.          NumButtons      =   23
  39.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  40.             Caption         =   "设置"
  41.             Key             =   "PrinterSet"
  42.             ImageIndex      =   2
  43.          EndProperty
  44.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  45.             Caption         =   "打印"
  46.             Key             =   "Printer"
  47.             ImageIndex      =   6
  48.          EndProperty
  49.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  50.             Caption         =   "预览"
  51.             Key             =   "Preview"
  52.             ImageIndex      =   7
  53.          EndProperty
  54.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  55.             Style           =   3
  56.          EndProperty
  57.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  58.             Caption         =   "新增"
  59.             Key             =   "New"
  60.             Object.ToolTipText     =   "快捷键 Ctrl-A"
  61.             ImageIndex      =   8
  62.          EndProperty
  63.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  64.             Caption         =   "修改"
  65.             Key             =   "Modi"
  66.             Object.ToolTipText     =   "快捷键 Ctrl-E"
  67.             ImageIndex      =   9
  68.          EndProperty
  69.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  70.             Caption         =   "删除"
  71.             Key             =   "Del"
  72.             Object.ToolTipText     =   "快捷键 Del"
  73.             ImageIndex      =   10
  74.          EndProperty
  75.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  76.             Style           =   3
  77.          EndProperty
  78.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  79.             Caption         =   "保存"
  80.             Key             =   "Save"
  81.             Object.ToolTipText     =   "快捷键 Ctrl-S"
  82.             ImageIndex      =   13
  83.          EndProperty
  84.          BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  85.             Caption         =   "取消"
  86.             Key             =   "Cancel"
  87.             Object.ToolTipText     =   "快捷键 Esc"
  88.             ImageIndex      =   19
  89.          EndProperty
  90.          BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  91.             Object.Visible         =   0   'False
  92.             ImageIndex      =   11
  93.             Style           =   3
  94.          EndProperty
  95.          BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  96.             Object.Visible         =   0   'False
  97.             Caption         =   "刷新"
  98.             Key             =   "Refresh"
  99.             ImageIndex      =   11
  100.          EndProperty
  101.          BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  102.             Key             =   "sp"
  103.             Style           =   3
  104.          EndProperty
  105.          BeginProperty Button14 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  106.             Caption         =   "首个"
  107.             Key             =   "First"
  108.             Object.ToolTipText     =   "快捷键 Ctrl-Home"
  109.             ImageIndex      =   14
  110.          EndProperty
  111.          BeginProperty Button15 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  112.             Caption         =   "向前"
  113.             Key             =   "Previous"
  114.             Object.ToolTipText     =   "快捷键 Ctrl-PageUp"
  115.             ImageIndex      =   15
  116.          EndProperty
  117.          BeginProperty Button16 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  118.             Caption         =   "向后"
  119.             Key             =   "Next"
  120.             Object.ToolTipText     =   "快捷键 Ctrl-PageDown"
  121.             ImageIndex      =   16
  122.          EndProperty
  123.          BeginProperty Button17 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  124.             Caption         =   "末尾"
  125.             Key             =   "Last"
  126.             Object.ToolTipText     =   "快捷键 Ctrl-End"
  127.             ImageIndex      =   17
  128.          EndProperty
  129.          BeginProperty Button18 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  130.             Style           =   3
  131.          EndProperty
  132.          BeginProperty Button19 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  133.             Object.Visible         =   0   'False
  134.             Caption         =   "过滤"
  135.             Key             =   "Filt"
  136.             ImageIndex      =   5
  137.          EndProperty
  138.          BeginProperty Button20 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  139.             Caption         =   "设定"
  140.             Key             =   "Set"
  141.             ImageIndex      =   4
  142.          EndProperty
  143.          BeginProperty Button21 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  144.             Style           =   3
  145.          EndProperty
  146.          BeginProperty Button22 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  147.             Caption         =   "帮助"
  148.             Key             =   "Help"
  149.             ImageIndex      =   18
  150.          EndProperty
  151.          BeginProperty Button23 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  152.             Caption         =   "退出"
  153.             Key             =   "Exit"
  154.             ImageIndex      =   12
  155.          EndProperty
  156.       EndProperty
  157.       BorderStyle     =   1
  158.       Begin MSComctlLib.ImageList ImageList1 
  159.          Left            =   8910
  160.          Top             =   135
  161.          _ExtentX        =   1005
  162.          _ExtentY        =   1005
  163.          BackColor       =   -2147483643
  164.          ImageWidth      =   16
  165.          ImageHeight     =   16
  166.          MaskColor       =   12632256
  167.          _Version        =   393216
  168.          BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  169.             NumListImages   =   19
  170.             BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  171.                Picture         =   "处理_个人档案维护.frx":1042
  172.                Key             =   "RelationAr"
  173.             EndProperty
  174.             BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  175.                Picture         =   "处理_个人档案维护.frx":13DC
  176.                Key             =   "PrinterSet"
  177.             EndProperty
  178.             BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  179.                Picture         =   "处理_个人档案维护.frx":1776
  180.                Key             =   ""
  181.             EndProperty
  182.             BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  183.                Picture         =   "处理_个人档案维护.frx":1B10
  184.                Key             =   "Set"
  185.             EndProperty
  186.             BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  187.                Picture         =   "处理_个人档案维护.frx":1EAA
  188.                Key             =   "Filt"
  189.             EndProperty
  190.             BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  191.                Picture         =   "处理_个人档案维护.frx":2244
  192.                Key             =   "Printer"
  193.             EndProperty
  194.             BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  195.                Picture         =   "处理_个人档案维护.frx":25DE
  196.                Key             =   "Preview"
  197.             EndProperty
  198.             BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  199.                Picture         =   "处理_个人档案维护.frx":2978
  200.                Key             =   "New"
  201.             EndProperty
  202.             BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  203.                Picture         =   "处理_个人档案维护.frx":2D12
  204.                Key             =   "Modi"
  205.             EndProperty
  206.             BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  207.                Picture         =   "处理_个人档案维护.frx":30AC
  208.                Key             =   "Del"
  209.             EndProperty
  210.             BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  211.                Picture         =   "处理_个人档案维护.frx":3446
  212.                Key             =   "Refresh"
  213.             EndProperty
  214.             BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  215.                Picture         =   "处理_个人档案维护.frx":37E0
  216.                Key             =   "Exit"
  217.             EndProperty
  218.             BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  219.                Picture         =   "处理_个人档案维护.frx":3B7A
  220.                Key             =   "Save"
  221.             EndProperty
  222.             BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  223.                Picture         =   "处理_个人档案维护.frx":3F14
  224.                Key             =   "First"
  225.             EndProperty
  226.             BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  227.                Picture         =   "处理_个人档案维护.frx":42AE
  228.                Key             =   "Previous"
  229.             EndProperty
  230.             BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  231.                Picture         =   "处理_个人档案维护.frx":4648
  232.                Key             =   "Next"
  233.             EndProperty
  234.             BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  235.                Picture         =   "处理_个人档案维护.frx":49E2
  236.                Key             =   "Last"
  237.             EndProperty
  238.             BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  239.                Picture         =   "处理_个人档案维护.frx":4D7C
  240.                Key             =   "Help"
  241.             EndProperty
  242.             BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  243.                Picture         =   "处理_个人档案维护.frx":5116
  244.                Key             =   ""
  245.             EndProperty
  246.          EndProperty
  247.       End
  248.    End
  249.    Begin TabDlg.SSTab SSTab1 
  250.       Height          =   7860
  251.       Left            =   0
  252.       TabIndex        =   1
  253.       TabStop         =   0   'False
  254.       Top             =   630
  255.       Width           =   11850
  256.       _ExtentX        =   20902
  257.       _ExtentY        =   13864
  258.       _Version        =   393216
  259.       Style           =   1
  260.       Tabs            =   1
  261.       TabsPerRow      =   4
  262.       TabHeight       =   520
  263.       MouseIcon       =   "处理_个人档案维护.frx":54B0
  264.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  265.          Name            =   "宋体"
  266.          Size            =   9
  267.          Charset         =   134
  268.          Weight          =   400
  269.          Underline       =   0   'False
  270.          Italic          =   0   'False
  271.          Strikethrough   =   0   'False
  272.       EndProperty
  273.       TabCaption(0)   =   "基本信息"
  274.       TabPicture(0)   =   "处理_个人档案维护.frx":54CC
  275.       Tab(0).ControlEnabled=   -1  'True
  276.       Tab(0).Control(0)=   "lID"
  277.       Tab(0).Control(0).Enabled=   0   'False
  278.       Tab(0).Control(1)=   "lpId"
  279.       Tab(0).Control(1).Enabled=   0   'False
  280.       Tab(0).Control(2)=   "Picture1"
  281.       Tab(0).Control(2).Enabled=   0   'False
  282.       Tab(0).ControlCount=   3
  283.       Begin VB.PictureBox Picture1 
  284.          Height          =   7365
  285.          Left            =   90
  286.          ScaleHeight     =   7305
  287.          ScaleWidth      =   11595
  288.          TabIndex        =   2
  289.          TabStop         =   0   'False
  290.          Top             =   390
  291.          Width           =   11655
  292.          Begin VB.VScrollBar VScBar 
  293.             Height          =   7305
  294.             Left            =   11250
  295.             Max             =   3
  296.             TabIndex        =   6
  297.             TabStop         =   0   'False
  298.             Top             =   0
  299.             Width           =   286
  300.          End
  301.          Begin VB.PictureBox Pict 
  302.             BackColor       =   &H00E9F2F3&
  303.             BorderStyle     =   0  'None
  304.             Height          =   50000
  305.             Left            =   0
  306.             ScaleHeight     =   49995
  307.             ScaleMode       =   0  'User
  308.             ScaleWidth      =   11475
  309.             TabIndex        =   3
  310.             TabStop         =   0   'False
  311.             Top             =   -30
  312.             Width           =   11475
  313.             Begin VB.CheckBox Chk_YNStop 
  314.                BackColor       =   &H00E9F2F3&
  315.                Height          =   285
  316.                Left            =   3330
  317.                TabIndex        =   9
  318.                Top             =   750
  319.                Visible         =   0   'False
  320.                Width           =   2610
  321.             End
  322.             Begin MSComDlg.CommonDialog CommDlg_pic 
  323.                Left            =   6525
  324.                Top             =   2655
  325.                _ExtentX        =   847
  326.                _ExtentY        =   847
  327.                _Version        =   393216
  328.                Filter          =   "Pictures (*.bmp)|*.bmp"
  329.             End
  330.             Begin VB.PictureBox Pic_Emp 
  331.                BackColor       =   &H80000018&
  332.                Height          =   1395
  333.                Left            =   9840
  334.                ScaleHeight     =   1335
  335.                ScaleWidth      =   1110
  336.                TabIndex        =   8
  337.                TabStop         =   0   'False
  338.                ToolTipText     =   "双击鼠标左键更改照片信息"
  339.                Top             =   270
  340.                Width           =   1170
  341.             End
  342.             Begin VB.CommandButton Cmd_CommHlp 
  343.                Height          =   300
  344.                Index           =   0
  345.                Left            =   2310
  346.                Picture         =   "处理_个人档案维护.frx":54E8
  347.                Style           =   1  'Graphical
  348.                TabIndex        =   7
  349.                TabStop         =   0   'False
  350.                Top             =   780
  351.                Visible         =   0   'False
  352.                Width           =   300
  353.             End
  354.             Begin VB.TextBox Txt_RsItm 
  355.                BackColor       =   &H00FFFFFF&
  356.                BeginProperty DataFormat 
  357.                   Type            =   0
  358.                   Format          =   "tt hh:mm:ss"
  359.                   HaveTrueFalseNull=   0
  360.                   FirstDayOfWeek  =   0
  361.                   FirstWeekOfYear =   0
  362.                   LCID            =   2052
  363.                   SubFormatType   =   0
  364.                EndProperty
  365.                ForeColor       =   &H00000000&
  366.                Height          =   300
  367.                Index           =   0
  368.                Left            =   858
  369.                TabIndex        =   0
  370.                Top             =   769
  371.                Visible         =   0   'False
  372.                Width           =   1474
  373.             End
  374.             Begin VB.Label Lbl_ItmName 
  375.                AutoSize        =   -1  'True
  376.                BackColor       =   &H00E9F2F3&
  377.                BackStyle       =   0  'Transparent
  378.                Caption         =   "编号"
  379.                Height          =   180
  380.                Index           =   0
  381.                Left            =   405
  382.                TabIndex        =   4
  383.                Top             =   810
  384.                Visible         =   0   'False
  385.                Width           =   360
  386.             End
  387.          End
  388.       End
  389.       Begin VB.Label lpId 
  390.          BackColor       =   &H000000FF&
  391.          Caption         =   "PrevEmpId"
  392.          BeginProperty Font 
  393.             Name            =   "宋体"
  394.             Size            =   9
  395.             Charset         =   134
  396.             Weight          =   700
  397.             Underline       =   0   'False
  398.             Italic          =   0   'False
  399.             Strikethrough   =   0   'False
  400.          EndProperty
  401.          ForeColor       =   &H8000000E&
  402.          Height          =   225
  403.          Left            =   2520
  404.          TabIndex        =   11
  405.          Top             =   30
  406.          Visible         =   0   'False
  407.          Width           =   1425
  408.       End
  409.       Begin VB.Label lID 
  410.          BackColor       =   &H00FF80FF&
  411.          Caption         =   "CurrentEmpID"
  412.          BeginProperty Font 
  413.             Name            =   "宋体"
  414.             Size            =   9
  415.             Charset         =   134
  416.             Weight          =   700
  417.             Underline       =   0   'False
  418.             Italic          =   0   'False
  419.             Strikethrough   =   0   'False
  420.          EndProperty
  421.          ForeColor       =   &H00FFFFFF&
  422.          Height          =   225
  423.          Left            =   4470
  424.          TabIndex        =   10
  425.          Top             =   30
  426.          Visible         =   0   'False
  427.          Width           =   1425
  428.       End
  429.    End
  430. End
  431. Attribute VB_Name = "Ed_EmpArInfoFrm"
  432. Attribute VB_GlobalNameSpace = False
  433. Attribute VB_Creatable = False
  434. Attribute VB_PredeclaredId = True
  435. Attribute VB_Exposed = False
  436. Option Explicit
  437. Dim H_MoveInt As Integer                '当前鼠标所处的位置
  438. Dim Com_ListIndexTF As Boolean
  439. Dim ReportTitle As String               '报表主标题(Fixed)
  440. Dim Saved As Boolean                    '已经保存
  441. Dim PrintSetFrm As New DY_Dyymsz
  442. Dim ScollBarIsEffect As Boolean         '滚动条是否有效
  443. Dim VScLastP As Integer                 '上一次滚动的值
  444. Dim Str_RightEdit As String             '编辑(新增、修改、删除)权限索引
  445. Dim Str_RightCase As String             '档案权限索引
  446. Dim tIsCode()                           '二维数组,一维存储是否编码(1是0否),2维存储编码
  447. Dim tSysROnly() As Boolean              '工资只读
  448. Dim tReserved() As Boolean              '是否是保留项,对应项目表里的YNRserve字段
  449. Dim tFixed() As Boolean                 '固定字段,这里用来区分不同表
  450. Dim tItmId() As Integer                 '人事项目表里的项目代号     对应原来的帮助按钮.tag
  451. Dim tDataType() As Integer              '数据类型                   对应原来的文本框.tag
  452. Dim tFieldName() As String              '字段名称                   对应原来的标签.tag
  453. Dim FileName As String                  '存储图片文件的文件名
  454. Dim Lrzt As Integer                     '录入状态标志(0-非录入状态 1-增加 2-修改)
  455. Public EmpID As Integer
  456. Dim QuerySet As New ADODB.Recordset     '保存查询结果的记录集
  457. Public ReserveId As Integer
  458. Public QuerySql As String
  459. Public FormOwner As String              '标示本窗体的调用者       Self   //   Query
  460. Public SysOwner As Integer              '标示本窗体是人事系统还是工资系统   0--rs,1--pm
  461. Public ReserveIsOn As Boolean           '表示保留项目功能状态
  462. Private Sub Chk_YNStop_GotFocus()
  463.     
  464. Dim i As Integer
  465.     If Lrzt = 0 Then
  466.         Exit Sub
  467.     End If
  468.     
  469. '隐藏失去焦点的帮助按钮
  470.     For i = 1 To Cmd_CommHlp.UBound
  471.         Cmd_CommHlp(i).Visible = False
  472.     Next i
  473. End Sub
  474. Private Sub Chk_YNStop_KeyPress(KeyAscii As Integer)
  475.     If KeyAscii = 13 Then
  476.         SendKeys "{Tab}"
  477.     End If
  478. End Sub
  479. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
  480.     If Shift = 2 Then
  481.         With Me.SzToolbar
  482.             Select Case KeyCode
  483.                 Case vbKeyA                                                                 '新增   Ctrl-A
  484.                     If .Buttons("New").Visible And .Buttons("New").Enabled Then
  485.                         Call SzToolbar_ButtonClick(.Buttons("New"))
  486.                     End If
  487.                 Case vbKeyE                                                                 '修改   Ctrl-E
  488.                     If .Buttons("Modi").Visible And .Buttons("Modi").Enabled Then
  489.                         Call SzToolbar_ButtonClick(.Buttons("Modi"))
  490.                     End If
  491.                 Case vbKeyS                                                                 '保存   Ctrl-S
  492.                     If .Buttons("Save").Visible And .Buttons("Save").Enabled Then
  493.                         Call SzToolbar_ButtonClick(.Buttons("Save"))
  494.                     End If
  495.                 Case vbKeyHome                                                              '首个   Ctrl-Home
  496.                     If .Buttons("First").Visible And .Buttons("First").Enabled Then
  497.                         Call SzToolbar_ButtonClick(.Buttons("First"))
  498.                     End If
  499.                 Case vbKeyPageUp                                                            '上个   Ctrl-PageUp
  500.                     If .Buttons("Previous").Visible And .Buttons("Previous").Enabled Then
  501.                         Call SzToolbar_ButtonClick(.Buttons("Previous"))
  502.                     End If
  503.                 Case vbKeyPageDown                                                          '下个   Ctrl-PageDown
  504.                     If .Buttons("Next").Visible And .Buttons("Next").Enabled Then
  505.                         Call SzToolbar_ButtonClick(.Buttons("Next"))
  506.                     End If
  507.                 Case vbKeyEnd                                                               '末尾   Ctrl-End
  508.                     If .Buttons("Last").Visible And .Buttons("Last").Enabled Then
  509.                         Call SzToolbar_ButtonClick(.Buttons("Last"))
  510.                     End If
  511.             End Select
  512.         End With
  513.     End If
  514.     If KeyCode = vbKeyEscape Then                                                       '取消   Escape
  515.         If SzToolbar.Buttons("Cancel").Visible And SzToolbar.Buttons("Cancel").Enabled Then
  516.             Call SzToolbar_ButtonClick(SzToolbar.Buttons("Cancel"))
  517.         End If
  518.     End If
  519.     If KeyCode = vbKeyDelete Then                                                       '删除   Delete
  520.         If SzToolbar.Buttons("Del").Visible And SzToolbar.Buttons("Del").Enabled Then
  521.             Call SzToolbar_ButtonClick(SzToolbar.Buttons("Del"))
  522.         End If
  523.     End If
  524. End Sub
  525. '=========================通用部分==================================
  526. Public Sub Form_Load()
  527. Dim i As Integer
  528. Dim tmpRs As New ADODB.Recordset
  529. '--------------------------两种调用共有----------------------------
  530.     ReportTitle = "人事基本信息"
  531.     XtReportCode = "Rs_EdArInfo"
  532.     ReserveIsOn = False
  533.     Call CreateCtrls(SysOwner)
  534.     ReserveIsOn = False
  535.     
  536. '--------------------------直接调用处理----------------------------
  537.     If FormOwner = "Self" Then
  538.         Me.Tag = "Init"
  539.         EmpID = 0
  540.         lID.Caption = EmpID
  541.         SwitchToolBar ("0")
  542.         SzToolbar.Buttons("First").Visible = False                  '首张
  543.         SzToolbar.Buttons("Previous").Visible = False               '上张
  544.         SzToolbar.Buttons("Next").Visible = False                   '下张
  545.         SzToolbar.Buttons("Last").Visible = False                   '末张
  546.         SzToolbar.Buttons("sp").Visible = False                     '分隔
  547.         Call SetTxtStatus(False, True, False, Lrzt)
  548.     End If
  549. '------------------------查询调用处理--------------------------------
  550.     If FormOwner = "Query" Then
  551.         lID.Caption = EmpID
  552.         lpId.Caption = lID.Caption
  553.         Xtfhcs = ""
  554.         Set QuerySet = Cw_DataEnvi.DataConnect.Execute(QuerySql)
  555.         QuerySet.Find "Rs_BasicInfo#EmpID  = " & EmpID
  556.       
  557.         Call SetTxtStatus(True, True, False, Lrzt)
  558.         LoadData (EmpID)
  559.         SwitchToolBar ("0")
  560.     End If
  561.     
  562. '-----------------------------其他-----------------------------------
  563.     If SysOwner = 1 Then
  564.         SzToolbar.Buttons("New").Visible = False
  565.         SzToolbar.Buttons("Del").Visible = False
  566.     End If
  567.     
  568.     Set tmpRs = Cw_DataEnvi.DataConnect.Execute("SELECT ItemParameter FROM Rs_OtherSet WHERE ItemName = 'ReserveID' ")
  569.     If Not tmpRs.EOF Then ReserveId = tmpRs.Fields("ItemParameter")
  570.     '编辑(新增、修改、删除)权限索引
  571.     Str_RightEdit = "Rs_Ed_EmpArInfo_Edit"
  572.     '档案权限
  573.     Str_RightCase = "Rs_Ed_EmpArInfo_archives"
  574. End Sub
  575. Private Sub Txt_RsItm_GotFocus(Index As Integer)
  576.     
  577. Dim i As Integer
  578.     If Lrzt = 0 Then
  579.         Exit Sub
  580.     End If
  581. '使文本框可见
  582.     Pi_move Txt_RsItm(Index)
  583. '首先隐藏失去焦点的帮助按钮
  584.     For i = 1 To Cmd_CommHlp.UBound
  585.         If Cmd_CommHlp(i).Visible = True Then
  586.             Cmd_CommHlp(i).Visible = False
  587.         End If
  588.     Next i
  589. '然后根据帮助按钮的有效与否,在得到焦点的文本框旁边显示帮助按钮
  590.     If (Cmd_CommHlp(Index).Tag = 1) Or (Cmd_CommHlp(Index).Tag = 2 And Lrzt = 2) Then Cmd_CommHlp(Index).Visible = True
  591. End Sub
  592. Private Sub Pic_Emp_DblClick()
  593. '调用通用打开文件对话框,选定文件
  594.     CommDlg_pic.ShowOpen
  595.     On Error GoTo errD
  596.     If Trim(CommDlg_pic.FileName) <> "" Then
  597.         Pic_Emp.Picture = LoadPicture(CommDlg_pic.FileName)
  598.         Pic_Emp.Tag = Trim(CommDlg_pic.FileName)
  599.     End If
  600. errD:
  601. End Sub
  602. Public Sub Txt_RsItm_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
  603.  '焦点移动处理          KeyCode=113 是 F2
  604.  Dim tmpRs As New ADODB.Recordset
  605.  Dim EmpNo As String
  606.     If KeyCode = 113 And Cmd_CommHlp(Index).Tag <> 0 Then
  607.         Cmd_CommHlp_Click (Index)
  608.     End If
  609.     
  610.     If KeyCode = 13 Then
  611.         If UCase(tFieldName(Index)) = "EMPNO" And Cmd_CommHlp(Index).Visible = True Then
  612.             EmpNo = Trim(Txt_RsItm(Index).Text)
  613.             EmpID = GetIdByNo(EmpNo)
  614.             If EmpID = 0 Then Call Xtxxts("该职工号无效!", 0, 1): Exit Sub
  615.             Call LoadData(EmpID)
  616.             Call SetTxtStatus(False, False, False, Lrzt)
  617.             Exit Sub
  618.         End If
  619.         SendKeys "{Tab}", True
  620.     End If
  621. End Sub
  622. Private Sub Txt_RsItm_KeyPress(Index As Integer, KeyAscii As Integer)
  623.     '判断输入的有效性
  624.     If KeyAscii = 39 Then KeyAscii = 0
  625.     Select Case tDataType(Index)
  626.            Case 2
  627.                Call InputFieldLimit(Txt_RsItm(Index), 7, KeyAscii)
  628.            Case 1
  629.                Call InputFieldLimit(Txt_RsItm(Index), 6, KeyAscii)
  630.            Case 5                                                   '控制数字型录入
  631.                Call InputFieldLimit(Txt_RsItm(Index), 5, KeyAscii)
  632.     End Select
  633. End Sub
  634. Private Sub Txt_RsItm_LostFocus(Index As Integer)
  635. '失去焦点时作有效判断
  636.     Call DataIsEffect(Index)
  637. End Sub
  638. Private Sub Pi_move(ob As Object)   '屏幕滚动
  639.     Dim i As Integer
  640.     Dim lPos As Long
  641.     For i = Me.VScBar.Min To Me.VScBar.Max
  642.         If ob.Top >= i * (Me.Height - 2000) And ob.Top <= (i + 1) * (Me.Height - 2000) Then
  643.             Exit For
  644.         End If
  645.     Next i
  646.     If i <= Me.VScBar.Max And i <> Me.VScBar Then
  647.         Me.VScBar.Value = i
  648.     End If
  649.     
  650. End Sub
  651. Private Sub Cmd_CommHlp_MouseMove(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
  652.     H_MoveInt = Index
  653. End Sub
  654. Private Function SavePic2DB(ByVal rs As ADODB.Recordset, ByVal emp_id As String) As Boolean
  655. '把图片文件以字节形式存储进数据库
  656.   ' note: this requires the record to already exist - it will insert the
  657.   ' picture at the current position in the recordset
  658.   ' Returns true if success - false otherwise
  659.   Const BlockSize = 15000
  660.   
  661.   Dim ByteData() As Byte                                      '存储图片文件的字节数组
  662.   Dim SourceFile As Integer
  663.   Dim FileLength As Long
  664.   Dim Numblocks As Integer
  665.   Dim LeftOver As Long: Dim s As Integer
  666.  On Error GoTo Line1
  667.   
  668. With Pic_Emp
  669.   SourceFile = FreeFile
  670.   
  671.   '以二进制形式打开文件
  672.   Open .Tag For Binary Access Read As SourceFile
  673.   
  674.   '获得文件长度
  675.   FileLength = LOF(SourceFile)
  676.   If FileLength = 0 Then                                       '字节数为0,退出
  677.     Close SourceFile
  678.     SavePic2DB = False
  679.     Exit Function
  680.   Else
  681.     '首先分解图片为几块
  682.     Numblocks = FileLength  BlockSize
  683.     LeftOver = FileLength Mod BlockSize
  684.     ReDim ByteData(LeftOver)
  685.     
  686.     '读取文件到数组
  687.     Get SourceFile, , ByteData()
  688.     rs.Fields("Pic").AppendChunk ByteData()
  689.     ReDim ByteData(BlockSize)
  690.     For s = 1 To Numblocks
  691.       Get SourceFile, , ByteData()
  692.       rs.Fields("Pic").AppendChunk ByteData()
  693.     Next s
  694.     rs.Update
  695.     '存储成功,返回true
  696.     Close SourceFile
  697.     SavePic2DB = True
  698.   End If
  699.   
  700. End With
  701. Line1:
  702. End Function
  703. Public Function getPicture(strPicField As String, ByVal rs As ADODB.Recordset) As Boolean
  704. '从数据库读取图片,生成磁盘文件
  705.   Const BlockSize = 15000
  706.   Dim ByteData() As Byte                                            '以二进制形式存储图片的字节数组
  707.   Dim DestFileNum As Integer
  708.   Dim DiskFile As String
  709.   Dim FileLength As Long                                            '图片文件的长度
  710.   Dim Numblocks As Integer                                          '图片的块数
  711.   Dim LeftOver As Long                                              '剩余部分
  712.   Dim i As Integer
  713.  On Error GoTo Line1
  714.   
  715.   '删除已存在的图形文件
  716.   DiskFile = App.Path & "temp.bmp"
  717.   If Len(Dir$(DiskFile)) > 0 Then
  718.      Kill DiskFile
  719.   End If
  720.     
  721.   '把图片文件分解成几部分
  722.   DestFileNum = FreeFile
  723.   FileLength = rs.Fields(strPicField).ActualSize
  724.   Numblocks = FileLength  BlockSize
  725.   LeftOver = FileLength Mod BlockSize
  726.     
  727.   '打开文件,开始按块存入数据库
  728.   Open DiskFile For Binary As DestFileNum
  729.   rs.Move 0, adBookmarkCurrent
  730.   ByteData() = rs.Fields(strPicField).GetChunk(LeftOver)
  731.   Put DestFileNum, , ByteData()
  732.   For i = 1 To Numblocks
  733.       ByteData() = rs.Fields(strPicField).GetChunk(BlockSize)
  734.       Put DestFileNum, , ByteData()
  735.   Next i
  736.   Close DestFileNum
  737.   getPicture = True
  738. Line1:
  739. End Function
  740. Private Sub Cmd_CommHlp_Click(Index As Integer)
  741. '基本信息输入调用帮助,通用根据情况调用不同类型的帮助
  742.     Dim s As String
  743.     Dim i As Integer
  744. '    ------------------------工号选人----------------------------------------
  745.     If UCase(tFieldName(Index)) = "EMPNO" Then
  746.         SsqlHelp = "Emp"
  747.         Ed_EmpArInfoCorHlp.Show 1
  748.         If Trim(P_Code) <> "" Then
  749.             Txt_RsItm(Index).Text = P_Code
  750.             EmpID = Xtfhcs
  751.             Xtfhcs = ""
  752.             LoadData (EmpID)
  753.         Else
  754.             Exit Sub
  755.         End If
  756.         Call SetTxtStatus(False, False, False, Lrzt)
  757.         For i = 1 To Lbl_ItmName.UBound
  758.             If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus: Exit For
  759.         Next i
  760.         Exit Sub
  761.     End If
  762. '    ------------------------日期性帮助--------------------------------------
  763.     If tDataType(Index) = 7 Then
  764.        Xtfhcs = ""
  765.        XT_calendar.Show 1
  766.        If Xtfhcs <> "" Then
  767.         Txt_RsItm(Index).Text = Xtfhcs
  768.         Xtfhcs = ""
  769.        End If
  770.        Txt_RsItm(Index).SetFocus
  771.        Exit Sub
  772.     End If
  773. '   ---------------------------其他帮助------------------------------------
  774.     SsqlHelp = Str(tItmId(Index))
  775.     Ed_EmpArInfoCorHlp.Show 1
  776.     
  777.     If P_Name <> "" Then
  778.        Txt_RsItm(Index).Text = P_Name
  779.        tIsCode(2, Index) = P_Code
  780.        P_Name = ""
  781.        P_Code = ""
  782.     End If
  783.     If Txt_RsItm(Index).Enabled = True Then Txt_RsItm(Index).SetFocus
  784. End Sub
  785. Private Sub VScBar_Change()     '滚动条
  786.     If ScollBarIsEffect = True Then
  787.         Me.Pict.Top = -(Me.VScBar.Value * (Me.Height - 2000))
  788.     End If
  789.     
  790. End Sub
  791. '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  792. Private Sub SzToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
  793. '对工具条按钮的不同处理
  794. Dim i As Integer
  795. Select Case Button.Key
  796.         Case "PrinterSet"                                                               '打印设置
  797.             PrintSetFrm.Show 1
  798.         Case "Printer"                                                                  '打印
  799.             DY_DytsFrm.Show 1
  800.         Case "Preview"                                                                  '预览
  801.             Print_EmpInfo
  802.         Case "New"                                                                      '新增
  803.             '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  804.             If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  805.                 Exit Sub
  806.             End If
  807.             Call MF_New
  808.         Case "Modi"                                                                     '修改
  809.             '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  810.             If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  811.                 Exit Sub
  812.             End If
  813.             
  814.             Call MF_Modi
  815.         Case "Del"                                                                      '删除
  816.             '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  817.             If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  818.                 Exit Sub
  819.             End If
  820.             Call MF_Del
  821.         Case "Save"                                                                     '保存
  822.             Call MF_Save
  823.         Case "Cancel"                                                                   '取消
  824.             Call MF_Cancel
  825.         Case "Refresh"
  826.             
  827.         Case "First"                                                                    '首个
  828.             Move_Cursor (Button.Key)
  829.         Case "Previous"                                                                 '上一个
  830.             Move_Cursor (Button.Key)
  831.         Case "Next"                                                                     '下一个
  832.             Move_Cursor (Button.Key)
  833.         Case "Last"                                                                     '末尾
  834.             Move_Cursor (Button.Key)
  835.         Case "Set"                                                                      '设定
  836.             '判断用户是否有此功能执行权限,如有则写上机日志(进入)
  837.             If Not Security_Log(Str_RightEdit, Xtczybm, 1, True) Then
  838.                 Exit Sub
  839.             End If
  840.             Ed_EmpArInfoSetFrm.Show 1
  841.             Call SetReserve
  842.         Case "Help"                                                                     '帮助
  843.             Call F1bz
  844.         Case "Exit"                                                                     '退出
  845.             Unload Me
  846. End Select
  847. Exit Sub
  848. Err_Del:
  849. End Sub
  850. '========================自定义过程=================================
  851. Private Function MF_New() As Boolean
  852. '供工具条按钮调用的函数(新增记录),成功返回真,否则假
  853. MF_New = False
  854. On Error GoTo errD
  855.     Lrzt = 1
  856.     EmpID = 0
  857.     SwitchToolBar ("1")
  858.     Call SetTxtStatus(True, False, False, Lrzt)
  859.     ReserveItmRefurbish
  860.     With Me.Txt_RsItm(1)
  861.         If .Enabled And .Visible Then
  862.             .SetFocus
  863.         End If
  864.     End With
  865. MF_New = True
  866. errD:
  867. End Function
  868. Private Function MF_Del() As Boolean
  869. '供工具条按钮调用的函数(删除记录),成功返回真,否则假
  870. MF_Del = False
  871. On Error GoTo errD
  872.     If Not DelArRec(EmpID) Then Exit Function
  873.     Lrzt = 0
  874.     If UCase(FormOwner) = "SELF" Then
  875.         Call SetTxtStatus(True, True, False, Lrzt)
  876.     Else
  877.         lID.Caption = lpId.Caption
  878.         EmpID = lID.Caption
  879.         LoadData (EmpID)
  880.         Call SetTxtStatus(False, True, False, Lrzt)
  881.         If QuerySet.State = 1 Then QuerySet.Close
  882.         Set QuerySet = Cw_DataEnvi.DataConnect.Execute(QuerySql)
  883.         QuerySet.Find "Rs_BasicInfo#EmpID  = " & EmpID
  884.         Qr_RsBasicFrm.BeenModify = True
  885.     End If
  886. MF_Del = True
  887. errD:
  888. End Function
  889. Private Function MF_Modi() As Boolean
  890. '供工具条按钮调用的函数(删除记录),成功返回真,否则假
  891. Dim i As Integer
  892. MF_Modi = False
  893. On Error GoTo errD
  894.     Lrzt = 2
  895.     SwitchToolBar (Lrzt)
  896.     If UCase(FormOwner) = "SELF" Then                                            '窗体是自己打开的
  897.         Call SetTxtStatus(False, True, True, Lrzt)
  898.     Else                                                                         '窗体是经过查询结果调用生成的
  899.         Call SetTxtStatus(False, False, False, Lrzt)
  900.     End If
  901.     For i = 1 To Lbl_ItmName.UBound
  902.         If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus: Exit For
  903.     Next i
  904. MF_Modi = True
  905. Exit Function
  906. errD:
  907. End Function
  908. Private Function MF_Cancel() As Boolean
  909. '供工具条按钮调用的函数(取消动作处理),成功返回真,否则假
  910. MF_Cancel = False
  911. On Error GoTo errD
  912.     If UCase(FormOwner) = "SELF" Then                                           '窗体是自己打开的
  913.         EmpID = 0
  914.         SwitchToolBar (0)
  915.         Call SetTxtStatus(True, True, False, Lrzt)
  916.     Else                                                                        '窗体是经过查询结果调用生成的
  917.         If Lrzt = 1 Then                                                        '从增加状态返回
  918.             SwitchToolBar (0)
  919.             EmpID = lID.Caption
  920.             LoadData (EmpID)
  921.             Call SetTxtStatus(False, True, False, Lrzt)
  922.         End If
  923.         If Lrzt = 2 Then                                                        '从修改状态返回
  924.             SwitchToolBar (0)
  925.             Call SetTxtStatus(False, True, False, Lrzt)
  926.         End If
  927.     End If
  928.     Lrzt = 0
  929. MF_Cancel = True
  930. errD:
  931. End Function
  932. Private Function MF_Save() As Boolean
  933. '供工具条按钮调用的函数(保存记录),成功返回真,否则假
  934. MF_Save = False
  935. On Error GoTo errD
  936.     If Lrzt = 2 And EmpID = 0 Then Exit Function                                     '修改并且还没有选人的时候
  937.     If DataIsEffect(0) Then Call Save
  938.     If Saved Then
  939.         Call Xtxxts("保存成功!", 0, 4)
  940.         SwitchToolBar (0)
  941.         lpId.Caption = lID.Caption
  942.         lID.Caption = EmpID
  943.         Call SetTxtStatus(False, True, False, Lrzt)
  944.         Lrzt = 0
  945. '         如果是查询模式,要刷新记录集a
  946.         If FormOwner = "Query" Then
  947.             If QuerySet.State = 1 Then QuerySet.Close
  948.             Set QuerySet = Cw_DataEnvi.DataConnect.Execute(QuerySql)
  949.             QuerySet.Find "Rs_BasicInfo#EmpID  = " & EmpID
  950.             Qr_RsBasicFrm.BeenModify = True
  951.         End If
  952.         Saved = False
  953.         MF_Save = True
  954.     Else
  955.         Call Xtxxts("保存失败!", 0, 1)
  956.     End If
  957. errD:
  958. End Function
  959. Private Function CorHlpIsEffect(sItmID As String, StrText As String) As Boolean
  960. '校验相关项填写的正确性
  961. '参数说明:sItmID是项目编号,StrText是要校验的内容,可以是编码或是对应条目
  962. Dim RsRec As New Recordset
  963. Dim sSql As String
  964. Dim RsItm As New Recordset
  965.     
  966.     CorHlpIsEffect = False
  967.     '选取文本框对应的人事项目,得到相关项的信息
  968.     Set RsItm = Cw_DataEnvi.DataConnect.Execute("SELECT * FROM Rs_Items WHERE itemId=" & sItmID)
  969.     If Not IsNumeric(Trim(StrText)) Then                                                 '对数字型的相关明细代号                                               '相关项当对应文本框输入编码的情况
  970.         If Trim(RsItm!CorTable) = "Rs_CorSub" Then                                       '首先根据项目名进行查询
  971.             sSql = "SELECT * FROM Rs_CorMain m,Rs_CorSub s WHERE " _
  972.                    & "m.SortId=s.SortId AND m.SortId='" & Trim(RsItm!Correlation) & "' AND listname='" & Trim(StrText) & "'"
  973.         Else
  974.             If UCase(Trim(RsItm!CorTable)) <> "GY_DEPARTMENT" Then
  975.                 sSql = "SELECT * FROM " & RsItm!CorTable & " WHERE " & RsItm!IndexName & "='" & Trim(StrText) & "'"
  976.             Else
  977.                 sSql = "SELECT * FROM " & RsItm!CorTable & " WHERE " & RsItm!IndexName & " like '" & Trim(StrText) & "'"
  978.             End If
  979.         End If
  980.     Else                                                                                 '相关项当文本框输入编码对应文本的情况
  981.         If Trim(RsItm!CorTable) = "Rs_CorSub" Then
  982.             sSql = "SELECT * FROM Rs_CorMain m,Rs_CorSub s WHERE " _
  983.                & "m.SortId=s.SortId AND m.SortId='" & Trim(RsItm!Correlation) & "' AND convert(int,(right(convert(varchar(12),listid),3)))='" & Trim(StrText) & "'"
  984.         Else
  985.             If UCase(Trim(RsItm!CorTable)) <> "GY_DEPARTMENT" Then
  986.                 sSql = "SELECT * FROM " & Trim(RsItm!CorTable) & " WHERE " & RsItm!IndexCode & "='" & Trim(StrText) & "'"
  987.             Else
  988.                 sSql = "SELECT * FROM " & Trim(RsItm!CorTable) & " WHERE " & RsItm!IndexCode & " like '" & Trim(StrText) & "%'"
  989.             End If
  990.         End If
  991.     End If
  992.         
  993.     Set RsRec = Cw_DataEnvi.DataConnect.Execute(sSql)
  994.     If UCase(Trim(RsItm!CorTable)) = "GY_DEPARTMENT" Then                                     '部门组织的相关帮助必须录入末级节点,所以 >1是不可以的
  995.         If RsRec.RecordCount = 1 Then CorHlpIsEffect = True
  996.     Else
  997.         If RsRec.RecordCount > 0 Then CorHlpIsEffect = True
  998.     End If
  999.     If CorHlpIsEffect Then                                                               '找到相关项时
  1000.         If Trim(RsItm!CorTable) = "Rs_CorSub" Then                                       '标准情况:相关项存在Rs_CorSub里
  1001.             P_Name = RsRec!ListName
  1002.             P_Code = RsRec!ListID
  1003.         Else                                                                             '相关项存在其他表里
  1004.             P_Name = Trim(RsRec(Trim(RsItm!IndexName)))
  1005.             P_Code = RsRec(Trim(RsItm!IndexCode))
  1006.         End If
  1007.     End If
  1008.     
  1009.     If RsItm.State = 1 Then
  1010.         RsItm.Close
  1011.         Set RsItm = Nothing
  1012.     End If
  1013.     '关闭记录集,退出
  1014.     RsRec.Close
  1015. Exit Function
  1016. End Function
  1017. Private Function DataIsEffect(Index As Integer) As Boolean
  1018. '有效性判定,控制较松,除工号,姓名,部门以外其他都可以不录
  1019. 'index 表示需要做有效性校验的对象序号,如果index=0 则表示对所有的文本框做有效性校验
  1020.     Dim i As Integer
  1021.     Dim Tsxx As String
  1022.     DataIsEffect = False
  1023.     
  1024. '文本框有效性判定
  1025. If Index = 0 Then                                                              '对所有文本框进行校验
  1026.     For i = 1 To Lbl_ItmName.UBound
  1027.         If UCase(tFieldName(i)) = "EMPNO" And (Trim(Txt_RsItm(i).Text) = "") Then
  1028.             Call Xtxxts("职工号不能为空!", 0, 1)
  1029.             If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1030.             Exit Function
  1031.         End If
  1032.                 
  1033.         If Lrzt = 1 Then
  1034.             If UCase(tFieldName(i)) = "EMPNO" And GetIdByNo(Trim(Txt_RsItm(i).Text)) <> 0 Then
  1035.                 Call Xtxxts("职工号重复!", 0, 1): Exit Function
  1036.             End If
  1037.         End If
  1038.         
  1039.         If UCase(tFieldName(i)) = "EMPNAME" And (Trim(Txt_RsItm(i).Text) = "") Then
  1040.             Call Xtxxts("职工姓名不能为空!", 0, 1)
  1041.             If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1042.             Exit Function
  1043.         End If
  1044.                 
  1045.         If UCase(tFieldName(i)) = "DEPTCODE" And Trim(Txt_RsItm(i).Text) = "" Then
  1046.             Call Xtxxts("部门不能为空!", 0, 1)
  1047.             If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1048.             Exit Function
  1049.         End If
  1050.         
  1051.         If tDataType(i) = 7 And Trim(Txt_RsItm(i).Text) <> "" Then
  1052.             If IsDate(Txt_RsItm(i)) = False Then
  1053.                 Call Xtxxts("非法日期格式! ——" & Format(Date, "yyyy-mm-dd"), 0, 1)
  1054.                 If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1055.                 Exit Function
  1056.             End If
  1057.         End If
  1058.         
  1059.         If tDataType(i) = 5 And Trim(Txt_RsItm(i).Text) <> "" Then
  1060.             If IsNumeric(Txt_RsItm(i)) = False Then
  1061.                 Call Xtxxts("录入数据不是数字!", 0, 1)
  1062.                 If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1063.                 Exit Function
  1064.             End If
  1065.         End If
  1066.         
  1067.         If tIsCode(1, i) = 1 Then                                                '对编码型的数据只要不为空,就要检测有效性
  1068.             If tDataType(i) <> 7 Then
  1069.                 If Trim(Txt_RsItm(i).Text) <> "" Then
  1070.                     If CorHlpIsEffect(Str(tItmId(i)), Trim(Txt_RsItm(i).Text)) = True Then
  1071.                         Txt_RsItm(i).Text = Trim(P_Name)
  1072.                         tIsCode(2, i) = Trim(P_Code)
  1073.                     Else
  1074.                         Call Xtxxts("非法录入,没有此" & Lbl_ItmName(Index).Caption, 0, 1)
  1075.                         If Txt_RsItm(i).Enabled Then Txt_RsItm(i).SetFocus
  1076.                         Exit Function
  1077.                     End If
  1078.                 Else
  1079.                     tIsCode(2, i) = ""
  1080.                 End If
  1081.             End If
  1082.         End If
  1083.      Next i
  1084.      
  1085. Else                                                                                '只对txt_RsItm(index)校验
  1086.     If Cmd_CommHlp(Index).Tag = 1 Then                                              ' 备注: 除此以外 还要针对职工号检查
  1087.         If tDataType(Index) = 7 And Trim(Txt_RsItm(Index).Text) <> "" Then
  1088.             If IsDate(Txt_RsItm(Index)) = False Then
  1089.                 Call Xtxxts("非法日期格式! ——" & Format(Date, "yyyy-mm-dd"), 0, 1)
  1090.                 If Txt_RsItm(Index).Enabled Then Txt_RsItm(Index).SetFocus
  1091.                 Exit Function
  1092.             End If
  1093.         End If
  1094.         If tIsCode(1, Index) = 1 Then                                                '对编码型的数据只要不为空,就要检测有效性
  1095.             If tDataType(Index) <> 7 Then
  1096.                 If Trim(Txt_RsItm(Index).Text) <> "" Then
  1097.                     If CorHlpIsEffect(Str(tItmId(Index)), Trim(Txt_RsItm(Index).Text)) = True Then
  1098.                         Txt_RsItm(Index).Text = Trim(P_Name)
  1099.                         tIsCode(2, Index) = Trim(P_Code)
  1100.                     Else
  1101.                         Tsxx = "非法录入,没有此" & Lbl_ItmName(Index).Caption
  1102.                         If UCase(Trim(tFieldName(Index))) = "DEPTCODE" Then Tsxx = Tsxx + "或者录入的不是末级节点!"
  1103.                         Call Xtxxts(Tsxx, 0, 1)
  1104.                         If Txt_RsItm(Index).Enabled Then Txt_RsItm(Index).Text = "": Txt_RsItm(Index).SetFocus
  1105.                         Exit Function
  1106.                     End If
  1107.                 Else
  1108.                     tIsCode(2, i) = ""
  1109.                 End If
  1110.             End If
  1111.         End If
  1112.     End If
  1113.     End If
  1114.     DataIsEffect = True
  1115.     
  1116. End Function
  1117. Private Function SetReserve() As Boolean
  1118. Dim tmpRs As New ADODB.Recordset
  1119. Dim i As Integer
  1120.     Set tmpRs = Cw_DataEnvi.DataConnect.Execute("SELECT * FROM Rs_Items WHERE (SID='1' AND YNShow='1') ORDER BY Tab")
  1121.     ReDim Preserve tReserved(tmpRs.RecordCount)
  1122.     i = 1
  1123.     While Not tmpRs.EOF
  1124.         If IsNull(tmpRs.Fields("YNReserve")) Or tmpRs.Fields("YNReserve") = False Then tReserved(i) = False
  1125.         If tmpRs.Fields("YNReserve") = True Then tReserved(i) = True
  1126.         tmpRs.MoveNext
  1127.         i = i + 1
  1128.     Wend
  1129. End Function
  1130. Private Function DelArRec(emp_id As Integer) As Boolean
  1131. '删除人事档案基本信息,如果删除成功返回真,否则返回假
  1132. Dim yn As String
  1133.     DelArRec = False
  1134.     If EmpID = 0 Then Exit Function
  1135.     yn = Xtxxts("真的要删除此档案? ", 2, 2)
  1136.     If yn = vbCancel Then Exit Function
  1137.     On Error GoTo Err_Del
  1138.         Cw_DataEnvi.DataConnect.BeginTrans
  1139.         '自定义
  1140.             Cw_DataEnvi.DataConnect.Execute "DELETE Rs_ExtendInfo WHERE EmpID=" & EmpID
  1141.             Cw_DataEnvi.DataConnect.Execute "DELETE Rs_BasicInfo WHERE EmpID=" & EmpID
  1142.         
  1143.         Cw_DataEnvi.DataConnect.CommitTrans
  1144.     EmpID = 0
  1145.     DelArRec = True
  1146.     Exit Function
  1147. Err_Del:
  1148.     Cw_DataEnvi.DataConnect.CommitTrans
  1149.     If Err.Number = -2147217873 Then                '(-2147217873 为SQL Server 2000通过建立外键产生的错误号)
  1150.         Call Xtxxts("该人员档案已经被使用,不能删除!", 0, 1)
  1151.         Exit Function
  1152.     Else
  1153.         Call Xtxxts("出现未知情况,该人员档案不能被删除!", 0, 1)
  1154.         Exit Function
  1155.     End If
  1156. End Function
  1157. Private Sub Save()              '保存数据
  1158. Dim i As Integer
  1159. Dim EmpNo As String             '职工号
  1160. Dim Ssql1 As String             '对应非固定项(Rs_ExtendInfo中的字段)的名称(FieldName)
  1161. Dim Ssql2 As String             '对应非固定项(Rs_ExtendInfo中的字段)的值
  1162. Dim Ssql3 As String             '对应固定项(Rs_BasicInfo中的字段)的名称(FieldName)
  1163. Dim Ssql4 As String             '对应固定项(Rs_BasicInfo中的字段)的值
  1164. Dim SsqlR As String             '专门针对保留项目的查询语句
  1165. Dim tmpRs As New Recordset: Dim MAXID_Z As Integer
  1166. Saved = False
  1167. If Lbl_ItmName.Count < 2 Then Call Xtxxts("没有项目!", 0, 1): Exit Sub
  1168. EmpNo = Trim(Txt_RsItm(1).Text)                                                       '工号
  1169. For i = 1 To Lbl_ItmName.UBound
  1170.     If tFixed(i) = True Then                                                             '首先整理固定字段 Rs_BasicInfo,将字段名和值的sql语句拼好
  1171.         If Lrzt = 1 Then                                                              '增加
  1172.             Ssql3 = Ssql3 & tFieldName(i) & ","
  1173.             If tIsCode(1, i) = 1 Then                                                 '是编码型的就存编码,否则存名称,这里的数组的初值是根据有无相关项决定的
  1174.                 Ssql4 = Ssql4 & "'" & tIsCode(2, i) & "',"
  1175.             Else
  1176.                 Select Case tDataType(i)
  1177.                     Case 7
  1178.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1179.                            '没填的日期型字段存NULL
  1180.                             Ssql4 = Ssql4 & "null,"
  1181.                         Else
  1182.                             Ssql4 = Ssql4 & "'" & Format(Trim(Txt_RsItm(i).Text), "yyyy-mm-dd") & "',"
  1183.                         End If
  1184.                     Case 5
  1185.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1186.                             '没填的数字型字段存0
  1187.                             Ssql4 = Ssql4 & "0,"
  1188.                         Else
  1189.                             Ssql4 = Ssql4 & Trim(Txt_RsItm(i).Text) & ","
  1190.                         End If
  1191.                     Case Else
  1192.                         If UCase(tFieldName(i)) = "YNSTOP" Then
  1193.                             Ssql4 = Ssql4 & "'" & Chk_YNStop.Value & "',"
  1194.                         Else
  1195.                             Ssql4 = Ssql4 & "'" & Trim(Txt_RsItm(i).Text) & "',"
  1196.                         End If
  1197.                     End Select
  1198.             End If
  1199.         Else                                                    '修改
  1200.             If tIsCode(1, i) = 1 Then
  1201.                 Ssql3 = Ssql3 & tFieldName(i) & "='" & tIsCode(2, i) & "',"
  1202.             Else
  1203.                 Select Case tDataType(i)
  1204.                     Case 7
  1205.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1206.                             '没填的日期型字段存NULL
  1207.                             Ssql3 = Ssql3 & tFieldName(i) & "= null,"
  1208.                         Else
  1209.                             Ssql3 = Ssql3 & tFieldName(i) & "='" & Format(Trim(Txt_RsItm(i).Text), "yyyy-mm-dd") & "',"
  1210.                         End If
  1211.                     Case 5
  1212.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1213.                             '没填的数字型字段存0
  1214.                             Ssql3 = Ssql3 & tFieldName(i) & "= 0,"
  1215.                         Else
  1216.                             Ssql3 = Ssql3 & tFieldName(i) & "=" & Trim(Txt_RsItm(i).Text) & ","
  1217.                         End If
  1218.                     Case Else
  1219.                         If UCase(tFieldName(i)) = "YNSTOP" Then
  1220.                             Ssql3 = Ssql3 & tFieldName(i) & "='" & Chk_YNStop.Value & "',"
  1221.                         Else
  1222.                             Ssql3 = Ssql3 & tFieldName(i) & "='" & Trim(Txt_RsItm(i).Text) & "',"
  1223.                         End If
  1224.                 End Select
  1225.                 
  1226.             End If
  1227.         End If
  1228.     Else
  1229.     '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  1230. '然后整理非固定字段 Rs_ExtendInfo,将字段名和值的sql语句拼好
  1231.         If Lrzt = 1 Then                                                               '新增状态的sql
  1232.             Ssql1 = Ssql1 & tFieldName(i) & ","
  1233.             If tIsCode(1, i) = 1 Then                                                  '编码
  1234.                 Ssql2 = Ssql2 & "'" & tIsCode(2, i) & "',"
  1235.             Else                                                                       '非编码
  1236.                 Select Case tDataType(i)
  1237.                     Case 7
  1238.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1239.                             '没填的日期型字段存NULL
  1240.                             Ssql2 = Ssql2 & " null,"
  1241.                         Else
  1242.                             Ssql2 = Ssql2 & "'" & Format(Trim(Txt_RsItm(i).Text), "yyyy-mm-dd") & "',"
  1243.                         End If
  1244.                     Case 5
  1245.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1246.                             '没填的数字型字段存0
  1247.                             Ssql2 = Ssql2 & " 0,"
  1248.                         Else
  1249.                             Ssql2 = Ssql2 & Trim(Txt_RsItm(i).Text) & ","
  1250.                         End If
  1251.                     Case Else
  1252.                         Ssql2 = Ssql2 & "'" & Trim(Txt_RsItm(i).Text) & "',"
  1253.                 End Select
  1254.                     
  1255.             End If
  1256.         Else                                                                           '修改状态的sql
  1257.             If tIsCode(1, i) = 1 Then                                                  '编码
  1258.                 Ssql1 = Ssql1 & tFieldName(i) & "='" & tIsCode(2, i) & "',"
  1259.             Else                                                                       '非编码
  1260.                 Select Case tDataType(i)
  1261.                     Case 7
  1262.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1263.                             '没填的日期型字段存NULL
  1264.                             Ssql1 = Ssql1 & tFieldName(i) & "= null, "
  1265.                         Else
  1266.                             Ssql1 = Ssql1 & tFieldName(i) & "='" & Format(Trim(Txt_RsItm(i).Text), "yyyy-mm-dd") & "',"
  1267.                         End If
  1268.                     Case 5
  1269.                         If Trim(Txt_RsItm(i).Text) = "" Then
  1270.                             '没填的数字型字段存0
  1271.                             Ssql1 = Ssql1 & tFieldName(i) & "= 0, "
  1272.                         Else
  1273.                             Ssql1 = Ssql1 & tFieldName(i) & "=" & Trim(Txt_RsItm(i).Text) & ","
  1274.                         End If
  1275.                     Case Else
  1276.                         Ssql1 = Ssql1 & tFieldName(i) & "='" & Trim(Txt_RsItm(i).Text) & "',"
  1277.                 End Select
  1278.             End If
  1279.         End If
  1280.     End If
  1281. Next i
  1282.     
  1283. On Error GoTo Quit_Err
  1284.     '去掉最后的逗号
  1285.     If Trim(Ssql1) <> "" Then Ssql1 = Mid(Trim(Ssql1), 1, Len(Trim(Ssql1)) - 1)
  1286.     If Trim(Ssql3) <> "" Then Ssql3 = Mid(Trim(Ssql3), 1, Len(Trim(Ssql3)) - 1)
  1287.     
  1288.     Cw_DataEnvi.DataConnect.BeginTrans
  1289.     If Lrzt = 1 Then
  1290.         '新增记录
  1291.         Set tmpRs = Cw_DataEnvi.DataConnect.Execute("SELECT MAXID=MAX(EmpID) from Rs_BasicInfo")
  1292.         MAXID_Z = Val("" & tmpRs!maxid) + 1
  1293.         EmpID = MAXID_Z
  1294.         If Trim(Ssql1) <> "" Then
  1295.             Ssql1 = "INSERT INTO  Rs_ExtendInfo( EmpID," & Ssql1 & ") VALUES ( " & MAXID_Z & "," & Mid(Ssql2, 1, Len(Ssql2) - 1) & ")"
  1296.         Else
  1297.             Ssql1 = "INSERT INTO Rs_ExtendInfo( EmpID) VALUES ( " & MAXID_Z & ")"
  1298.         End If
  1299.         
  1300.         Ssql3 = "INSERT INTO Rs_BasicInfo( EmpID," & Ssql3 & ") VALUES( " & MAXID_Z & "," & Mid(Ssql4, 1, Len(Ssql4) - 1) & ") "
  1301.         tmpRs.Close
  1302.     Else
  1303.         '修改记录
  1304.         Ssql3 = "UPDATE Rs_BasicInfo SET " & Ssql3 & " WHERE EmpID=" & EmpID
  1305.         
  1306.         If Trim(Ssql1) <> "" Then
  1307.             Ssql1 = "UPDATE Rs_ExtendInfo SET " & Ssql1 & " WHERE EmpID=" & EmpID
  1308.             
  1309.         End If
  1310.     End If
  1311.     Cw_DataEnvi.DataConnect.Execute Ssql3
  1312.     
  1313.     If Trim(Ssql1) <> "" Then Cw_DataEnvi.DataConnect.Execute Ssql1
  1314.     
  1315. '   设置辅助保留项目
  1316.     SsqlR = "UPDATE Rs_OtherSet SET ItemParameter = '" & EmpID & "' WHERE ItemName= 'ReserveID'"
  1317.     Cw_DataEnvi.DataConnect.Execute SsqlR
  1318.     
  1319. '存储图片
  1320.     If Trim(Pic_Emp.Tag) <> "" Then
  1321.             Cw_DataEnvi.DataConnect.Execute ("UPDATE Rs_BasicInfo SET pic = Null WHERE EmpId = '" & EmpID & "'")
  1322.             Dim map As New ADODB.Recordset
  1323.             map.Open "SELECT * FROM Rs_BasicInfo WHERE EmpId='" & EmpID & "'", Cw_DataEnvi.DataConnect, adOpenStatic, adLockOptimistic
  1324.             SavePic2DB map, EmpID
  1325.             map.Close
  1326.     End If
  1327.       
  1328.     Cw_DataEnvi.DataConnect.CommitTrans
  1329.     
  1330.     Saved = True
  1331. Exit Sub
  1332. Quit_Err:
  1333.     Saved = False
  1334. End Sub
  1335. Private Function GetIdByNo(emp_No As String) As Integer
  1336. '根据职工号获取id的函数,未停用的
  1337. Dim tmpDataRs As New ADODB.Recordset
  1338. Dim tmpStr As String
  1339. GetIdByNo = 0
  1340. tmpStr = "SELECT EmpId FROM Rs_BasicInfo WHERE empNo = '" & Trim(emp_No) & "' AND YNStop = 0"
  1341. Set tmpDataRs = Cw_DataEnvi.DataConnect.Execute(tmpStr)
  1342. If Not tmpDataRs.EOF Then
  1343.     GetIdByNo = tmpDataRs.Fields("EmpId")
  1344. End If
  1345. Set tmpDataRs = Nothing
  1346. End Function
  1347. Private Function LoadData(emp_id As Integer) As Boolean
  1348. '取出数据填充文本框
  1349. Dim tmpDataRs As New ADODB.Recordset
  1350. Dim tmpStr As String
  1351. Dim i As Integer
  1352. LoadData = True
  1353. On Error GoTo ErrDeal
  1354. '打开记录集,获得数据
  1355. tmpStr = Item_Info(SysOwner) & " where b.EmpId=" & emp_id & " and b.EmpId=e.EmpId"
  1356. Set tmpDataRs = Cw_DataEnvi.DataConnect.Execute(tmpStr)
  1357. If tmpDataRs.EOF Then LoadData = False: Exit Function
  1358. '--清空文本框和图片栏
  1359.     For i = 1 To Lbl_ItmName.UBound
  1360.         Txt_RsItm(i).Text = ""
  1361.     Next i
  1362.     Chk_YNStop.Value = 0
  1363.     Pic_Emp.Picture = LoadPicture("")
  1364.     Pic_Emp.Tag = ""
  1365. '--填充文本框
  1366. For i = 1 To Lbl_ItmName.Count - 1
  1367.     
  1368.     If tIsCode(1, i) = 1 Then                                                                       '编码型的显示编码对应的值
  1369.         Txt_RsItm(i).Text = Trim("" & tmpDataRs.Fields("N_" + tFieldName(i)))
  1370.         tIsCode(2, i) = "" & tmpDataRs.Fields(tFieldName(i))
  1371.     Else                                                                                            '非编码的直接显示
  1372.         Txt_RsItm(i).Text = Trim("" & tmpDataRs.Fields(tFieldName(i)))
  1373.         If tDataType(i) = 7 And Not IsNull(tmpDataRs.Fields(tFieldName(i))) Then Txt_RsItm(i).Text = Format(tmpDataRs.Fields(tFieldName(i)), "yyyy-mm-dd")
  1374.         If UCase(tFieldName(i)) = "YNSTOP" Then                                                     '对停用复选框单独处理
  1375.             If tmpDataRs.Fields(tFieldName(i)) Then
  1376.                 Chk_YNStop.Value = 1
  1377.             Else
  1378.                 Chk_YNStop.Value = 0
  1379.             End If
  1380.         End If
  1381.     End If
  1382. Next
  1383. '--填充图片内容
  1384. Set tmpDataRs = Cw_DataEnvi.DataConnect.Execute("SELECT Pic FROM Rs_BasicInfo WHERE EmpId = '" & EmpID & "'")
  1385. If Not tmpDataRs.EOF Then
  1386.     If tmpDataRs.Fields("Pic").ActualSize = 0 Then Exit Function
  1387.     Call getPicture("Pic", tmpDataRs)
  1388.     Pic_Emp.Picture = LoadPicture(App.Path & "temp.bmp")
  1389. End If
  1390. Set tmpDataRs = Nothing
  1391. Exit Function
  1392. ErrDeal:
  1393. LoadData = False
  1394. End Function
  1395. Private Function SetTxtStatus(aClear As Boolean, aLock As Boolean, modi As Boolean, aLrzt As Integer) As Boolean
  1396. '根据需要设置文本框的状态,aClear 清空文本框,aLock 锁定文本框, modi 针对修改时工号帮助的锁定
  1397. Dim i As Integer
  1398. SetTxtStatus = True
  1399. On Error GoTo ErrDeal
  1400. If aClear Then                                                      '对文本框清空的处理
  1401.     For i = 1 To Lbl_ItmName.UBound
  1402.         Txt_RsItm(i).Text = ""
  1403.         tIsCode(2, i) = ""                                          '对应的编码也清掉
  1404.     Next i
  1405.     Chk_YNStop.Value = 0
  1406.     Pic_Emp.Picture = LoadPicture("")
  1407.     Pic_Emp.Tag = ""
  1408. End If
  1409. If aLock Then                                                       '对文本框锁定的处理
  1410.     For i = 1 To Lbl_ItmName.UBound
  1411.         Txt_RsItm(i).Enabled = False
  1412.         Cmd_CommHlp(i).Visible = False
  1413.     Next i
  1414.     Chk_YNStop.Enabled = False
  1415.     Pic_Emp.Enabled = False
  1416. Else                                                                '解锁
  1417.     For i = 1 To Lbl_ItmName.UBound
  1418.         Txt_RsItm(i).Enabled = True
  1419.     Next i
  1420.     Chk_YNStop.Enabled = True
  1421.     Pic_Emp.Enabled = True
  1422. End If
  1423. If aLrzt = 1 Then Exit Function                                     '对新增状态不需要对工号文本框单独关照
  1424. If modi Then
  1425.     For i = 1 To Lbl_ItmName.UBound
  1426.         Txt_RsItm(i).Enabled = False
  1427.         If UCase(tFieldName(i)) = "EMPNO" Then
  1428.             Txt_RsItm(i).Enabled = True
  1429.             Cmd_CommHlp(i).Visible = True
  1430.             Cmd_CommHlp(i).Enabled = True
  1431.             Exit For
  1432.         End If
  1433.     Next i
  1434. Else
  1435.     For i = 1 To Lbl_ItmName.UBound
  1436.         If UCase(tFieldName(i)) = "EMPNO" Then
  1437.             Txt_RsItm(i).Enabled = False
  1438.             Cmd_CommHlp(i).Visible = False
  1439.             Cmd_CommHlp(i).Enabled = False
  1440.             
  1441.             Exit For
  1442.         End If
  1443.     Next i
  1444. End If
  1445. '如果是工资系统,则有部分文本框被锁定
  1446. For i = 1 To Lbl_ItmName.UBound
  1447.     If SysOwner = 1 And tSysROnly(i) = True And UCase(tFieldName(i)) <> "EMPNO" Then
  1448.         Txt_RsItm(i).Enabled = False
  1449.     End If
  1450. Next i
  1451. If SysOwner = 1 Then Pic_Emp.Enabled = False
  1452. Exit Function
  1453. ErrDeal:
  1454. SetTxtStatus = False
  1455. End Function
  1456. Private Sub Move_Cursor(Direct As String)
  1457. '参数:设置游标的移动方向,用4个单词来识别
  1458. Dim i As Integer
  1459.     
  1460.     With QuerySet
  1461.     If .RecordCount = 0 Then Exit Sub
  1462.     Select Case UCase(Trim(Direct))
  1463.         Case "FIRST"
  1464.             .MoveFirst
  1465.         Case "PREVIOUS"
  1466.             .MovePrevious
  1467.             If .BOF Then
  1468.                 .MoveFirst
  1469.                 Exit Sub
  1470.             End If
  1471.         Case "NEXT"
  1472.             .MoveNext
  1473.             If .EOF Then
  1474.                 .MoveLast
  1475.                 Exit Sub
  1476.             End If
  1477.         Case "LAST"
  1478.             .MoveLast
  1479.     End Select
  1480.     EmpID = .Fields("Rs_BasicInfo#EmpID")
  1481.     lpId.Caption = lID.Caption
  1482.     lID.Caption = EmpID
  1483.     Call LoadData(EmpID)
  1484.     Call SetTxtStatus(False, True, False, Lrzt)
  1485.     
  1486. End With
  1487. End Sub
  1488. Private Sub SwitchToolBar(Status As Integer)
  1489. '设置工具栏状态  0.非编辑状态  1.编辑状态(新增) 2.编辑状态(修改)
  1490. With SzToolbar
  1491. Select Case Status
  1492.     Case 0:             '浏览((列表)调入单据处理时的进入状态、(列表)新增状态时放弃录入)
  1493.         '工具条
  1494.         Me.Caption = "人事信息维护"
  1495.         .Buttons("PrinterSet").Enabled = True          '打印设置
  1496.         .Buttons("Printer").Enabled = True             '打印
  1497.         .Buttons("Preview").Enabled = True             '预览
  1498.         .Buttons("New").Enabled = True                 '新增
  1499.         .Buttons("Modi").Enabled = True                '修改
  1500.         .Buttons("Del").Enabled = True                 '删除
  1501.         .Buttons("Save").Enabled = False               '保存
  1502.         .Buttons("Cancel").Enabled = False             '放弃
  1503.         .Buttons("First").Enabled = True               '首张
  1504.         .Buttons("Previous").Enabled = True            '上张
  1505.         .Buttons("Next").Enabled = True                '下张
  1506.         .Buttons("Last").Enabled = True                '末张
  1507.         .Buttons("Set").Enabled = True                 '设定
  1508.         .Buttons("Help").Enabled = True                '帮助
  1509.         .Buttons("Exit").Enabled = True                '退出
  1510.         
  1511.     Case 1, 2:             '1.新增单据((录入)新增一张单据 、(列表)新增一张单据)
  1512.                            '2.修改((录入)调入修改功能、(列表)调入修改功能)
  1513.         '工具条
  1514.         If Status = 1 Then Me.Caption = "人事信息维护——新增"
  1515.         If Status = 2 Then Me.Caption = "人事信息维护——修改"
  1516.         .Buttons("PrinterSet").Enabled = False          '打印设置
  1517.         .Buttons("Printer").Enabled = False             '打印
  1518.         .Buttons("Preview").Enabled = False             '预览
  1519.         .Buttons("New").Enabled = False                 '新增
  1520.         .Buttons("Modi").Enabled = False                '修改
  1521.         .Buttons("Del").Enabled = False                 '删除
  1522.         .Buttons("Save").Enabled = True                 '保存
  1523.         .Buttons("Cancel").Enabled = True               '放弃
  1524.         .Buttons("First").Enabled = False               '首张
  1525.         .Buttons("Previous").Enabled = False            '上张
  1526.         .Buttons("Next").Enabled = False                '下张
  1527.         .Buttons("Last").Enabled = False                '末张
  1528.         .Buttons("Set").Enabled = True                  '设定
  1529.         .Buttons("Help").Enabled = True                 '帮助
  1530.         .Buttons("Exit").Enabled = True                 '退出
  1531.         
  1532. End Select
  1533. End With
  1534. End Sub
  1535. Private Function SetPicBox(sys As Integer) As Boolean
  1536. '设置图片框的位置
  1537. Dim aStr As String
  1538. Dim PicSet As New ADODB.Recordset
  1539.     If sys = 0 Then
  1540.         aStr = "SELECT pTop as tmpTop,pLeft as tmpLeft FROM Rs_Items WHERE FieldName='Pic'"
  1541.     Else
  1542.         aStr = "SELECT sTop as tmpTop,sLeft as tmpLeft FROM Rs_Items WHERE FieldName='Pic'"
  1543.     End If
  1544.     Set PicSet = Cw_DataEnvi.DataConnect.Execute(aStr)
  1545.     With PicSet
  1546.         If Not .EOF Then
  1547.             If Val(Trim("" & .Fields("tmpTop"))) <> 0 And Val(Trim("" & .Fields("tmpLeft"))) <> 0 Then
  1548.                 Pic_Emp.Top = Val(Trim("" & .Fields("tmpTop")))
  1549.                 Pic_Emp.Left = Val(Trim("" & .Fields("tmpLeft")))
  1550.             End If
  1551.         End If
  1552.         .Close
  1553.     End With
  1554.     Set PicSet = Nothing
  1555. End Function
  1556. Private Function CreateCtrls(sys As Integer) As Boolean
  1557. '生成界面上的各种控件,主要针对动态的文本框录入
  1558. Dim i As Integer:  Dim j As Integer
  1559. Dim aStr As String
  1560. Dim ItmInfo As New ADODB.Recordset
  1561.     '--设置面板位置和滚动条位置
  1562.     ScollBarIsEffect = False
  1563.     Pict.Top = 0: Pict.Left = 0: VScBar.Value = 0
  1564.     ScollBarIsEffect = True
  1565.     '--------------------------
  1566.     
  1567.     '卸载界面控件
  1568.     For i = 1 To Txt_RsItm.Count - 1
  1569.        Unload Txt_RsItm(i): Unload Lbl_ItmName(i): Unload Cmd_CommHlp(i): Unload Chk_YNStop
  1570.     Next i
  1571.     
  1572.     '赋初值
  1573.     i = 1: j = 1
  1574.     
  1575.     If sys = 0 Then
  1576.         aStr = "SELECT * FROM Rs_Items WHERE (SID='1' AND YNShow='1') ORDER BY Tab"
  1577.     Else
  1578.         aStr = "SELECT * FROM Rs_Items WHERE (SID='2' OR Pm='1') AND sYNShow='1' ORDER BY sTab"
  1579.     End If
  1580.     
  1581.     Call SetPicBox(sys)
  1582.     
  1583.     Set ItmInfo = Cw_DataEnvi.DataConnect.Execute(aStr)
  1584.         
  1585.     Do While Not ItmInfo.EOF
  1586. '       =======创建标签
  1587.         Load Lbl_ItmName(i)
  1588.         ReDim Preserve tFieldName(i + 1)
  1589.         If sys = 0 Then
  1590.             Lbl_ItmName(i).Left = Val(ItmInfo!pLeft & "")
  1591.             Lbl_ItmName(i).Top = Val(ItmInfo!pTop & "")
  1592.         Else
  1593.             Lbl_ItmName(i).Left = Val(ItmInfo!sLeft & "")
  1594.             Lbl_ItmName(i).Top = Val(ItmInfo!Stop & "")
  1595.         End If
  1596.         Lbl_ItmName(i).Caption = ItmInfo!ChName
  1597.         tFieldName(i) = Trim(ItmInfo!FieldName & "")
  1598.         
  1599.             
  1600. '       =======创建文本框并设置相关属性
  1601.         Load Txt_RsItm(i)
  1602.         ReDim Preserve tIsCode(2, i + 1)
  1603.         ReDim Preserve tReserved(i + 1)
  1604.         ReDim Preserve tFixed(i + 1)
  1605.         ReDim Preserve tDataType(i + 1)
  1606.         ReDim Preserve tItmId(i + 1)
  1607.         ReDim Preserve tSysROnly(i + 1)
  1608.         
  1609. '       是否保留,在辅助保留中使用
  1610.         If IsNull(ItmInfo!YnReserve) Then
  1611.             tReserved(i) = False
  1612.         Else
  1613.             tReserved(i) = ItmInfo!YnReserve
  1614.         End If
  1615.         
  1616. '       文本框对应字段的数据类型
  1617.         tDataType(i) = ItmInfo!FieldType
  1618. '       是否编码
  1619.         If Trim(ItmInfo!CorTable) <> "" Then
  1620.             tIsCode(1, i) = 1
  1621.         Else
  1622.             tIsCode(1, i) = 0
  1623.         End If
  1624.             
  1625. '       项目编号
  1626.         tItmId(i) = ItmInfo!ItemId
  1627.         
  1628. '       是否固定,存储在人事信息基本表里的是固定的
  1629.         If Trim(ItmInfo!TableName) = "Rs_BasicInfo" Then
  1630.             tFixed(i) = 1
  1631.         Else
  1632.             tFixed(i) = 0
  1633.         End If
  1634.                       
  1635.         Txt_RsItm(i).Left = Lbl_ItmName(i).Left + Lbl_ItmName(i).Width + 100
  1636.         Txt_RsItm(i).Top = Lbl_ItmName(i).Top - 50
  1637.         
  1638.         Txt_RsItm(i).Width = ItmInfo!FieldLength * 105
  1639.         Txt_RsItm(i).MaxLength = ItmInfo!FieldLength
  1640.         If sys = 0 Then
  1641.             Txt_RsItm(i).TabIndex = Val("" & ItmInfo!Tab) - 1
  1642.         Else
  1643.             Txt_RsItm(i).TabIndex = Val("" & ItmInfo!sTab) - 1
  1644.         End If
  1645.         
  1646. '       是否只读 (只针对工资)
  1647.         If ItmInfo.Fields("SID") = 1 And ItmInfo.Fields("Pm") = True Then
  1648.             tSysROnly(i) = True
  1649.         End If
  1650.         
  1651. '       =======创建帮助按钮          帮助按钮的tag值存储该按钮是否可用  (为保持文本框、标签、帮助按钮和各数组下标一致)
  1652.         Load Cmd_CommHlp(i)
  1653.         Cmd_CommHlp(i).Top = Txt_RsItm(i).Top
  1654.         Cmd_CommHlp(i).Left = Txt_RsItm(i).Width + Txt_RsItm(i).Left
  1655.         
  1656.         If ItmInfo!FieldName = "EmpNo" Then                            '单独设定工号的帮助
  1657.             Cmd_CommHlp(i).Tag = 2                                       '2是工号的特殊标志,其他帮助按钮有效的为1,否则为0
  1658.         Else
  1659.             If ((Trim(ItmInfo!Correlation) = 0 And Trim(ItmInfo!CorTable) <> "") _
  1660.                  Or (Trim(ItmInfo!Correlation) <> 0) Or (ItmInfo!FieldType = 7)) Then
  1661.                 Cmd_CommHlp(i).Tag = 1
  1662.             Else
  1663.                 Cmd_CommHlp(i).Tag = 0
  1664.             End If
  1665.         End If
  1666.         Txt_RsItm(i).Visible = True
  1667.         Lbl_ItmName(i).Visible = True
  1668. 'a1 begin end
  1669.         i = i + 1
  1670.         ItmInfo.MoveNext
  1671.     Loop
  1672.     
  1673.     For i = 1 To Txt_RsItm.UBound
  1674.         If UCase(tFieldName(i)) = "YNSTOP" Then
  1675.             Chk_YNStop.Top = Txt_RsItm(i).Top
  1676.             Chk_YNStop.Left = Txt_RsItm(i).Left
  1677.             Chk_YNStop.TabIndex = Txt_RsItm(i).TabIndex
  1678.             Chk_YNStop.Caption = Me.Lbl_ItmName(i).Caption
  1679.             Me.Lbl_ItmName(i).Caption = ""
  1680.             Txt_RsItm(i).Visible = False
  1681.             Txt_RsItm(i).Enabled = False
  1682.             Chk_YNStop.Visible = True
  1683.             Exit For
  1684.         End If
  1685.     Next
  1686.     ItmInfo.Close
  1687. End Function
  1688. Private Sub ReserveItmRefurbish()
  1689. '针对保留项目填充文本框
  1690. Dim tmpRs As New ADODB.Recordset
  1691. Dim i As Integer: Dim sSql As String
  1692. On Error GoTo ErrDeal
  1693. '保留功能没有启用,退出
  1694. If Not Me.ReserveIsOn Then Exit Sub
  1695. ''对修改状态的刷新,不提供支持
  1696. 'If Me.Tag = "Modi" Then Exit Sub
  1697. sSql = "SELECT ItemParameter FROM Rs_OtherSet WHERE ItemName = 'ReserveID'"
  1698. Set tmpRs = Cw_DataEnvi.DataConnect.Execute(sSql)
  1699. If tmpRs.EOF Then Exit Sub
  1700. ReserveId = tmpRs.Fields("ItemParameter")
  1701. sSql = Item_Info(SysOwner) & " WHERE B.EmpId= " & ReserveId & " AND B.EmpId=E.EmpId"
  1702. If tmpRs.State = 1 Then tmpRs.Close
  1703. tmpRs.Open sSql, Cw_DataEnvi.DataConnect, adOpenStatic, adLockOptimistic
  1704. If Not tmpRs.EOF Then
  1705.     For i = 1 To Lbl_ItmName.UBound
  1706.         If tReserved(i) = True Then
  1707.             
  1708.                 If tIsCode(1, i) = 1 Then
  1709.                     Txt_RsItm(i).Text = "" & tmpRs.Fields("N_" & tFieldName(i))
  1710.                     
  1711.                     tIsCode(2, i) = Trim("" & tmpRs.Fields(tFieldName(i)))
  1712.                 Else
  1713.                     Txt_RsItm(i).Text = "" & tmpRs.Fields(tFieldName(i))
  1714.                 End If
  1715.                 If Trim(tFieldName(i)) = "EmpNo" Or Trim(tFieldName(i)) = "EmpName" Then Txt_RsItm(i).Text = ""
  1716.             
  1717.         End If
  1718.     Next
  1719. End If
  1720. tmpRs.Close
  1721. Exit Sub
  1722. ErrDeal:
  1723.     Call Xtxxts("辅助保留项目功能暂不可用!", 0, 3)
  1724. End Sub