比较简单的代码,就是想从数据库读出数据写入edit,但是一运行到第二行就出错,提示是List index out of bounds,请问有大侠知道是什么缘故吗,谢谢赐教
procedure  TForm1.FormShow(Sender: TObject);begin
 ADOQuery1.SQL.clear;
 ADOQuery1.SQL.Add('select sum(Amount) from exDetail where ReType="zhichu"');
 Edit2.Text := ADOQuery1.Fields.Fields[0].AsString;//这里出错
  ADOQuery1.Open();  
end;

解决方案 »

  1.   

    begin 
    ADOQuery1.SQL.clear; 
    ADOQuery1.SQL.Add('select sum(Amount) from exDetail where ReType="zhichu"');
    ADOQuery1.Open();  
    if not AdoQuery1.isEmpty then  
    Edit2.Text := ADOQuery1.Fields.Fields[0].AsString;  
    end;
      

  2.   

     ADOQuery1.Fields.Fields[0],去掉一个Fields用索引容易搞混,用字段名称吧ADOQuery1.FieldByName('字段名').ASString;
      

  3.   

    Edit2.Text := ADOQuery1.Fields.Fields[0].AsString;//这里出错 
      ADOQuery1.Open();  
    要先open再取值
      

  4.   

    谢谢楼上的各位大侠帮助,应该是3楼的缘故,没有open,另外2楼的代码也是可以运行的。判断一下也可以
      

  5.   

    tryprocedure  TForm1.FormShow(Sender: TObject); 
    begin 
    ADOQuery1.close;
    ADOQuery1.SQL.clear; 
    ADOQuery1.SQL.Add('select sum(Amount) from exDetail where ReType="zhichu"');
    ADOQuery1.Open;   
    Edit2.Text:=ADOQuery1.FieldByName('字段名').ASString; 
    end;
      

  6.   

    好像不能获得我需要的数据,我是希望Edit2.Text能获取sum(Amount)的数据,而不是某个字段的个别数据
      

  7.   

    先执行 即open!再取数据!
    你要返回的是总和!~ begin 
      ADOQuery1.SQL.clear; 
      ADOQuery1.SQL.Add('select sum(Amount) from exDetail where ReType="zhichu"');
      ADOQuery1.Open();  
      if not AdoQuery1.isEmpty then  
      Edit2.Text := ADOQuery1.Fields.Fields[0].Value;  
    end;
      

  8.   

    非常奇怪,取出来的值固定的, 不管amount 和zhichu 字段的数字怎么变化,text的数字都是一个固定值,4091