以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  复制数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101828)

--  作者:yangjing
--  发布时间:2017/6/8 0:08:00
--  复制数据
我想把列“BMI计算值”的数据复制到列“BMI值”里,代码有问题吗?

If e.DataCol.Name = "BMI计算值" Then
    If e.DataRow.IsNull("BMI计算值") Then
        e.DataRow("BMI值") = Nothing
    Else
        e.DataRow("BMI值") = e.DataRow("BMI计算值")
    End If
End If


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


--  作者:有点蓝
--  发布时间:2017/6/8 9:06:00
--  
代码没有问题,选中“BMI计算值”列,然后菜单“重置列”

另外BMI计算值和BMI值列都不能是表达式列

--  作者:yangjing
--  发布时间:2017/6/8 11:12:00
--  
就是因为“BMI计算值”是表达式列,所以当datacolchanged里面的代码没有执行,我才想把数据复制到另外一列“BMI值”来进行计算评分
--  作者:有点蓝
--  发布时间:2017/6/8 11:25:00
--  
“BMI计算值”表达式是怎么样的

或者把这个列改为数据列,通过代码计算,就没有必要分开2个列了

--  作者:yangjing
--  发布时间:2017/6/8 11:56:00
--  
bmi的公式是:体重/身高*身高

表达式列:
Convert(([体重] / ([身高] * [身高]) * 10000) * 100, \'System.Int64\') / 100

--  作者:狐狸爸爸
--  发布时间:2017/6/8 12:30:00
--  
解决办法:
http://www.foxtable.com/webhelp/scr/2381.htm


--  作者:yangjing
--  发布时间:2017/6/8 17:49:00
--  
这个办法效率好像比较低,最好还是用代码计算比较好
--  作者:有点蓝
--  发布时间:2017/6/8 18:01:00
--  
Select Case e.DataCol.Name
    Case "体重","身高"
        e.DataRow("BMI值") = e.DataRow("体重") / (e.DataRow("身高") *e.DataRow("身高") )
End Select

按5楼公式自己计算

--  作者:yangjing
--  发布时间:2017/6/8 20:15:00
--  
请老师看看这样会报错

Select Case e.DataCol.Name
    Case "体重","身高"
        e.DataRow("BMI值") = Convert((e.DataRow("体重") / (e.DataRow("身高") *e.DataRow("身高") ) * 10000) * 100, \'System.Int64\') / 100
End Select

[此贴子已经被作者于2017/6/8 20:15:19编辑过]

--  作者:有点蓝
--  发布时间:2017/6/9 8:52:00
--  
e.DataRow("BMI值") = e.DataRow("体重") / (e.DataRow("身高") *e.DataRow("身高") ) * 10000