SCBLFrm.Detail.Close;
  SCBLFrm.Detail.SQL.Clear;
  SCBLFrm.Detail.SQL.Add('select * from 材料明细表 where (单耗<>0) and (生产单号='''+CJDH.Text+''')');
  SCBLFrm.Detail.ExecSQL;
  SCBLFrm.Detail.Open;
我想查询出指定的生产单号且单耗不为0的材料,一执行上面的语句就提示出“单耗没默认值”的错误信息,哪位大哥有碰到过此类问题??

解决方案 »

  1.   

    在不需要返回结果集的查询当中使用ExecSQL;
    所以这里Open和ExecSQL使用一个即可
    你可以这样
      SCBLFrm.Detail.Close;
      SCBLFrm.Detail.SQL.Clear;
      SCBLFrm.Detail.SQL.Add('select * from 材料明细表 where (单耗<>0) and (生产单号='+'''+CJDH.Text+'''+')');
    try
      scblfrm.detail.open;
    except
      SCBLFrm.Detail.ExecSQL;
    end;
      

  2.   

    表中'单耗'列若允许NULL值,这样写:
    SCBLFrm.Detail.SQL.Add('select * from 材料明细表 where (isnull(单耗,0)<>0) and (生产单号='+'''+CJDH.Text+'''+')');
    去掉 SCBLFrm.Detail.ExecSQL;
      

  3.   

    TO 索索:
      函数有错!!我用的是Access数据库,提示函数参数个数不对
      

  4.   

    Access数据库 中好像有一个 NZ(,) 函数,你试一下。
      

  5.   

    如果是float  看来sql语句是没有问题的。
      

  6.   

    搞定了,不是SQL语句出错,而是程序其它地方的一个小问题,吐血,浪费了我好多时间!
    非常感谢楼上的朋友的帮忙!!