以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何用Select Case语句执行将匹配条件保存在另外一张表中的情况的代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=88989)

--  作者:jjjeyes
--  发布时间:2016/8/13 0:22:00
--  [求助]如何用Select Case语句执行将匹配条件保存在另外一张表中的情况的代码

自己做了个学生肺活量评价的工具,已经将肺活量的评分标准事先录入到表格内,如下:

 


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

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

 

请问怎么写代码。


--  作者:cbt
--  发布时间:2016/8/13 8:12:00
--  
Tables("表B").Rows(0)("第一列") = Tables("表A").Rows(0)("第一列")
--  作者:Hyphen
--  发布时间:2016/8/13 9:24:00
--  
学生信息DataColChanged事件

Select Case e.DataCol.Name
    Case "肺活量成绩"
        If e.DataRow("性别") = 1 Then
            Dim dr As DataRow = DataTables("表A").Find("大一二男 >= \'" & e.NewValue & "\'","大一二男")
            If dr IsNot Nothing Then
                e.DataRow("得分") = dr("得分")
                e.DataRow("等级") = dr("等级")
            End If
        End If
End Select

--  作者:jjjeyes
--  发布时间:2016/8/13 11:02:00
--  
我的意思是:在“学生信息”表的“肺活量成绩”列输入成绩,通过和“肺活量评分”表“大一二男”列相关数据的比对,算出分数然后填入到“学生信息”表的“肺活量得分”列中
--  作者:Hyphen
--  发布时间:2016/8/13 11:45:00
--  
看3楼,列名表名自己改改
--  作者:jjjeyes
--  发布时间:2016/8/14 0:46:00
--  
在执行您给的代码的时候可以做到想要的结果,可是对应的分值向上偏差了一行,不过这个可以在评分标准里做修改。
但是,在删除刚输入的“肺活量成绩”的时候会出现下面的信息:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.6.26.1
错误所在事件:表,学生信息,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.Double 和 System.String 上执行“>=”操作。


何解?

--  作者:大红袍
--  发布时间:2016/8/14 12:08:00
--  
Select Case e.DataCol.Name
    Case "肺活量成绩", "性别"
        If e.DataRow("性别") = "1" Then
            Dim dr As DataRow = DataTables("表A").Find("大一二男 >= \'" & e.DataRow("肺活量成绩") & "\'","大一二男")
            If dr IsNot Nothing Then
                e.DataRow("得分") = dr("得分")
                e.DataRow("等级") = dr("等级")
            End If
        End If
End Select

--  作者:jjjeyes
--  发布时间:2016/8/14 18:18:00
--  
谢谢,问题解决了。
请问这是什么原因呢?为什么改为& e.DataRow("肺活量成绩") & 就可以了?

--  作者:大红袍
--  发布时间:2016/8/14 18:49:00
--  
 看7楼红色代码,是红色代码的原因。