RT,一个字段值可能是NULL,需要对这个字段值进行判断,但现在如果是NULL,会报错,要如何处理啊

解决方案 »

  1.   

    是对数据库操作?
    if xxx.value=null then
    begin
      //
    end;
      

  2.   


    result:= true;
      sSQL:= 'select userid,[审批单号],[用户名],[短信开启],[审批意见],[审批意见nm],[审批状态] from v_shenp where [审批单号]='''+xBillNO+'''';
      with frmDM.qryDSelect do 
      begin 
        Close; 
        SQL.Clear;
        SQL.Append(sSQL);
          Open;
          if RecordCount > 0 then
              begin
                  yUserID    := FieldByName('userid').AsString;  //用户ID
                  yShenpYJ    := FieldByName('[审批意见nm]').AsString;  //就是这个字段,查询出的值可能是NULL或是有具体的值,但现在如果查询结果是NULL,编译好的程序运行会报错,提示这个字段值找不到
      

  3.   

    在sql中用isnull,或者数据集中 if  Query1.Fields['字段索引'].IsNull then判断
      

  4.   

    sSQL:= 'select userid,[审批单号],[用户名],[短信开启],[审批意见],isnull([审批意见nm],0),[审批状态] from v_shenp where [审批单号]='''+xBillNO+'''';
      

  5.   

    if ADOQuery1.FieldByName('name').IsNull then
    begin
    //
    end;
      

  6.   

    有个疑问yShenpYJ    := FieldByName('[审批意见nm]').AsString;FieldByName('[审批意见nm]').isnull 为真的话 
    FieldByName('[审批意见nm]').AsString 不是会隐性转换为空字符串''嘛???应该是还有别的地方有点问题吧
      

  7.   

    这个问题应该不是字段为Null引起的,楼主提供的错误提示是“编译好的程序运行会报错,提示这个字段值找不到”
      

  8.   

    是 NULL转换下呗,if aa=null then aa=一个值
      

  9.   

    但是把这个字段内容去掉,程序会正常运行yShenpYJ    := FieldByName('[审批意见nm]').AsString; 
      

  10.   


    建议楼主在窗体上放一个DBGrid,显示你查询到的所有数据,看看是否存在“[审批意见nm]”这个字段。
      

  11.   

    在SQL查询分析器中执行SQL事件探查器查到的语句,是可以执行的,只是“[审批意见nm]”这个字段值是NULL