以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  条件问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=171815)

--  作者:lgz518
--  发布时间:2021/9/10 15:44:00
--  条件问题
\'多条件-
If e.DataCol.Name="实际值" Then            \'如果 
\'如果"
    If e.NewValue  Is Nothing   Then
        e.DataRow("得分")= Nothing
\'如果"       
    ElseIf e.NewValue> Z值 Then                 
        e.DataRow("得分")=120+[(120-100)÷(Z值-D值)×(实际值-Z值)×2] 
\'如果"       
    ElseIf e.NewValue= Z值 Then                 
        e.DataRow("得分")=120

ElseIf e.NewValue < Z值 Or e.NewValue > D值 Then                 
        e.DataRow("得分")=100+[(120-100)÷(Z值-D值)×(实际值-Z值)] 
  
 \'如果"            
    ElseIf e.NewValue = D值 Then
        e.DataRow("得分")=100

\'\'否则,       
    Else
        e.DataRow("得分")=100-[(120-100)÷(Z值-D值)×(实际值-Z值)×2] 
    End If
End If


上面代码报错,提示“未声明Z值 ”,ElseIf e.NewValue> Z值 Then 

--  作者:cd_tdh
--  发布时间:2021/9/10 16:02:00
--  

对的,Z值没声明变量啊?系统不知道Z值是什么东西,Z值、D值、实际值,都不知道是什么啊?

你应该是这个意思吧?

e.DataRow("得分")=120+((120-100)÷(e.DataRow("Z值")-e.DataRow("D值"))×(e.DataRow("实际值")-e.DataRow("Z值")×2)

[此贴子已经被作者于2021/9/10 16:04:00编辑过]

--  作者:lgz518
--  发布时间:2021/9/10 16:16:00
--  
是的,我试一下,谢谢
--  作者:lgz518
--  发布时间:2021/9/10 16:22:00
--  
\'多条件-
If e.DataCol.Name="实际值" Then            \'如果 
\'如果"
    If e.NewValue  Is Nothing   Then
        e.DataRow("得分")= Nothing
\'如果"       
    ElseIf e.NewValue> Z值 Then                 
        e.DataRow("得分")=120+((120-100)÷(e.DataRow("Z值")-e.DataRow("D值"))×(e.DataRow("实际值")-e.DataRow("Z值")×2)
\'如果"       
    ElseIf e.NewValue= Z值 Then                 
        e.DataRow("得分")=120

ElseIf e.NewValue < Z值 Or e.NewValue > D值 Then                 
        e.DataRow("得分")=100+((120-100)÷(e.DataRow("Z值")-e.DataRow("D值"))×(e.DataRow("实际值")-e.DataRow("Z值")×2)
  
 \'如果"            
    ElseIf e.NewValue = D值 Then
        e.DataRow("得分")=100

\'\'否则,       
    Else
        e.DataRow("得分")=100-((120-100)÷(e.DataRow("Z值")-e.DataRow("D值"))×(e.DataRow("实际值")-e.DataRow("Z值")×2)
    End If
End If
还是报错,上面代码报错,提示“未声明Z值 ”,ElseIf e.NewValue> Z值 Then 

--  作者:有点蓝
--  发布时间:2021/9/10 16:27:00
--  
Z值是一个变量名称?还是一个字符串?还是列名?

如果是列名
ElseIf e.NewValue> e.DataRow("Z值") Then   

--  作者:lgz518
--  发布时间:2021/9/10 16:38:00
--  
1,“Z值、D值、实际值” 都是列名
2,下面代码,报错提示:" 120+((120-100)÷(dr("Z值")-dr("D值"))×(dr("实际值")-dr("Z值")×2) ",为应结束语句?
Dim dr As DataRow = e.DataRow

If e.DataCol.Name="实际值" Then            \'如果
    \'如果"
    If e.NewValue  Is Nothing   Then
        dr("得分")= Nothing
        \'如果"
    ElseIf e.NewValue> "Z值" Then
        dr("得分")= " 120+((120-100)÷(dr("Z值")-dr("D值"))×(dr("实际值")-dr("Z值")×2) "
        
    ElseIf e.NewValue= "Z值" Then
        dr("得分")="120"
        
    ElseIf e.NewValue < "Z值" Or e.NewValue > "D值" Then
        dr("得分")="100+((120-100)÷(dr("Z值")-dr("D值"))×(dr("实际值")-dr("Z值")×2)"
        
        
    ElseIf e.NewValue ="D值" Then
        dr("得分")="100"
        
        \'\'否则,
    Else
        dr("得分")="100-((120-100)÷(dr("Z值")-dr("D值"))×(dr("实际值")-dr("Z值")×2)"
    End If
End If


--  作者:有点蓝
--  发布时间:2021/9/10 16:52:00
--  
ElseIf e.NewValue> dr("Z值") Then
        dr("得分")= 120+((120-100)÷(dr("Z值")-dr("D值"))×(dr("实际值")-dr("Z值")×2) 

--  作者:lgz518
--  发布时间:2021/9/10 17:38:00
--  
还是报错,计算不出得分的值
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多条件1.foxdb


--  作者:有点蓝
--  发布时间:2021/9/10 17:43:00
--  
http://www.foxtable.com/webhelp/topics/0218.htm
--  作者:lgz518
--  发布时间:2021/9/10 22:05:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多条件1 - 副本.foxdb


老师,方法一,计算出来还有问题
1,编号4,5的计算的值是错,如果计算出”得分“的值与”正确答案数据“的值一样?
2,计算出来”得分“的值大于130,取130,小于0,取0,如何实现?
3,使用方法二,不执行,是哪里错?


注:计算公式方法已在”备注栏“写清楚。