当前位置:主页>销售管理软件> 列表

Access导出文本的问题(50分)

记账软件版1楼: 大家好!
我写了一个从Access导出文本的代过程,但执行时总是最后有2至3行不完整,现将代码贴如下,请大家帮助解决!
procedure Tfrmtxtfile.Button5Click(Sender: TObject);
var
str:string;
filename:textfile;
i,j:integer;
Sp:string;
begin
SaveDialog1.Filter:=''ASCII Files(*.TXT)|*.txt'';
if SaveDialog1.Execute then
begin
str:=SaveDialog1.FileName;
assignfile(filename,str);
if fileexists(str) then DeleteFile(SaveDialog1.FileName);
Screen.Cursor:=crHourGlass;
rewrite(filename);
Sp:=''|'';
str:='''';
ADOQuery1.First;
for i:=0 to ADOQuery1.FieldCount -1 do
begin
AppendStr(str,ADOQuery1.fields[n].DisplayLabel);
AppendStr(str,Sp);
end;
writeln(filename,str);
for j:=0 to ADOQuery1.recordCount -1 do
begin
str:='''';
for i:=0 to ADOQuery1.FieldCount -1 do
begin


AppendStr(str,ADOQuery1.fields[n].AsString);
AppendStr(str,Sp);
end;
writeln(filename,str);
ADOQuery1.Next;
end;
Screen.Cursor:=crdefault;
Application.MessageBox(''保存完毕!'',''完成'',mb_ok);
end;
end;

end.

每次执行的结果:
1234502406100590266|张三|100000|
1234502406100590267|张三|100000|
1234502406100590268|张三|100000|
1234502406100590269|张三|100000|
1234502406100590270|张三|100000|
1234502406100590271|张三|100000|
1234502406100
最后不完整,无论条数多少都是这样!!

2楼: 注意内外循环的i值,换个变量名。 如免费的库存管理软件

3楼: 不是你说的问题!!难道就没有人能看出来吗!!,我是一个新手,先前常做UNIX平台下的C编程,现想学这个,没想到一学就问题!!请高手帮帮我呀!!

4楼: 我试着运行了一下,我机上上有新的问题:
[Warning] Unit1.pas(53): Symbol ''AppendStr'' is deprecated


保存的文件没有写入内容。我用的是delphi7.0。斑竹的问题可以单步执行找出原因。

5楼: 把for j:=0 to ADOQuery1.recordCount -1 do
改为 while not adoquery1.eof 试一下看看效果

6楼: 我用常量‘123’赋给str,也会出现部分内容截断的现象。是不是编译器的问题。

记账软件版7楼: 我用过 while not adoquery1.eof但是执行结果一样,至于AppendStr可以用
Str:=Str+ADOQuery1.fields[n].AsString+Sp;
我想可能是你说的常量赋给字符串的问题,我去改一下试试看!!

8楼: AppendStr(str,ADOQuery1.fields[n].AsString);
中的n在哪里给了申明?应该是i吧?

9楼: 用TstringList操作要好一点,

用TStringList的SaveToFile保存。


至于你的问题吗,用单步跟踪嘛

10楼: 你的代码对齐误导了我,最后要有文件关闭的语句吧。

11楼: 文件关闭的语句我也用过,但还是一样的,用了关闭语句后如果我点了保存,但如果我没有选择文件则会报i/o 3出错!!

12楼: 我想有个方法解决这个问题。当数据读完时,换行赋空格给str。多执行writeln(filename,str)一次。 如软件电话销售技巧

13楼: 解决了!!newsmile说得对,是close(file) 的问题!!

记账软件版14楼: 多人接受答案了。