procedure Tdatato.Button1Click(Sender: TObject);
var strr:string;
    i:integer;
    t010,t200,t205:string;
    isbn,title,author,trans,price:string;
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select * from book');
  adoquery1.Open;
  adoquery1.First;
  isbn:=adoquery1.FieldValues['isbn'];
  memo1.Lines.Add(isbn);
  title:=adoquery1.FieldValues['book_name'];
  memo1.Lines.Add(title);
  author:=adoquery1.FieldValues['author'];
  memo1.Lines.Add(author);
  trans:=adoquery1.FieldValues['translator'];
  memo1.Lines.Add(trans); //此处出错,原因是translator字段的值为空
  如何解决这个问题?
  是否可先判断他的值是否为空再进行操作,还是可以采用别的方法?请指教,谢谢!
 price:=adoquery1.FieldValues['price'];
 memo1.Lines.Add(price);
end;

解决方案 »

  1.   

    if not adoquery1.FieldByName('translator').IsNull then
    begin
      trans:=adoquery1.FieldValues['translator'];
      memo1.Lines.Add(trans);
    end;
      

  2.   

    try thistrans:=adoquery1.FieldByName('translator').asstring;
      

  3.   

    fieldvalues不好用,
    用fieldbyname('').asstring就不会出错了。
      

  4.   

    DataSet.FieldByName(FieldName).IsNull
    DataSet.Fields[FieldIndex].IsNullTField = class(TComponent) property IsNull: Boolean read GetIsNull;
      

  5.   

    if not  adoquery1.FieldByName('translator').IsNull then
    begin
      trans:=adoquery1.FieldValues['translator'];
      memo1.Lines.Add(trans);
    end;
      

  6.   

    用fieldbyname('').asstring就行了,如果加个判断的话,你不觉得麻烦吗?每取一个字段的内容都去判断一下很麻烦。
      

  7.   

    回复人: wenjianyao(建) ( ) 信誉:81  2005-06-03 11:12:00  得分: 0  
     
     
       用fieldbyname('').asstring就行了,如果加个判断的话,你不觉得麻烦吗?每取一个字段的内容都去判断一下很麻烦。
      
     
    如果为Null,就错了
      

  8.   

    if Qry['aa']=null then 
         
    else
      

  9.   

    这种情况用asstring好,会自动将空值转成''空字符串