Foxtable(狐表)用户栏目专家坐堂 → [讨论]compute问题


  共有3923人关注过本帖树形打印复制链接

主题:[讨论]compute问题

帅哥哟,离线,有人找我吗?
rpg2813
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
[讨论]compute问题  发帖心情 Post By:2014/4/22 0:31:00 [只看该作者]

正常:dr("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = '" & dr("产品") & "'")

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




 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2014/4/22 6:26:00 [只看该作者]

武功不容易自創,語法更不能亂來!

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

 回到顶部
帅哥哟,离线,有人找我吗?
rpg2813
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2014/4/22 11:41:00 [只看该作者]

早上起来看没人回复我是就按版主的方法先试了
关键是为什么用我原来的错误代码也可以呢?(大部分可以,少部分得出空值)

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/22 11:49:00 [只看该作者]

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2014/4/22 11:50:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
zyqzyy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5879 威望:0 精华:0 注册:2013/7/29 12:00:00
  发帖心情 Post By:2014/4/22 11:55:00 [只看该作者]

值得找出空值原因,这样的代码还“简洁”呢!!测试去!!!!!!

 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By: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("产品") & "'")  '支持表達式,運算正確!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/22 16:04:00 [只看该作者]

 8楼有研究精神呐...

 回到顶部
帅哥哟,离线,有人找我吗?
zyqzyy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5879 威望:0 精华:0 注册:2013/7/29 12:00:00
  发帖心情 Post By:2014/4/22 18:09:00 [只看该作者]

支持8楼!!!

 回到顶部
总数 12 1 2 下一页