设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2664|回复: 2
打印 上一主题 下一主题

[其它] 如何用代码计算工龄工资?

[复制链接]
跳转到指定楼层
1#
发表于 2007-3-28 17:38:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,望各位大侠指点迷津!不胜感激!

详细如下:

我公司自入职起算,每六个月加一次工龄工资,另外还有一个要求即是某员工若在入职当月的15日之前入职,则当月计为一个整月,若该员工在入职当月的15日以后入职则当月不计入工龄(白干十几天,呵呵)

想要实现的目的是:核算之日,输入当月月份,点击查询,即列出所有该月应该加工龄工资的员工名单等信息!

Thanks For Your Help!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-3-28 22:22:00 | 只看该作者
思维:

1.先判断日期是否小于15日,是的话将月份加1,如2006-09-10,判断后改为2006-10-01

2.然后将年月相减,大于6就加工资

函数具体用法请参照如下贴

http://www.office-cn.net/forum.php?mod=viewthread&tid=33813&replyID=&skin=1
3#
 楼主| 发表于 2007-3-28 22:34:00 | 只看该作者
时间函数汇总的那个帖子,小弟收集了 ,谢谢大大栽培~!

不过好像大大没有完全领会我的意思

我公司是每半年加一次工龄工资,做满一年再加一次,再作满6个月再加依此类推最多的可以累计加9年

一开始小弟的思路和大大是一样的,但是代码出来以后,计算的时候会出现一些奇怪的问题

有的不该加的,加了,该加的却没加,而且窗体中之筛选出一条记录来

我的代码如下:

Private Sub Command15_Click()

On Error GoTo err_Command15_Click

'定义整型变量

Dim number1 As Integer

'定义字符型变量

Dim STemp As String

'定义数据集变量

Dim Rs As ADODB.Recordset

'为定义的数据集变量分配空间

Set Rs = New ADODB.Recordset

'为打开数据表"工资数据总表"字符变量赋值

STemp = "select * from 工资数据总表 "

'打开"工资数据总表"数据表

Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    Rs.MoveFirst

    For i = 1 To Rs.RecordCount

        If Val(Right(Format(Rs("rcsj"), "yyyymmdd"), 2)) <= 15 Then

           number1 = (Val((Mid(Format(Me![查询年月], "yyyymm"), 3, 2)) - Val(Mid(Format(Rs("rcsj"), "yyyymmdd"), 3, 2))) * 12 + (Val((Right(Format(Me![查询年月], "yyyymm"), 2)) + 1) - Val(Mid(Format(Rs("rcsj"), "yyyymmdd"), 5, 2)))) Mod 6

             If number1 = 0 Then

               '修改文本字段值

               Me![kh] = Rs("kh")

               Me![dep] = Rs("dep")

               Me![name] = Rs("name")

               Me![rcsj] = Rs("rcsj")

               Me![yeargz] = Rs("yeargz")

               Me![Text11] = 50

            Else

              Rs.MoveNext    '把记录指针移到下一条记录

            End If

        Else

           number1 = (Val((Mid(Format(Me![查询年月], "yyyymm"), 3, 2)) - Val(Mid(Format(Rs("rcsj"), "yyyymmdd"), 3, 2))) * 12 + Val((Right(Format(Me![查询年月], "yyyymm"), 2)) - Val(Mid(Format(Rs("rcsj"), "yyyymmdd"), 5, 2)))) Mod 6

              If number1 = 0 Then

               '修改文本字段值

               Me![kh] = Rs("kh")

               Me![dep] = Rs("dep")

               Me![name] = Rs("name")

               Me![rcsj] = Rs("rcsj")

               Me![yeargz] = Rs("yeargz")

               Me![Text11] = 50

<F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-4 16:49 , Processed in 0.091535 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表