查詢事件如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  adoquery1.Close ;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('select * from aa');
  adoquery1.Open ; 
end;
我用以下兩種方法都不行。雖然沒有語法錯誤,但出來的結果不是我想要的結果。我想要的是導出查詢結果所有的數據,像導出成excel那樣,很整齊的一列一列的。
procedure TForm1.Button2Click(Sender: TObject);
var
  tf:textfile;
  ln:string;
begin
  assignfile(tf,'c:\temp.txt');
  rewrite(tf);
  while not adoquery1.eof do begin
    ln:=adoquery1.FieldValues ['partno'];
    ln:=adoquery1.FieldValues ['partname'];
    ln:=adoquery1.FieldValues ['po'];
    writeln(tf,ln);
    adoquery1.next
  end;
  closefile(tf);
  showmessage('OK');
end;procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
list:TStringList;
begin
list:=TStringList.Create;
adoquery1.First;
for i:=0 to adoquery1.RecordCount-1 do
begin
list.Append(adoquery1.Fields[0].asstring);
list.Append(adoquery1.Fields[1].asstring);
list.Append(adoquery1.Fields[2].asstring);
list.Append(adoquery1.Fields[3].asstring);
adoquery1.Next;
end;
list.SaveToFile('c:\aa.txt');
showmessage('OK');
end;

解决方案 »

  1.   

    很整齐的一列,首先你要拼好字符串啊
      ln:=adoquery1.FieldValues ['partno'];
      ln:=adoquery1.FieldValues ['partname'];
      ln:=adoquery1.FieldValues ['po'];
    这三句,最后结果就是ln:=adoquery1.FieldValues ['po'];你应该写
    ln:=ln + adoquery1.FieldValues ['po'];
    而且要对其,你还要注意各个字段内容的长度对齐,那样写到txt才好看点
      

  2.   

    那你就导出csv文件算了,为啥要用txt
      

  3.   

    按照一樓的思路,我用一種笨辦法:
    ln:=adoquery1.FieldValues ['partno']+'  '+ln:=adoquery1.FieldValues ['partname']+'  '+...
    我用ln:=copy((adoquery1.FieldValues ['partno']+'  '),1,10)+...不起作用