如何将ADOQuery中的数据写到TXT文本中(100)(100分)

  • 主题发起人 主题发起人 polaris_cn
  • 开始时间 开始时间
P

polaris_cn

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将ADOQuery中查询到的数据写到一个文本文件中,最好是有例子,先给100分
 
ADOQuery.SaveToFile('c:/temp/file1.txt');
 
txdelphi,我只要保留值,不保留其他数据.
 
procedure TfmMain.A2Click(Sender: TObject);
var
strMid: TStringList;
strGz:String;
i:integer;
begin
i:=0;
if dlgSave.Execute then
begin
strMid:=TstringList.Create;
ADOQuery.Open;
ADOQuery.Active:=false;
ADOQuery.SQL.Text:='select * from gz_tmp where gz<>0';
//prepare;
ADOQuery.Active:=true;
while not ADOQuery.eof do
begin
i:=i+1;
strgz:=format('%8.2f',[ADOQuery.fieldByName('gz').AsFloat]);
strMid.Add(ADOQuery.fieldByName('zh').AsString+ADOQuery.fieldByName('xm').AsString+' '+strgz);
ADOQuery.Next;
end;
strMid.SaveToFile(dlgSave.filename);
showmessage('ok,导出'+intToStr(i) +'条记录');
end;
end;
 
ty_unix,我想直接写到txt文件中.而且要断行
 
什么意思呀?到底想输出什么呢?
 
为什么我用Delphi 6 编译的程序在本机上可以用而在其他机子上却报错!
 
报什么错?是不是缺少运行包?编译时不要选Build with runtime packages 就行了。
 
有些是你不要的,去掉再编译吧
function ExportTXT(Query : TADOQuery; FileName : string; DateStr:string) : Boolean;
var
SaveDialog : TSaveDialog;
STRINGLIST : TStringList;
i,j,k, Row : integer;
STR,LINESTR:STRING;
begin
SaveDialog := TSaveDialog.Create(Application.MainForm);
STRINGLIST := TSTRINGLIST.Create();


SaveDialog.DefaultExt := '*.TXT';
SaveDialog.Filter := 'TXTFILE|*.TXT';
if FileName = '' then
SaveDialog.FileName := 'Export.txt'
else
SaveDialog.FileName := FileName;
//SaveDialog.FileName := 'Export.TXT';
SaveDialog.Options := [ofOverwritePrompt,ofHideReadOnly,ofEnableSizing];

if SaveDialog.Execute then
begin
FileName := SaveDialog.FileName;
Screen.Cursor := crHourGlass;

try
LINESTR:=' 日期:'+DateStr;
STRINGLIST.Add(LINESTR);
LINESTR:='';
if not Query.Active then
begin
Query.Open;
end;
Query.first;
for i := 0 to Query.Fields.Count - 1 do
BEGIN
if Query.Fields.Visible then
begin
STR:=Query.Fields.DisplayLabel;

k:=query.Fields.DataSize+2 ;
if k<32 then k:=32;
// for j:=query.Fields.datasize to query.Fields.DataSize+2 do
for j:=Length(STR) to k do
begin
str:=str+' ';
end;
LINEStr:=LINESTR+STR+chr(9);
end;
end;
STRINGLIST.Add(LINESTR);

while not Query.Eof do
begin
LINESTR:='';
for i := 0 to Query.Fields.Count - 1 do
begin
if Query.Fields.Visible then
begin
STR:=Query.Fields.AsString;

if (query.Fields.IsNull) or ( Trim(query.Fields.AsString)='') then str:='';
trim(str);
if (Length(trim(str)) >= 10) then
if IsNumber(Str) then str:=chr(1)+STR; //Insert('''',Str,1);
//防止身份证记为科学记数法

if Query.Fields.DataType = ftDateTime then
begin
if Query.Fields.AsDateTime = 0 then
str := ''
else
begin
str := FormatDateTime((Query.Fields as TDateTimeField).displayformat, Query.Fields.AsDateTime);
end;
end;


k:=query.Fields.DataSize+2 ;
if k<32 then k:=32;
//for j:=query.Fields.datasize to query.Fields.datasize+2 do
for j:=Length(STR) to k do
begin
str:=str+' ';
end;
LINEStr:=LINESTR+STR+chr(9);
end // if Query.Fields.Visible then
end; //end for i := 0 to Query.Fields.Count - 1 do
STRINGLIST.Add(LINESTR);
Query.Next;
end;
STRINGLIST.SaveToFile(SaveDialog.FileName);

Screen.Cursor := crDefault;
Application.MessageBox('Export successfully!', 'Information', 0);
finally
SaveDialog.Free;
STRINGLIST.Free;
end;
end;
end;
 
后退
顶部