急急急!VB对Access数据库进行sum求和总是出错!

luffy9202 2015-12-02 09:25:36
SQL = "select * from "
SQL = SQL & "(SELECT 开单日期,业务类型,单号,sum(销售合计) as 欠货金额,null as 欠货归还金额 FROM 商店收支表 WHERE 业务类型= '欠货' and 顾客编号='" & txtCusnum.Text & "'and format(开单日期,'yyyy-mm') between '" & Format(start, "yyyy-mm") & "' and '" & Format(finish, "yyyy-mm") & "' and 是否作废='否' group by 业务类型,开单日期,单号,顾客编号,顾客姓名 "
SQL = SQL & "union all SELECT 开单日期,业务类型,单号,null as 欠货金额,sum(销售合计) as 欠货归还金额 FROM 商店收支表 WHERE 业务类型= '欠货归还' and 顾客编号='" & txtCusnum.Text & "'and format(开单日期,'yyyy-mm') between '" & Format(start, "yyyy-mm") & "' and '" & Format(finish, "yyyy-mm") & "'and 是否作废='否' group by 业务类型,开单日期,单号,顾客编号,顾客姓名 )as t order by 开单日期,单号"
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & gFile & ";Mode=ReadWrite;Persist Security Info=False"
Adodc1.RecordSource = SQL
Adodc1.Refresh


代码如上,同样的一张表,第二行的sum求和函数显示正确,第三行的sum用debug输出后显示为?
求大神指点!!!!!
...全文
721 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-12-04
  • 打赏
  • 举报
回复
null as 欠货归还金额 会导致字段的类型不确定,如果整列都是 null 值倒是问题不大(反正没有具体的值)。
但是你用 UNION ALL 和 sum(销售合计) 并起来,就需要保证上下两部分的类型一致。

假定销售合计是双精度类型,你把两个 null 都改为 CDbl(0) 试试。
饮水需思源 2015-12-03
  • 打赏
  • 举报
回复
这样试试:
union all SELECT 开单日期,业务类型,单号,0 as 欠货金额,sum(isnull(销售合计,0)) as 欠货归还
qq_29347807 2015-12-03
  • 打赏
  • 举报
回复
union all SELECT 开单日期,业务类型,单号,null as 欠货金额,sum(isnull(销售合计,0)) as 欠货归还
luffy9202 2015-12-03
  • 打赏
  • 举报
回复
引用 2 楼 Leftie 的回复:
这样试试: union all SELECT 开单日期,业务类型,单号,0 as 欠货金额,sum(isnull(销售合计,0)) as 欠货归还
这样查出来的表对,只不过所有应该为空的地方全部显示为0了。这个该用null 还是0 怎么区分呀?跟字段的数据类型有关系吗?
luffy9202 2015-12-02
  • 打赏
  • 举报
回复
补充一下,第三行不加sum和group by的时候是正常的

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧