Foxtable(狐表)用户栏目专家坐堂 → 开发版用户求教 条件语句问题


  共有4241人关注过本帖树形打印复制链接

主题:开发版用户求教 条件语句问题

美女呀,离线,留言给我吧!
若水三千
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2013/3/20 6:28:00
开发版用户求教 条件语句问题  发帖心情 Post By:2013/8/17 17:13:00 [只看该作者]

狐狸爸爸,我是开发版用户,现在有个员工划分等级的问题 逻辑条件没有弄清楚 不知道该怎么办,特来请教 希望您能不吝赐教
我表中有的字段有【开始时间】、【结束时间】、【奖惩类型】、【当年绩效分数】
五等员工的条件 有 1、入职时间不满6个月且【奖惩类型】是(警告、再次警告、三次警告)的员工;2、其他的入职时间不满3个月且【奖惩类型】=‘无’的员工;3、一年之内收到过‘三次警告’二次以上的员工

四等员工:入职时间不满6个月的且入职时间不满【应履职时间】(应履职时间其实就是上面的【结束时间】-【开始时间】)的五分之一的员工。

三等员工:入职时间满6个月以上且实际入职时间(实际入职时间就是【今天】-【开始时间】)为应履职时间的五分之一以上,且【当年绩效分数】在30分以上的员工

二等员工:实际入职时间为应履职时间的二分之一以上,【当年绩效分数】为40分以上员工

一等员工:实际入职时间为应履职时间的五分之三以上,【当年绩效分数】为50分以上的员工

 

以上所有员工 如果受到过【奖惩类型】是“警告”“再次警告”“严重警告”的等级自动下降一级

各位大哥 这个逻辑关系要怎么弄啊  我用的是 IF ELSE IF   等语句做的 总是不对  希望大家可以帮我弄一个
我的数据库太大 且 麻烦  所以我无法上传实例  希望大家可以理解一下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


 回到顶部
美女呀,离线,留言给我吧!
若水三千
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2013/3/20 6:28:00
  发帖心情 Post By:2013/8/17 17:21:00 [只看该作者]

没人理我啊

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/8/17 17:41:00 [只看该作者]

类似这样,细节自己调整:

 

For Each dr As DataRow In DataTables("表A").DataRows
    Dim tp1 As TimeSpan = Date.Today - Cdate(dr("开始时间"))
    Dim tp2 As TimeSpan = dr("结束时间") - dr("开始时间")
    Dim bl As Double= tp1.TotalDays/ tp2.TotalDays
    If bl >= 0.6 AndAlso dr("当年绩效分数") > 50 Then
        dr("第十列") = "一等"
    ElseIf bl >= 0.5 AndAlso dr("当年绩效分数") > 40 Then
        dr("第十列") = "二等"
    ElseIf bl >= 0.2 AndAlso dr("当年绩效分数") > 30 AndAlso Cdate(dr("开始时间")).Addmonths(6) <= Date.Today  Then
        dr("第十列") = "三等"
    ElseIf bl < 0.2  AndAlso Cdate(dr("开始时间")).Addmonths(6) > Date.Today  Then
        dr("第十列") = "四等"
    End If
Next


 回到顶部
美女呀,离线,留言给我吧!
若水三千
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2013/3/20 6:28:00
  发帖心情 Post By:2013/8/17 18:58:00 [只看该作者]

以下是引用狐狸爸爸在2013-8-17 17:41:00的发言:

类似这样,细节自己调整:

 

For Each dr As DataRow In DataTables("表A").DataRows
    Dim tp1 As TimeSpan = Date.Today - Cdate(dr("开始时间"))
    Dim tp2 As TimeSpan = dr("结束时间") - dr("开始时间")
    Dim bl As Double= tp1.TotalDays/ tp2.TotalDays
    If bl >= 0.6 AndAlso dr("当年绩效分数") > 50 Then
        dr("第十列") = "一等"
    ElseIf bl >= 0.5 AndAlso dr("当年绩效分数") > 40 Then
        dr("第十列") = "二等"
    ElseIf bl >= 0.2 AndAlso dr("当年绩效分数") > 30 AndAlso Cdate(dr("开始时间")).Addmonths(6) <= Date.Today  Then
        dr("第十列") = "三等"
    ElseIf bl < 0.2  AndAlso Cdate(dr("开始时间")).Addmonths(6) > Date.Today  Then
        dr("第十列") = "四等"
    End If
Next

五等员工的问题 最后一个 条件 我有个这样的表B  根据姓名与表A进行关联 怎么动态的统计当年的绩效分数啊 当年绩效分数就是 从当前时间的月一直往前推11个月 这个麻烦的话可以这样设置 就是如果当前日期的月份大于8月份 那么就从本年度1月份一直到12月份算  如果今天的日期没有超过8个月 那么就算去年一年的绩效分数 这个如何做呢 狐狸爸爸


图片点击可在新窗口打开查看此主题相关图片如下:截图00.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/17 19:07:00 [只看该作者]

以下是引用若水三千在2013-8-17 18:58:00的发言:

五等员工的问题 最后一个 条件 我有个这样的表B  根据姓名与表A进行关联 怎么动态的统计当年的绩效分数啊 当年绩效分数就是 从当前时间的月一直往前推11个月 这个麻烦的话可以这样设置 就是如果当前日期的月份大于8月份 那么就从本年度1月份一直到12月份算  如果今天的日期没有超过8个月 那么就算去年一年的绩效分数 这个如何做呢 狐狸爸爸


图片点击可在新窗口打开查看此主题相关图片如下:截图00.png
图片点击可在新窗口打开查看


请上传具体的例子,要有具体的数据。
[此贴子已经被作者于2013-8-17 19:08:53编辑过]

 回到顶部
美女呀,离线,留言给我吧!
若水三千
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2013/3/20 6:28:00
  发帖心情 Post By:2013/8/17 19:28:00 [只看该作者]

以下是引用有点甜在2013-8-17 19:07:00的发言:


请上传具体的例子,要有具体的数据。
[此贴子已经被作者于2013-8-17 19:08:53编辑过]

好的 例子已经上传

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/17 20:54:00 [只看该作者]

呃,楼主,你给数据和你想要解决的问题不符啊。

当前时间往前推11个月,哪里来11个月的数据?

 回到顶部
美女呀,离线,留言给我吧!
若水三千
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2013/3/20 6:28:00
  发帖心情 Post By:2013/8/18 8:04:00 [只看该作者]

不往前推十一个月也可以  我给的数据是2009年的  假如当前日期是2010年  我只要计算前一年的就行  就是计算当前日期前一年12个月的 绩效分数 就可以

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/18 21:19:00 [只看该作者]

以下是引用若水三千在2013-8-18 8:04:00的发言:
不往前推十一个月也可以  我给的数据是2009年的  假如当前日期是2010年  我只要计算前一年的就行  就是计算当前日期前一年12个月的 绩效分数 就可以


累加前一年绩效分数。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (3).foxdb



 回到顶部