VB+ACSSES有两个以下表表1、商品资料表(各商品条码是唯一的)
条码 商品名称 商品助记码 商品分类
69125365622 康师傅牛肉面 KSFNRM 食品类
69125365555 康师傅鸡蛋面 KSFJDM 食品类
69456222411 矿泉水 KQS 饮料类
表2 销售明细表 销售单流水号 条码 销售数量 零售额
1001120001 69125365622 2 10
1001120001 69253562211 1 7
现在在一个窗体的DATAGRID表格控件中显示销售明细
SQL语名如下:
SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期
from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号窗体中还提供了对‘商品名称’‘商品助记码’‘条码’‘日期’的模糊查询功能,是通过Filter实现的
如查询某月康师傅牌子的商品销售明细RS.filter="商品名称 like '*" & Text1.text & "*' and 日期>=" & text2.text & "and 日期<=" & text3.text以上的各种功能都能实现了以上只是说明一下我的程序的思路好让大侠们明白我的以下问题,实际代码不是这样现在的问题是无法对这种查询结果进行合计(SUM(销售数量),sum(零售额))我用以下SQL语句在ACSSES环境里可以正确返回结果,但在VB中返回不了结果"SELECT sum(销售数量) as totalSL,sum(零售额) as totalLSE from
(SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期
from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号)
where 商品名称 like '*" & Text1.text & "*' and 日期>=" & text2.text & "and 日期<=" & text3.text请高手们看看有没有更好的方法,指点一下,(以上SQL语句未必准确,只是我当前的实现方法)
条码 商品名称 商品助记码 商品分类
69125365622 康师傅牛肉面 KSFNRM 食品类
69125365555 康师傅鸡蛋面 KSFJDM 食品类
69456222411 矿泉水 KQS 饮料类
表2 销售明细表 销售单流水号 条码 销售数量 零售额
1001120001 69125365622 2 10
1001120001 69253562211 1 7
现在在一个窗体的DATAGRID表格控件中显示销售明细
SQL语名如下:
SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期
from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号窗体中还提供了对‘商品名称’‘商品助记码’‘条码’‘日期’的模糊查询功能,是通过Filter实现的
如查询某月康师傅牌子的商品销售明细RS.filter="商品名称 like '*" & Text1.text & "*' and 日期>=" & text2.text & "and 日期<=" & text3.text以上的各种功能都能实现了以上只是说明一下我的程序的思路好让大侠们明白我的以下问题,实际代码不是这样现在的问题是无法对这种查询结果进行合计(SUM(销售数量),sum(零售额))我用以下SQL语句在ACSSES环境里可以正确返回结果,但在VB中返回不了结果"SELECT sum(销售数量) as totalSL,sum(零售额) as totalLSE from
(SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期
from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号)
where 商品名称 like '*" & Text1.text & "*' and 日期>=" & text2.text & "and 日期<=" & text3.text请高手们看看有没有更好的方法,指点一下,(以上SQL语句未必准确,只是我当前的实现方法)
(SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期 from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号)
where 商品名称 like '*" & Text1.text & "*' and 日期>=" & text2.text & "and 日期 <=" & text3.text 在VB中,返回的totalsl,totalLSE 是NULL
"(SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期 " & _
"from 销售明细表 a,商品资料表 b " & _
"where a.条码=b.条码 " & _
"and b.商品名称 like '*" & Text1.Text & "*' " & _
"and 日期>=#" & text2.Text & "# and 日期 <=#" & text3.Text & "#)as AA"要加上这个sum值,用union [all] 具体用法,你看access的帮助吧
"SELECT sum(销售数量) as totalSL,sum(零售额) as totalLSE from" & _
" (SELECT a.条码,b.商品名称,a.销售数量,a.零售额," & _
" b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期" & _
" from 销售明细表 a" & _
" join 商品资料表 b on a.条码=b.条码) as T" & _
" where 商品名称 like '*" & Text1.text & "*'" & _
" and 日期>=#" & text2.text & "#" & _
" and 日期<=#" & text3.text & "#"
这样会导致任何运算结果出来的都是NULL解决方法有两个
1:将表里该字段的默认值设为0,然后对数据做一下update
如update 表 set 字段1=0 where 字段1 is null
2:在sql语句里处理,把null处理为0如Select sum(iif(isnull(字段1),0,字段1)) as sum1 from..
只是在销售表中还有个[成本]字段,该字段有NULL,不过在第一个查询语句有处理掉了如下:
SELECT a.条码,b.商品名称,a.销售数量,a.零售额,b.商品助记码,b.商品分类,left(a.销售单流水号,6) as 日期,iif(isnull(a.sumcost),0,a.sumcost) as 成本
from 销售明细表 a,商品资料表 b where a.条码=b.条码 order by a.条码,a.销售单流水号当然在合计的SQL语句中也有这句,按理这样已经处理掉了,不会是这个有问题吧?因为数据量大了些所以不便手工处理NULL来尝试
把销售表中的NULL都换成0了,还是不得
3 个 TextBox 的内容是什么?
是的,说的对。
text1.text="康师傅",text2,text3均为有效日期值,且数据表中有疑或的是为什么在ACSSES环境里可以正确返回结果,但在VB中返回不了SUM结果
也就是说 [日期] 其实是字符串格式,那么 where 子句中两边就应该加 ' 而不是 #。
而且 Text2、Text3 的格式要和它保持一致,不能一边是 100205 一边是 2010-2-5。