以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 统计没有数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194761) |
-- 作者:lin98 -- 发布时间: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
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 上面两种用法完全不是一回事,不能混用
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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"
|
-- 作者:有点蓝 -- 发布时间:2025/1/11 15:25:00 -- msgbox(Filter )截图弹窗看看 |
-- 作者:lin98 -- 发布时间:2025/1/11 15:59:00 -- 此主题相关图片如下:计算.jpg |
-- 作者:有点蓝 -- 发布时间:2025/1/11 17:02:00 -- 很明显查询条件里有多余的空格,其次三个列都查询同样的数据,有符合这个条件的数据? 要知道e.NewValue表示的是当前正在录入的这个单元格的值,而不是表示3个列的单元格值,所以确定不应该是这样? Dim Filter As String = "[单号] = \'" & e.DataRow("单号") & "\' AND [品名] = \'" & e.DataRow("品名") & "\' AND [规格] = \'" & e.DataRow("规格") & "\'"
|