以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  我觉得很难,成不成老师你给掌一掌眼  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106393)

--  作者:sgkyzfh
--  发布时间: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
--  发布时间:2017/9/7 21:31:00
--  
这样行不行?
总运行小时 除以 250 的结果进行判断
如果结果为奇数   则  自动赋值  A

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

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

--  作者:rjh4078
--  发布时间:2017/9/7 21:36:00
--  
这个不是很好判断吗 运行小时mod250的结果判断奇偶数不就可以了吗 奇数为A 偶数为B
if (r("保养小时")/250) mod 2=0 then
r("保养级别")="B"
ELSE
r("保养级别")="A"
end if

--  作者:rjh4078
--  发布时间: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
--  发布时间: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
--  发布时间:2017/9/7 21:59:00
--  
rjh4078 请问:1000小时的C级怎样形成呢?
--  作者:sgkyzfh
--  发布时间:2017/9/7 22:05:00
--  
Exception has been thrown by the target of an invocation.录入后显示这个
--  作者:lindong
--  发布时间: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

--  作者:有点甜
--  发布时间: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
--  发布时间:2017/9/7 22:28:00
--  
真棒,谢谢老师,感谢关心的人人们。