Foxtable(狐表)用户栏目专家坐堂 → 统计没有数据


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

主题:统计没有数据

帅哥,在线噢!
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1375 积分:9151 威望:0 精华:0 注册:2020/11/4 22:15:00
统计没有数据  发帖心情 Post By:2025/1/11 13:49:00 [只看该作者]


需求;汇总表A的"单号、品名、规格、完成数",执行下面代码,没有报错,没提示,如何处理?
If e.DataCol.Name = "单号" AndAlso e.DataCol.Name = "品名" AndAlso e.DataCol.Name = "规格" Then '发生变化的是XX单号列   
    Dim Filter As String = "[单号] = '" & e.NewValue & "' AND [品名] = '" & e.NewValue & "'  AND [规格] = '" & e.NewValue & "'"
    e.DataRow("完成数") = DataTables("表B").Compute("Sum(完成数)", Filter)
    ' MsgBox(10)'排查错
msgbox(Filter) '调试用
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111738 积分:568832 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/11 14:04:00 [只看该作者]

先学好基础:http://www.foxtable.com/webhelp/topics/0220.htm

If e.DataCol.Name = "单号" OrElse e.DataCol.Name = "品名" OrElse e.DataCol.Name = "规格" Then '发生变化的是XX单号列   

 回到顶部
帅哥,在线噢!
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1375 积分:9151 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2025/1/11 14:23:00 [只看该作者]

下面执行,没报错也没数据
If e.DataCol.Name = "单号" OrElse e.DataCol.Name = "品名" OrElse e.DataCol.Name = "规格" Then '发生变化的是XX单号列   
Dim Filter As String = "[单号] = '" & e.NewValue & "' AND [品名] = '" & e.NewValue & "'  AND [规格] = '" & e.NewValue & "'"
    e.DataRow("完成数") = DataTables("表B").Compute("Sum(完成数)", Filter)
    ' MsgBox(10)'排查错
msgbox(Filter) '调试用
End If

下面执行,报错   语法错误:“AndAlso”运算符后缺少操作数。

If e.DataCol.Name = "单号" OrElse e.DataCol.Name = "品名" OrElse e.DataCol.Name = "规格" Then '发生变化的是XX单号列   
Dim Filter As String = "[单号] = '" & e.NewValue & "' AndAlso [品名] = '" & e.NewValue & "'  AndAlso  [规格] = '" & e.NewValue & "'"
    e.DataRow("完成数") = DataTables("表B").Compute("Sum(完成数)", Filter)
    ' MsgBox(10)'排查错
msgbox(Filter) '调试用
End If
下面执行,报错   语法错误:“OrElse”运算符后缺少操作数。
If e.DataCol.Name = "单号" OrElse e.DataCol.Name = "品名" OrElse e.DataCol.Name = "规格" Then '发生变化的是XX单号列   
Dim Filter As String = "[单号] = '" & e.NewValue & "' OrElse [品名] = '" & e.NewValue & "'  OrElse  [规格] = '" & e.NewValue & "'"
    e.DataRow("完成数") = DataTables("表B").Compute("Sum(完成数)", Filter)
    ' MsgBox(10)'排查错
msgbox(Filter) '调试用
End If


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111738 积分:568832 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/11 14:41:00 [只看该作者]

再学习基础

这个是代码里使用的逻辑运算符and等:http://www.foxtable.com/webhelp/topics/0220.htm
这个是表达式里使用的逻辑运算符(只有and和or)等:http://www.foxtable.com/webhelp/topics/0102.htm

上面两种用法完全不是一回事,不能混用

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111738 积分:568832 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/11 14:42:00 [只看该作者]

只能说明没有同时符合这3个条件的数据

If e.DataCol.Name = "单号" OrElse e.DataCol.Name = "品名" OrElse e.DataCol.Name = "规格" Then '发生变化的是XX单号列   
Dim Filter As String = "[单号] = '" & e.NewValue & "' AND [品名] = '" & e.NewValue & "'  AND [规格] = '" & e.NewValue & "'"
msgbox(Filter )
dim a as double = DataTables("表B").Compute("Sum(完成数)", Filter)
msgbox(a)
    e.DataRow("完成数") = a
msgbox(Filter) '调试用
End If

 回到顶部
帅哥,在线噢!
lin98
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1375 积分:9151 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2025/1/11 15:03:00 [只看该作者]

Dim Filter As String = "[单号] = '" & e.NewValue & "' AND [品名] = '" & e.NewValue & "'  AND [规格] = '" & e.NewValue & "'"

这里三个条件的新值,只有一个新值。执行提示:[单号]="'QT*20"AND [品名] = "'QT*20"AND [规格] = "'QT*20"

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111738 积分:568832 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/11 15:25:00 [只看该作者]

msgbox(Filter )截图弹窗看看

 回到顶部
帅哥,在线噢!
lin98
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1375 积分:9151 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2025/1/11 15:59:00 [只看该作者]


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

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111738 积分:568832 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/11 17:02:00 [只看该作者]

很明显查询条件里有多余的空格,其次三个列都查询同样的数据,有符合这个条件的数据?

要知道e.NewValue表示的是当前正在录入的这个单元格的值,而不是表示3个列的单元格值,所以确定不应该是这样?
Dim Filter As String = "[单号] = '" & e.DataRow("单号") & "' AND [品名] = '" & e.DataRow("品名") & "'  AND [规格] = '" & e.DataRow("规格") & "'"

 回到顶部