以下是数据导出到TXT文件的代码,要导出的数据有200个文件左右,1万多条记录,导出中途出错,大概能导出60多个文件。
if CheckBox2.Checked then
begin
//
fcProgressBar2.Min:=0;
fcProgressBar2.Max:= DataM.ADOQuery1.RecordCount;
fcProgressBar2.Step:=1; { if not DirectoryExists(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString) then
try
CreateDir(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString);
except
showmessage('创建目录<' + FilePath + '>失败!');
Exit;
end; }
//
with DataM.ADOQuery1 do
begin
first;
while not eof do
begin
if DWTFBM=trim(fieldbyname('单位编码).asstring) then
begin
for i:=0 to DataM.ADOQuery1.Fields.Count-1 do
begin
if (DataM.ADOQuery1.Fields[i].DataType=ftBCD) OR (I=18) OR (I=19) OR (I=20) OR (I=21) OR (I=22) then
begin
//try
ln:=DataM.ADOQuery1.Fields[i].AsCurrency;
write(tf,Format('%.2f',[LN]));
end
else
begin
lns:=DataM.ADOQuery1.Fields[i].AsString;
write(tf,lns);
end;
if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else //加入TAB
Write(tf,'')
end;
Write(tf,#13#10); //加入回车换行 end //end if DWTFBM= ......
else
begin
if Fields[0].AsString<>'' then
filename:='salary'+DMUnit.DataM.ADOQuery1.Fields[0].AsString+trim(ComboBox1.Text)+trim(ComboBox2.Text)
else
filename:='salary'+inttostr(isnullsign)+trim(ComboBox1.Text)+trim(ComboBox2.Text);
FilePath:=edit2.Text+'\'+filename+'.txt';
assignfile(tf,FilePath);
rewrite(tf); for i:=0 to DBGridEh1.FieldCount -1 do
begin
write(tf,DBGridEh1.Columns.Items[i].FieldName);
if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else //加入TAB
Write(tf,'')
end;
Write(tf,#13#10); //加入回车换行 end; //end if DWTFBM= ......else DWTFBM:=trim(fieldbyname('单位编码).asstring);
inc(isnullsign);
fcProgressBar2.Progress:=DataM.ADOQuery1.RecNo;
next;
end;//end while end; //end with
end; //end if
closefile(tf);
//
showmessage('操作完成!')
if CheckBox2.Checked then
begin
//
fcProgressBar2.Min:=0;
fcProgressBar2.Max:= DataM.ADOQuery1.RecordCount;
fcProgressBar2.Step:=1; { if not DirectoryExists(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString) then
try
CreateDir(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString);
except
showmessage('创建目录<' + FilePath + '>失败!');
Exit;
end; }
//
with DataM.ADOQuery1 do
begin
first;
while not eof do
begin
if DWTFBM=trim(fieldbyname('单位编码).asstring) then
begin
for i:=0 to DataM.ADOQuery1.Fields.Count-1 do
begin
if (DataM.ADOQuery1.Fields[i].DataType=ftBCD) OR (I=18) OR (I=19) OR (I=20) OR (I=21) OR (I=22) then
begin
//try
ln:=DataM.ADOQuery1.Fields[i].AsCurrency;
write(tf,Format('%.2f',[LN]));
end
else
begin
lns:=DataM.ADOQuery1.Fields[i].AsString;
write(tf,lns);
end;
if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else //加入TAB
Write(tf,'')
end;
Write(tf,#13#10); //加入回车换行 end //end if DWTFBM= ......
else
begin
if Fields[0].AsString<>'' then
filename:='salary'+DMUnit.DataM.ADOQuery1.Fields[0].AsString+trim(ComboBox1.Text)+trim(ComboBox2.Text)
else
filename:='salary'+inttostr(isnullsign)+trim(ComboBox1.Text)+trim(ComboBox2.Text);
FilePath:=edit2.Text+'\'+filename+'.txt';
assignfile(tf,FilePath);
rewrite(tf); for i:=0 to DBGridEh1.FieldCount -1 do
begin
write(tf,DBGridEh1.Columns.Items[i].FieldName);
if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else //加入TAB
Write(tf,'')
end;
Write(tf,#13#10); //加入回车换行 end; //end if DWTFBM= ......else DWTFBM:=trim(fieldbyname('单位编码).asstring);
inc(isnullsign);
fcProgressBar2.Progress:=DataM.ADOQuery1.RecNo;
next;
end;//end while end; //end with
end; //end if
closefile(tf);
//
showmessage('操作完成!')
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货