以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论]compute问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49641)

--  作者:rpg2813
--  发布时间:2014/4/22 0:31:00
--  [讨论]compute问题
正常:dr("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & dr("产品") & "\'")

我的:dr("数量") = DataTables("订单").Compute("Sum(数量1)+sum(数量2)","[产品] = \'" & dr("产品") & "\'")
我在这样使用时有时侯正确有时侯错误:其实我就是2个整数列的求和,条件是没问题的
错误时得到的是空值
关键是得到空值的情况很诡异,想先问问我的代码这样写可以么?因为帮助中没发现相应的例子




--  作者:ybil
--  发布时间:2014/4/22 6:26:00
--  
武功不容易自創,語法更不能亂來!

Dim flt1 As string ="[产品] = \'" & dr("产品") & "\'"
dr("数量") = DataTables("订单").Compute("Sum(数量1)",flt1) +  DataTables("订单").Compute("Sum(数量1)",flt1)

--  作者:rpg2813
--  发布时间:2014/4/22 11:41:00
--  
早上起来看没人回复我是就按版主的方法先试了
关键是为什么用我原来的错误代码也可以呢?(大部分可以,少部分得出空值)

--  作者:有点甜
--  发布时间:2014/4/22 11:49:00
--  
以下是引用rpg2813在2014-4-22 11:41:00的发言:
早上起来看没人回复我是就按版主的方法先试了
关键是为什么用我原来的错误代码也可以呢?(大部分可以,少部分得出空值)

 

测试这样也是可用,新大陆?

 

msgbox(Tables("订单").Compute("sum(单价)+sum(数量)"))


--  作者:ybil
--  发布时间:2014/4/22 11:50:00
--  
以下是引用rpg2813在2014-4-22 11:41:00的发言:
早上起来看没人回复我是就按版主的方法先试了
关键是为什么用我原来的错误代码也可以呢?(大部分可以,少部分得出空值)

要的是100%準確!99.9999999999999999999%準確也沒用!


--  作者:zyqzyy
--  发布时间:2014/4/22 11:55:00
--  
值得找出空值原因,这样的代码还“简洁”呢!!测试去!!!!!!
--  作者:ybil
--  发布时间:2014/4/22 13:27:00
--  
以下是引用zyqzyy在2014-4-22 11:55:00的发言:
值得找出空值原因,这样的代码还“简洁”呢!!测试去!!!!!!
經測試:
SQL的方法:
Select Sum(iif(數量1 is Null,0,數量1)) + Sum(iif(數量2 is Null,0,數量2)) As  合計 From{A}   \'運算正確
Select Sum(數量1) + Sum(iif(數量2 is Null,0,數量2)) As  合計 From{A}  \'支持格式,在[數量1]或[數量2]列全為空時,結果為空

FOX的Compute的局限:
Output.Show(Tables("A").Compute("Sum(數量1) + Sum(數量2)")  \'支持格式,在[數量1]或[數量2]列全為空時,結果為空
Output.Show(Tables("A").Compute("Sum(數量1) + Sum(iif(數量2 is Null,0,數量2))")  \'不支持


--  作者:ybil
--  发布时间:2014/4/22 15:03:00
--  
測試完畢:
dr("数量") = DataTables("订单").Compute("Sum(数量1)+sum(数量2)","[产品] = \'" & dr("产品") & "\'")  \'在[數量1]或[數量2]列全為空時,結果為空,不支持表達式!

dr("数量") = DataTables("订单").SQLCompute("Sum(iif(數量1 is Null,0,數量1)) + Sum(iif(數量2 is Null,0,數量2))","[产品] = \'" & dr("产品") & "\'")  \'支持表達式,運算正確!

--  作者:有点甜
--  发布时间:2014/4/22 16:04:00
--  
 8楼有研究精神呐...
--  作者:zyqzyy
--  发布时间:2014/4/22 18:09:00
--  
支持8楼!!!