以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数据列与表达式列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50336)

--  作者:1234567
--  发布时间:2014/5/5 8:47:00
--  数据列与表达式列

金额列等于单价列*数量列。

如果把金额列设为数据列,该如何写代码?


--  作者:Bin
--  发布时间:2014/5/5 8:51:00
--  
利用DataColChanged事件

if e.datacol.name="单价" orelse e.datacol.name="数量" then
   if e.datarow.isnull("单价")=false andalso e.datarow.isnull("数量")=false then
        e.datarow("金额")=e.datarow("单价")*e.datarow("数量")
   end if
end if

--  作者:liuxiang16
--  发布时间:2014/5/5 8:58:00
--  

也想知道。


--  作者:Bin
--  发布时间:2014/5/5 9:01:00
--  
看2楼

这些帮助都有介绍的.


--  作者:1234567
--  发布时间:2014/5/5 9:33:00
--  

表达式改成数据式

 

表达式                   (3.14 * (IsNull([材料直径],0) / 2) * (IsNull([材料直径],0) / 2)* IsNull([圆柱体高度],0) + IsNull([材料长度],0) * IsNull([材料宽度],0) * IsNull([材料高度],0) )  *  7.8 / 1000000

 

 

表达式改成数据式后不能达到上述结果

If e.DataCol.name="材料直径" OrElse e.DataCol.name="圆柱体高度"OrElse e.DataCol.name="材料长度" OrElse e.DataCol.name="材料宽度" OrElse e.DataCol.name="材料高度"  Then
   If e.DataRow.isnull("材料直径")=False AndAlso e.DataRow.isnull("圆柱体高度")=False  AndAlso e.DataRow.isnull("材料长度")=False  AndAlso e.DataRow.isnull("材料宽度")=False  AndAlso e.DataRow.isnull("材料高度")=False Then
        e.DataRow("材料重量")=e.DataRow("材料直径")*e.DataRow("材料直径")*e.DataRow("圆柱体高度")/4*3.14 +e.DataRow("材料长度")*e.DataRow("材料宽度")*e.DataRow("材料高度")*  7.8 / 1000000
   End If
End If   


--  作者:有点甜
--  发布时间:2014/5/5 9:38:00
--  

 是没达到效果?试试这样,再看看帮助文档,记得重置列

 

If e.DataCol.name="材料直径" OrElse e.DataCol.name="圆柱体高度" OrElse e.DataCol.name="材料长度" OrElse e.DataCol.name="材料宽度" OrElse e.DataCol.name="材料高度"  Then
    \'If e.DataRow.isnull("材料直径")=False AndAlso e.DataRow.isnull("圆柱体高度")=False  AndAlso e.DataRow.isnull("材料长度")=False  AndAlso e.DataRow.isnull("材料宽度")=False  AndAlso e.DataRow.isnull("材料高度")=False Then
        e.DataRow("材料重量") = e.DataRow("材料直径")*e.DataRow("材料直径")*e.DataRow("圆柱体高度")/4*3.14 +e.DataRow("材料长度")*e.DataRow("材料宽度")*e.DataRow("材料高度")*  7.8 / 1000000
    \'End If
End If


 

http://www.foxtable.com/help/topics/1469.htm

 

[此贴子已经被作者于2014-5-5 9:37:46编辑过]

--  作者:1234567
--  发布时间:2014/5/5 9:58:00
--  

ok


--  作者:1234567
--  发布时间:2014/5/5 10:24:00
--  

e.datarow("金额")=e.datarow("单价")*e.datarow("数量")

希望如果数量列为空值,就默认为1,怎么处理?


--  作者:有点甜
--  发布时间:2014/5/5 10:38:00
--  
 e.datarow("金额") = e.datarow("单价") * IIF(e.datarow.IsNull("数量"), 1, e.datarow("数量"))