Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:统计没有数据

1楼
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
2楼
有点蓝 发表于: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单号列   
3楼
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

4楼
有点蓝 发表于: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楼
有点蓝 发表于: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
6楼
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"
7楼
有点蓝 发表于:2025/1/11 15:25:00
msgbox(Filter )截图弹窗看看
8楼
lin98 发表于:2025/1/11 15:59:00

图片点击可在新窗口打开查看此主题相关图片如下:计算.jpg
图片点击可在新窗口打开查看
9楼
有点蓝 发表于:2025/1/11 17:02:00
很明显查询条件里有多余的空格,其次三个列都查询同样的数据,有符合这个条件的数据?

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

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.