我希望直接从access数据库中读数据,用一个数组表达出来,然后在memo中显示,我下面的语句
在哪有问题?各位兄弟姐妹,大哥哥大嫂嫂们帮忙诊断一下,感激不尽!在线等待啊
var
 i:integer;
 str:string;
 aa:array of double;
 begin
  str:='select z from dj_xmg_zv';
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add(str);
  adoquery1.Open;
  adoquery1.First;
  setlength(aa,adoquery1.RecordCount);
  for i:=0 to adoquery1.RecordCount-1
  do begin
  aa[i]:=adoquery1.FieldValues['z'];
  adoquery1.Next;
  end;
  memo1.Lines.Add(floattostr(aa[i]));

解决方案 »

  1.   

    最后一句提前到end前面看看(电脑上没装Delphi只能看看。。)
      

  2.   

    for i:=0 to adoquery1.RecordCount-1
      do begin
      aa[i]:=adoquery1.FieldValues['z'];
      adoquery1.Next;
      end;
    ---------------------------
    改成 while not adoquery1.Eof do
    begin
    aa[i]:=adoquery1.fields[0].asstring;//因为你只select了一个字段
    adoquery1.Next;
    end;
    试试
      

  3.   

    或者直接这样:
    while not adoquery1.Eof do
    begin
    memo1.lines.add(adoquery1.fields[0].asstring);
    adoquery1.Next;
    end;
      

  4.   

    for i:=0 to adoquery1.RecordCount-1
      do begin
      aa[i]:=adoquery1.FieldValues['z'];
      adoquery1.Next;
      memo1.Lines.Add(floattostr(aa[i]));
      end;
      

  5.   

    var
     i:integer;
     str:string;
     aa:array of double;
     begin
      str:='select z from dj_xmg_zv';
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add(str);
      adoquery1.Open;
      adoquery1.First;
      setlength(aa,adoquery1.RecordCount);
      i:=0; //循环前记得初始
      for i:=0 to adoquery1.RecordCount-1  do 
      begin
      aa[i]:=adoquery1.FieldValues['z'];
      adoquery1.Next;
      memo1.Lines.Add(floattostr(aa[i]));  //每条记录都要add 放在循环外 只add最后一条
      end;
      aa.free; //aa 用完之后释放
    end;