select (Sum(Amount)-Nz((select Sum(Amount) from InStock where Flag='发' and Goods_ID='000003' group by Goods_ID),0)) as Total  from InStock where Flag='进' and Goods_ID='000003' group by Goods_ID上述SQL语句的作用是商品号为"000003"的库存查询出来,在ACCESS中能得出结果,但在.NET中却不行,提示Nz函数未定义
...
strSQL="select (Sum(Amount)-(Nz((select Sum(Amount) from InStock where Flag='发' and Goods_ID='000003' group by Goods_ID),0))) as Total  from InStock where Flag='进' and Goods_ID='000003' group by Goods_ID";
comm=new OleDbCommand(strSQL,con);
con.Open();
dr=comm.ExecuteReader();
...
请问这是为什么?
注:Nz函数在ACCESS中,相当于SQL SERVER中的ISNULL函数

解决方案 »

  1.   

    那为何不把Nz函数替换成ISNULL函数,Nz函数在SQL里是没有吧!
      

  2.   

    请问这是为什么?
    注:Nz函数在ACCESS中,相当于SQL SERVER中的ISNULL函数
    ______________
    自己都说了,Nz函数在SQL没存在,当然提示Nz函数未定义,如果想让两个数据库通用,就分为两种两个语句呗!
      

  3.   

    注意了,我用的是ACCESS数据库,在ACCESS数据库中只有Nz函数的作用才是转化NULL为零,叫我怎么办?
      

  4.   

    看来,ACCESS和.NET是婚外情,不是一家的
      

  5.   

    当然是可能的阿!NZ SQL里没这东东阿!
      

  6.   

    那有什么解决方法吗,如何才能使ACCESS中的子查询的结果为NULL的转换为0,难道.NET没有办法吗?这是设计缺陷?
      

  7.   

    在access中可以用 is null 判断阿
    为什么还要用nz
      

  8.   

    最好把nz函数换成
    iif(col is null,0,col)  
    这样的方式应该没问题
      

  9.   

    to:icedut(冰) iif(col is null,0,col)能用在子查询中吗,像这样:
    iif((select...)is null,0,(select...))
    能行吗?
    to: cdo(原来我什么都不会) 
    报错:提示Nz函数未定义(但是如果单独放在ACCESS中执行,并不报错)
      

  10.   

    to:luoguofei(西漠之驼)
    我在这里讨论的是ACCESS和.NET,并不是两个数据库之间的事请问大家,如果你遇到这样的问题,如何解决?莫非没有解决的方法
      

  11.   

    to:icedut(冰) iif(col is null,0,col)能用在子查询中吗,像这样:
    iif((select...)is null,0,(select...))
    能行吗?着我倒是没有试过,你可以试一下阿
    你把表结构及需要的结果说一下
    看着你下面的语句 感觉很奇怪
    select (Sum(Amount)-Nz((select Sum(Amount) from InStock where Flag='发' and Goods_ID='000003' group by Goods_ID),0)) as Total  from InStock where Flag='进' and Goods_ID='000003' group by Goods_ID
      

  12.   

    select sum(iif (Flag='发',amount,0 )) -sum(iif (Flag='进',amount,0 )) as total
    from InStock where Flag='进' and Goods_ID='000003' 
    group by Goods_ID这样应该就好了,楼主的语句怎么那么复杂
      

  13.   

    select sum(iif (Flag='发',amount,0 )) -sum(iif (Flag='进',amount,0 )) as total
    from InStock where Flag='进' and Goods_ID='000003' 这样就行了
    group by 根本就不需要了
    你是差一种商品,不是多种楼主是计算库存吧
    感觉像
      

  14.   

    Nz函数是Access应用程序模型中的一个函数,并不属于OLEDB,也不在SQL标准里另外,如果你只想对'000003'的商品求和,不需要group by goods_id如果需要按照goods_id分组,可以这样限定条件group by goods_id having goods_id='000003'