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

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

bitwomen

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(][:(][:(!][h1][/h1]想要实现通过点击按钮就可以实现将查询到的数据输出到特定的文本文件中,查询段的源程
序为:
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_WORKPLAC DEGREE
3 变速器 底盘 中国上海大众汽车有限公司 初次安装 1
130 部件 发动机 江苏南亚自动车有限公司 卸下维修 3
153 车架 车身 中国神龙汽车有限公司 初次安装 4
最好能够提供程序源码,谢谢
 
procedure TForm1.Button1Click(Sender: TObject);
var
myFile:TextFile;
begin
AssignFile(myFile,'test.txt');
rewrite(myFile);
//append(myFile); 不删除以前纪录,直接插到后面。
ADOQuery1.Active:=true;
while not ADOQuery1.Eof do
begin
ADOQuery1.Next;
Writeln(myfile,ADOQuery1.FieldByName('nic').AsString,' ',ADOQuery1.FieldByName('email').AsString);
end;
CloseFile(myFile);
end;
稍微改一下就行了!
 
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;
稍微改一下就行了!
 
vat aTs :TStrings;
begin
aTs :=TStringList.Create;
try
while not ADOQuery1.Eof do
begin
ADOQuery1.Next;
aTs.Add(ADOQuery1.FieldByName('abc').AsString+' '+ADOQuery1.FieldByName('def').AsString.....);
end;
aTs.SaveToFile(FileName);
finally
aTs.Free;
end;
end;
 
TO IAPOLLO:
现在的问题是如何使得输出的结果格式比较统一一些呢?现在的输出结果为:
12 制动管接头 车身 中国上海大众汽车有限公司 卸下维修
39 踏板回位弹簧 底盘 中国上海大众汽车有限公司 初次安装
14 曲轴 底盘 中国一汽—大众汽车有限公司 初次安装
60 前大灯 电器设备 中国上海大众汽车有限公司 初次安装
26 气缸盖 发动机 上汽集团奇瑞汽车有限公司 初次安装
40 轮胎螺栓 底盘 中国神龙汽车有限公司 初次安装
65 轮胎 底盘 江苏南亚自动车有限公司 初次安装
16 连杆 底盘 中国广州本田汽车有限公司 初次安装
17 离合器摩擦片 底盘 中国广州本田汽车有限公司 初次安装
25 空压机缸筒 车身 一汽海南汽车有限公司 初次安装
18 进气阀球头 发动机 中国江苏悦达汽车制造厂 初次安装
41 后视镜 车身 中国上海大众汽车有限公司 初次安装
37 缸垫 发动机 风神汽车有限公司 初次安装
35 放水阀 发动机 中国重庆长安铃木汽车有限公司 初次安装
9 方向盘 车身 中国一汽—大众汽车有限公司 初次安装
4 传动轴 底盘 中国神龙汽车有限公司 卸下维修
153 车架 车身 中国神龙汽车有限公司 初次安装
153 车架 车身 中国神龙汽车有限公司 初次安装
 
将此文件导入Excel,排版完再打印出来不就整齐了?
 
添加一个函数:
function TForm1.getStr(str:String):String;
var
i,j,strL:Integer;
tmp:String;
begin
tmp:=' ';
i:=50;//设置每个字段的长度。
strL:=Length(str);
for j := 0 to 50-strL do
begin
tmp:=tmp+' ';
end;
Result:=str+tmp;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
myFile:TextFile;
ID,Name,SYSTEM,PRODUCER,INI_WORKPLAC:String;
begin
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;
id:=getStr(id);
name:=getStr(name);
system:=getStr(system);
producer:=getStr(producer);
ini_workplac:=getStr(ini_workplac);
Writeln(myfile,id,tmpStr,name,system,producer,ini_workplac);
end;
CloseFile(myFile);
end;
呵呵!上面那个帖子范了一个很低级的错误。
 
谢谢IAPOLLO,我的问题终于解决了。发分了!
 
后退
顶部