CalcPay.frm
上传用户:cntx88
上传日期:2022-08-07
资源大小:169k
文件大小:7k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
  3. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  4. Begin VB.Form CalcPay 
  5.    Caption         =   "工资计算"
  6.    ClientHeight    =   7515
  7.    ClientLeft      =   60
  8.    ClientTop       =   450
  9.    ClientWidth     =   9195
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   7515
  12.    ScaleWidth      =   9195
  13.    StartUpPosition =   3  '窗口缺省
  14.    Begin VB.Frame Frame1 
  15.       Caption         =   "工资计算结果"
  16.       Height          =   7215
  17.       Left            =   120
  18.       TabIndex        =   0
  19.       Top             =   120
  20.       Width           =   8895
  21.       Begin MSComDlg.CommonDialog CommDlg 
  22.          Left            =   1920
  23.          Top             =   3840
  24.          _ExtentX        =   847
  25.          _ExtentY        =   847
  26.          _Version        =   393216
  27.       End
  28.       Begin VB.CommandButton Command2 
  29.          Caption         =   "退出"
  30.          Height          =   495
  31.          Left            =   4680
  32.          TabIndex        =   3
  33.          Top             =   6360
  34.          Width           =   4095
  35.       End
  36.       Begin VB.CommandButton Command1 
  37.          Caption         =   "保存到文件"
  38.          Default         =   -1  'True
  39.          Height          =   495
  40.          Left            =   120
  41.          TabIndex        =   2
  42.          Top             =   6360
  43.          Width           =   4095
  44.       End
  45.       Begin MSFlexGridLib.MSFlexGrid MSFlexGrid1 
  46.          Height          =   5895
  47.          Left            =   120
  48.          TabIndex        =   1
  49.          Top             =   360
  50.          Width           =   8655
  51.          _ExtentX        =   15266
  52.          _ExtentY        =   10398
  53.          _Version        =   393216
  54.          Cols            =   5
  55.          FixedCols       =   0
  56.          FillStyle       =   1
  57.       End
  58.    End
  59. End
  60. Attribute VB_Name = "CalcPay"
  61. Attribute VB_GlobalNameSpace = False
  62. Attribute VB_Creatable = False
  63. Attribute VB_PredeclaredId = True
  64. Attribute VB_Exposed = False
  65. Option Explicit
  66. Private Sub Command1_Click()
  67.     Dim i As Long
  68.     Dim USER_ID As String
  69.     Dim USER_NAME As String
  70.     Dim USER_PART As String
  71.     Dim USER_ROLE As String
  72.     Dim MONEY As String
  73.     CommDlg.Flags = cdlOFNOverwritePrompt   '设置保存对话框有覆盖提示
  74.     CommDlg.Filter = "文本文件|*.txt"       '设置保存对话框的显示文件类型
  75.     CommDlg.ShowSave                        '显示保存对话框
  76.     If CommDlg.FileName <> "" Then      '如果用户点确定按钮就写导出文件
  77.         Open CommDlg.FileName For Output As #1
  78.         Print #1, "员工ID号"; Tab; "员工姓名"; Tab; "所属部门"; Tab; "职位名称"; Tab; "本月工资"
  79.         For i = 1 To MSFlexGrid1.Rows - 1       '从MSFlexGrid1中循环把记录信息写进文件中
  80.             MSFlexGrid1.Row = i
  81.             MSFlexGrid1.Col = 0
  82.             USER_ID = MSFlexGrid1.Text
  83.             MSFlexGrid1.Row = i
  84.             MSFlexGrid1.Col = 1
  85.             USER_NAME = MSFlexGrid1.Text
  86.             MSFlexGrid1.Row = i
  87.             MSFlexGrid1.Col = 2
  88.             USER_PART = MSFlexGrid1.Text
  89.             MSFlexGrid1.Row = i
  90.             MSFlexGrid1.Col = 3
  91.             USER_ROLE = MSFlexGrid1.Text
  92.             MSFlexGrid1.Row = i
  93.             MSFlexGrid1.Col = 4
  94.             MONEY = MSFlexGrid1.Text
  95.             Print #1, USER_ID; Tab; USER_NAME; Tab; USER_PART; Tab; USER_ROLE; Tab; MONEY
  96.         Next i
  97.         Close #1        '关闭文件
  98.     End If
  99. End Sub
  100. Private Sub Command2_Click()
  101.     Unload Me       '返回主窗体
  102. End Sub
  103. Private Sub Form_Load()
  104.     Dim sql As String
  105.     Dim rs As New ADODB.Recordset
  106.     Dim work As New ADODB.Recordset     '考勤记录结果集
  107.     Dim i As Integer        '循环变量
  108.     Dim userid As String
  109.     Dim MONEY As Long
  110.     Dim temp As Long        '考勤影响到的工资
  111.     Dim resultcount As Long     '返回记录数
  112.     
  113.     Me.Left = (Screen.Width - Me.ScaleWidth) / 2        '窗体居中显示
  114.     Me.Top = (Screen.Height - Me.ScaleHeight) / 2
  115.     If DbHandle.DbConnection Then       '选定用户表中所有记录以及关联的角色和部门记录
  116.         sql = "SELECT USER_ID,USER_NAME,PART_NAME,ROLE_NAME,ROLE_MONEY FROM TBL_USER,TBL_ROLE,TBL_PART WHERE USER_PART=PART_ID AND USER_ROLE=ROLE_ID"
  117.         rs.CursorType = adOpenDynamic
  118.         rs.LockType = adLockOptimistic
  119.         rs.Open sql, DbFinance
  120.         resultcount = DbHandle.resultcount(rs)
  121.         Cls     '设置电子表格的列头
  122.         MSFlexGrid1.Cols = 5
  123.         MSFlexGrid1.Rows = resultcount + 1
  124.         MSFlexGrid1.Row = 0
  125.         MSFlexGrid1.Col = 0
  126.         MSFlexGrid1.Text = "员工ID号"
  127.         MSFlexGrid1.Col = 1
  128.         MSFlexGrid1.Text = "员工姓名"
  129.         MSFlexGrid1.Col = 2
  130.         MSFlexGrid1.Text = "所属部门"
  131.         MSFlexGrid1.Col = 3
  132.         MSFlexGrid1.Text = "职位名称"
  133.         MSFlexGrid1.Col = 4
  134.         MSFlexGrid1.Text = "本月工资"
  135.         
  136.         For i = 0 To 4
  137.             MSFlexGrid1.ColWidth(i) = MSFlexGrid1.Width / 5 - 5     '平均分配每个列的宽
  138.         Next i
  139.         For i = 1 To resultcount    '循环将职工信息和基本工资放入电子表格
  140.             userid = rs("USER_ID")
  141.             MSFlexGrid1.Row = i
  142.             MSFlexGrid1.Col = 0
  143.             MSFlexGrid1.Text = userid
  144.             MSFlexGrid1.Col = 1
  145.             MSFlexGrid1.Text = rs("USER_NAME")
  146.             MSFlexGrid1.Col = 2
  147.             MSFlexGrid1.Text = rs("PART_NAME")
  148.             MSFlexGrid1.Col = 3
  149.             MSFlexGrid1.Text = rs("ROLE_NAME")
  150.             MONEY = rs("ROLE_MONEY")
  151.             MSFlexGrid1.Col = 4
  152.             MSFlexGrid1.Text = Str(MONEY)
  153.             rs.MoveNext
  154.         Next i
  155.         rs.Close
  156.         Set rs = Nothing
  157.         For i = 1 To resultcount    '通过考勤表计算考勤信息影响的工资
  158.             MSFlexGrid1.Row = i
  159.             MSFlexGrid1.Col = 0
  160.             userid = MSFlexGrid1.Text
  161.             MSFlexGrid1.Col = 4
  162.             MONEY = Val(MSFlexGrid1.Text)
  163.             sql = "SELECT WORK_TIME,TYPE_MARK,TYPE_ID FROM TBL_WORK,TBL_TYPE WHERE WORK_TYPE=TYPE_ID AND WORK_ID='" & userid & "'"
  164.             work.CursorType = adOpenDynamic
  165.             work.LockType = adLockOptimistic
  166.             work.Open sql, DbFinance        '选取每一行职工ID的本月考勤信息
  167.             Do While work.EOF = False
  168.                 Select Case work("TYPE_ID")     '通过考勤类别计算考勤时间和工资关系
  169.                     Case 1
  170.                         temp = work("WORK_TIME") * 1
  171.                     Case 2
  172.                         temp = work("WORK_TIME") * 2
  173.                     Case 3
  174.                         temp = work("WORK_TIME") * 10
  175.                     Case 4
  176.                         temp = work("WORK_TIME") * 20
  177.                 End Select
  178.                 If work("TYPE_MARK") Then       '当考勤类别是加班出差等要向基本工资中加工资
  179.                     MONEY = MONEY + temp
  180.                 Else
  181.                     MONEY = MONEY - temp        '当考勤类别是迟到早退等要向基本工资中减工资
  182.                 End If
  183.                 work.MoveNext
  184.             Loop
  185.             MSFlexGrid1.Text = Str(MONEY)       '重新设置每个人的月工资
  186.             work.Close
  187.         Next i
  188.         DbHandle.DbClose
  189.     Else        '打开数据库失败错误退出
  190.         MsgBox "数据库错误!", vbExclamation
  191.         DbHandle.DbClose
  192.         End
  193.     End If
  194. End Sub
  195. Private Sub Form_Unload(Cancel As Integer)
  196.     On Error Resume Next
  197.     DbHandle.DbClose        '窗体关闭时关闭数据库
  198. End Sub