Foxtable(狐表)用户栏目专家坐堂 → 我觉得很难,成不成老师你给掌一掌眼


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

主题:我觉得很难,成不成老师你给掌一掌眼

帅哥哟,离线,有人找我吗?
sgkyzfh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
我觉得很难,成不成老师你给掌一掌眼  发帖心情 Post By:2017/9/7 20:49:00 [只看该作者]

是这样的老师:我有个表A,其中有4列分别是:车号、保养小时累计、保养级别、发动机总运行小时。“保养小时累计”从0开始计数,当运行到250小时时,“保养级别”自动赋值为A级,运行到500小时的时候,保养级别”自动赋值为B级,当运行到750小时的时候,保养级别”自动赋值为A级,当运行到1000时,保养级别”自动赋值为C级。以后随着保养小时数值的增长,重复上述保养级别。对应关系如下:
运行小时与保养级别关系对照表:
保养运行小时 保养级别
250 A
500 B
750 A
1000 C
1250 A
1500 B
1750 A
2000 C
2250 A
2500 B
2750 A
我的问题是,我找不出程序的对应关系,老师经的多,看看有没有办法实现,随着“保养小时”列的规律性变化,在“保养级别”列自动赋值保养级别。               
此外要求不在增加新的行,保养级别的变化只能在原单元格内变化。

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


加好友 发短信
等级:一尾狐 帖子:466 积分:4068 威望:0 精华:0 注册:2013/12/9 0:52:00
  发帖心情 Post By:2017/9/7 21:31:00 [只看该作者]

这样行不行?
总运行小时 除以 250 的结果进行判断
如果结果为奇数   则  自动赋值  A

如果结果为偶数   把这个偶数结果再除以2 

如果结果为奇数 则  自动赋值  B
如果结果为偶数 则  自动赋值  C

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


加好友 发短信
等级:狐精 帖子:3360 积分:24780 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/7 21:36:00 [只看该作者]

这个不是很好判断吗 运行小时mod250的结果判断奇偶数不就可以了吗 奇数为A 偶数为B
if (r("保养小时")/250) mod 2=0 then
r("保养级别")="B"
ELSE
r("保养级别")="A"
end if

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


加好友 发短信
等级:狐精 帖子:3360 积分:24780 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/7 21:39:00 [只看该作者]

如果写在 datacolchangded事件中记得改下代码
if e.datacol.name="保养小时" then
if e.newvalue isnot nothing then
e.datarow("保养级别")=iif((e.datarow("保养小时")/250) mod 2=0,"B","A")
endif
endif

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/9/7 21:44:00 [只看该作者]

除以250 保养级别 除以500
250 1 A 0.5
500 2 B 1
750 3 A 1.5
1000 4 C 2
1250 5 A 2.5
1500 6 B 3
1750 7 A 3.5
2000 8 C 4
2250 9 A 4.5
2500 10 B 5
2750 11 A 5.5
3000 12 C 6
3250 13 A 6.5
3500 14 B 7
3750 15 A 7.5
4000 16 C 8
A级都在奇数上, 除以500等于奇数的为B,等于偶数的为C 
还是人多力量大,但是我不知道怎么写程序

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/9/7 21:59:00 [只看该作者]

rjh4078 请问:1000小时的C级怎样形成呢?

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/9/7 22:05:00 [只看该作者]

Exception has been thrown by the target of an invocation.录入后显示这个

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


加好友 发短信
等级:一尾狐 帖子:466 积分:4068 威望:0 精华:0 注册:2013/12/9 0:52:00
  发帖心情 Post By:2017/9/7 22:22:00 [只看该作者]

If e.DataCol.name="保养小时" Then
    If e.newvalue IsNot Nothing Then
        If (e.DataRow("保养小时")/250)  Mod 2 =0 Then
If (e.DataRow("保养小时")/500)  Mod 2 =0 Then
  e.DataRow("保养级别")="C"
Else

 e.DataRow("保养级别")="B"
End If
     Else
            e.DataRow("保养级别")="A"
            
        End If
    End If
End If

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


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

DataColChanged

 

If e.datacol.name = "小时" then
    Dim n As Integer  = math.Floor(e.NewValue / 250)
    If n = 0 Then
        e.DataRow("级别") = Nothing
    else
        n = n Mod 4
        If n = 1 Then
            e.DataRow("级别") = "A"
        ElseIf n = 2 Then
            e.DataRow("级别") = "B"
        ElseIf n = 3 Then
            e.DataRow("级别") = "A"
        ElseIf n = 0 Then
            e.DataRow("级别") = "C"
        End If
    End If
end if


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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/9/7 22:28:00 [只看该作者]

真棒,谢谢老师,感谢关心的人人们。

 回到顶部
总数 11 1 2 下一页