Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]sql语句

李振兴  发表于:2013-01-09 21:54:21  
复制

SELECT qrycgrk.商品编号, qrycgrk.入库日期, qrycgrk.供应商, qrycgrk.入库数量, DSum("IIf([入库数量] Is Null,0,[入库数量])","qrycgrk","商品编号='" & [商品编号] & "' and  [入库日期]>= #" & [入库日期] & "#") AS 最晚回货累计
FROM tblspzx_kcsh_temp LEFT JOIN qrycgrk ON tblspzx_kcsh_temp.spid = qrycgrk.商品编号;

这段语句要想放到sql里面去,但试来试去都不行

 

Top
dbaseIIIer 发表于:2013-01-10 05:48:58

SELECT qrycgrk.商品编号, qrycgrk.入库日期, qrycgrk.供应商, qrycgrk.入库数量, 

DSum(

     IIf([入库数量] Is Null,0,[入库数量]),

     "qrycgrk",

     "商品编号='" & [商品编号] & "' and  [入库日期]>= #" & [入库日期] & "#"

) AS 最晚回货累计

FROM tblspzx_kcsh_temp LEFT JOIN qrycgrk ON tblspzx_kcsh_temp.spid = qrycgrk.商品编号;


分析你这句话,

1.   IIf([入库数量] Is Null,0,[入库数量]),   这行的 Is Null 原来是VBA语句,你放SQL会有意想不到效果的,建议改为 Nz([入库数量],0);

2.   DSum 也是 VBA 函数,你放进SQL 会有意想不到的“慢”;

3.   而最容易造成错误的是 来自 LEFT JOIN:

LEFT JOIN 的话, qrycgrk 的内容很有可能是空的,就是关联不到 采购入库 的 商品编号的时候;

然后 SELECT qrycgrk.商品编号, qrycgrk.入库日期, qrycgrk.供应商, qrycgrk.入库数量,  的都是 空值,

DSum 里面  IIf([入库数量] Is Null,0,[入库数量]),   =》 IIf([入库数量] Is Null,0,Null),    都不会出错,


错误的是这里:

"  [入库日期]>= #" & [入库日期] & "#" =》  [入库日期]>=##  

甚至,如果vba代码的话,只要表达式某个值  [入库日期] 是空的,整个表达式的结果都是空的

反正也是 意想不到的 效果了!



错误,差不多是必然的!




dbaseIIIer 发表于:2013-01-10 05:51:45

还有一个错是:


DSum 的第一个参数需要  文本的!

  IIf([入库数量] Is Null,0,[入库数量]),


这里返回的  都没有 文本值的! 这是必然错的 语句!



李振兴 发表于:2013-01-10 11:37:45
有什么办法解决呢,师傅

dbaseIIIer 发表于:2013-01-14 19:14:09

问 煮茶老头吧,他最喜欢在查询语句放 D 函数的!

我就投绝对反对票的!



疯狂的呐喊 发表于:2013-01-23 20:41:12

把这句"IIf([入库数量] Is Null,0,[入库数量])"换成 "(case when 入库数量 Is Null then 0 else 入库数量 end)"这个看看



疯狂的呐喊 发表于:2013-01-23 20:45:08

SELECT B.商品编号,

           B.入库日期,

           B.供应商,

           B.入库数量,

           Sum(CASE WHEN 入库数量 Is Null THEN 0 ELSE 入库数量 END) AS 最晚回货累计
FROM tblspzx_kcsh_temp A

LEFT JOIN qrycgrk B ON A.spid =B.商品编号

WHERE B.商品编号='" & [商品编号] & "' and  [入库日期]>= #" & [入库日期] & "#")



总记录:6篇  页次:1/1 9 1 :