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

企业管理

开发平台:

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