急急急!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输出后显示为?
求大神指点!!!!!
...全文
595 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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的时候是正常的
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2015-12-02 09:25
社区公告
暂无公告