如何直接将QUERY中的数据输出到一个文本文件中?(使用BDE和第六版DELPHI)(30分)

  • 主题发起人 主题发起人 bitwomen
  • 开始时间 开始时间
B

bitwomen

Unregistered / Unconfirmed
GUEST, unregistred user!
想要实现通过点击按钮就可以实现将查询到的数据输出到特定的文本文件中,查询段的源程
序为:
procedure TForm14.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from ADB_PART');
query1.SQL.Add('where DEGREE like :Q1');
query1.ParamByName('Q1').AsString:=edit1.Text+'%';
if query1.Prepared=false then query1.Prepare;
showmessage(query1.sql.text);
query1.Open;
end;
现在就是想把查询到的数据直接以文本的格式输出到指定的位置,数据表格式为:
ID NAME SYSTEM PRODUCER INI_WORKPLACE DEGREE
3 变速器 底盘 中国上海大众汽车有限公司 初次安装 1
130 部件 发动机 江苏南亚自动车有限公司 卸下维修 3
153 车架 车身 中国神龙汽车有限公司 初次安装 4
 
我想你如果在程序中将数据文件的属性改成文本文件的格式然后存储下来不知道可不可以

 
具体的实现步骤呢》?
 
自己做个存储过程存到文本里。
 
我输出数据时需要考虑输出的格式,因为在其它的程序中调用时会根据格式的不同成为不同的系统树状结构
 
用改变文件附属名函数:
ChangeFileExt()
里面的参数使用不用我详细说了吧,Delphi自动会提示你的
 
写代码吧,先用Dataset类控件读出表中数据,然后按如下代码写:
var
f : System.TextFile; // 文本文件类型
s:string;
i: Integer;
begin
AssignFile(f,'test.text');
Rewrite(f);
// 往文件中写入下面的内容
With Dataset do
While not Eof do
begin
s:='';
for i:=0 to fieldcount-1 do s:=s+Fields[0].asString+' '; //将各字段内容填入字符串
Writeln(f,s); //将字符串写入文件
next;
end;
end;


建议将以上办法写成DLL,传递参数为Tdataset。
 
to houxdd:
提示信息为fieldcount field[]未定义,不知道你程序中这两个变量的意义是什么
 
to houxdd:
编译过程中出现提示信息:I/O ERROR32不知道是什么意思
 

TO cb-hyxy:
可以说的具体一些吗?
最好可以有一段例子,我对存储过程不甚了解,谢谢!
 
to houxdd:
为什么输出的只有ID而没有其它的数据项?
 
procedure TForm1.Button1Click(Sender: TObject);
var
myFile:TextFile;
tmpStr,ID,Name,SYSTEM,PRODUCER,INI_WORKPLAC:String;
begin
tmpStr:=' ';
AssignFile(myFile,'test.txt');
rewrite(myFile);
//append(myFile); 不删除以前纪录,直接插到后面。
ADOQuery1.Active:=true;
while not ADOQuery1.Eof do
begin
ADOQuery1.Next;
id=ADOQuery1.FieldByName('id').AsString;
name=ADOQuery1.FieldByName('name').AsString;
SYSTEM=ADOQuery1.FieldByName('SYSTEM').AsString;
PRODUCER=ADOQuery1.FieldByName('PRODUCER').AsString;
INI_WORKPLAC=ADOQuery1.FieldByName('INI_WORKPLAC').AsString;
Writeln(myfile,id,tmpStr,name,tmpStr,system,tmpStr,producer,tmpStr,ini_workplac);
end;
CloseFile(myFile);
end;
稍微改一下就行了!
 
多人接受答案了。
 
后退
顶部