怎样保存和打印用SQL查寻显示在DBGrid的数据。详细一点(100分)(100分)

  • 主题发起人 主题发起人 wuxin
  • 开始时间 开始时间
W

wuxin

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样保存和打印用SQL查寻显示在DBGrid的数据。详细一点(100分)
 
用adoquery查寻,然后做一个报表--QuickRep, dataset设为adoquery,
在quickrep的bands.hasdetail:=true,并在detail里使用qrdbtext,dataset:=adoquery;
即可,在报表预览中就可以保存。
 
实际上,dbgrid中的数据和报表中的数据都是来自adoquery,一份送去显示一份送去打印。
 
您可以使用ReportBuilder直接打印,(ReportBuilder有例子可以查看)
 
  
用SQL查询,应该是用的数据集控件吧,比如TQuery。
1、保存(用循环的方法写到文本文件中)
procedure SaveData(qrData:TQuery;strFile:String);
  var
f:TextFile;
cc:Integer;
//Column Counter
begin
Assign(f,strFile);
Rewrite(f);
with qrDatado
begin
DisableControls;
First;
while not Eofdo
begin
For cc:=0 to FieldCount-1do
Write(f,Fields.AsString);
Next;
end;
First;
EnableControls;
end;

Close(f);
end;

2、打印(使用QuickReport直接打印数据集的数据)
  菜单File->New,选择Report,即可新建一个QuickReport报表,假设名叫QuickReport1;
  菜单Project -> Options -> Forms -> Auto-create Forms,取消QuickReport1的自动创建;
  将QuickReport1的DataSet属性设为要打印的数据集,例如Form1.Query1;
  修改QuickReport1的Bands属性:将HasColumnHeader和HasDetail设置为True;
  在ColumnHeader中放几个QRText(有几个字段就放几个),将其Caption属性分别设成数据集的字段名;
  在Detail中放等量的QRDBText,其DataSet属性设置为你要打印的数据集,DataField分别指向各个字段;
  在QuickReport1的AfterPreview事件中写 Self.Free;
  在DBGrid所在的窗体中添加一个“打印”按钮,在其OnClick中写
with QuickReport1.Create(self)do
PreviewModal;
  可以运行试一试了。
    
 
输出到EXCEL好了
 
多人接受答案了。
 
后退
顶部