代码如下:var
sqlstr:string;
begin
  sqlstr:='select 字段名 from 表名 where 字段名 = false ';
  form1.adoquery1.Close;
  form1.adoquery1.SQL.Clear;
  form1.adoquery1.SQL.Add(sqlstr);
  form1.adoquery1.Open;
  form2.Edit1.Text := form1.ADOQuery1.FieldValues['字段名'];
  .....end;运行程序的时候一但读到某个字段里面某行内容是空的时候就报下面的错:Could not convert variant of type (Null) into type (string)望兄弟门帮忙解答.谢谢了啊!!!

解决方案 »

  1.   

    忘记说了,数据库是access2003 字段格式是文本.
      

  2.   

    sqlstr:='select isnull(字段名,'') as 字段名 from 表名 where 字段名 = false '; 不知道access里行不行或者,form2.Edit1.Text := form1.ADOQuery1.FieldByName('字段名').AsString
    试试
      

  3.   

    谢谢Corn1 的解答第一个办法:   select语句运行后提示"字符串的语法错误"第二个我之前试过个,如果是  := adoquery. 话没有FieldByName这个属性.不过还是谢谢你的解答!
      

  4.   

    么有FieldByName这个属性自己打上就可以了.
      

  5.   

    sqlstr:='select iif(字段名 is null,'',字段名) from 表名 where 字段名 = false '; 
      

  6.   

    目的是当字段值为null时转化为'',这样输出时就不会出现错误提示
      

  7.   


    谢谢simonhehe 解答
    sqlstr:='select iif(* is null,'',*) from list where bf = false ';
    form1.adoquery1.Close;
    form1.adoquery1.SQL.Clear;
    form1.adoquery1.SQL.Add(sqlstr);
    form1.adoquery1.Open;这样写后提示:   '语法错误(操作符丢失)在查询表达式iif(* is null,'',*) from list where bf = false' 中. 
      

  8.   

    这个比我还恼火,嘿嘿
    么有FieldByName这个属性自己打上就可以了. 
    'select if(* is null,'',*) from list where bf = 
      

  9.   

    谁告诉你adoquery没有fielbyname属性?我天天用啊,你肯定是打错字了
      

  10.   


    //呵呵,少写了两个'
    //不能用*,如果你有多个字段值有可能为null,需要这么写: sqlstr:='select 字段1 = iif(字段1 is null, '''', 字段1),字段2 = iif(字段2 is null, '''', 字段2) from list where bf = false ';
    //sqlstr:='select 字段1 = iif(字段1 is null, '''', 字段1) from list where bf = false ';
    form1.adoquery1.Close;
    form1.adoquery1.SQL.Clear;
    form1.adoquery1.SQL.Add(sqlstr);
    form1.adoquery1.Open;
    //如果上边的还不行,就用下边的,Access的if不记得用法了sqlstr:='select 字段1 = isnull(字段1,'''') from list where bf = false ';
    form1.adoquery1.Close;
    form1.adoquery1.SQL.Clear;
    form1.adoquery1.SQL.Add(sqlstr);
    form1.adoquery1.Open;
      

  11.   

    不是说adoquery没有fielbyname属性.而是在什么什么等于adoquery的时候没有fielbyname这个属性,比如我的这条: form2.Edit1.Text := form1.ADOQuery1.(这里没有fielbyname属性显示)['字段名']; 如果是自己打上去运行就提示出错:"undeclared identifier":'fielbyname'.我到希望真是自己打错!
      

  12.   

    'fielbyname'
    是打错了啊,你仔细看看?
    FieldByName
      

  13.   

    FieldByName('字段名').asString;呵呵,不会自动提示出来,需要自己写;
      

  14.   

    因为FieldByName('字段名')的返回类型是TField,不能自动转换为string类型,所以代码自动完成功能无法匹配,就没显示了
      

  15.   

    感谢simonhehe提供写法,但还是提示语法出错,虽然错了,还是十分的感谢.
     谢谢'Corn1'提示:在这里我是打错了,刚刚我是直接复制'ditouhu'写的. 但情况就是自己写上去写对了还是会提示"undeclared identifier":'fielbyname'" 这样的错误.
      

  16.   

    谢谢luxuewei5214 解答!手动写上去后提示不是相同类型,那如果要转换该怎么写呢??