QuickRep1上添加Detail,Detail 上添加一个QRDBText,且连接数据库完毕,我只想显示一条.我的意思是欲览下一条时,在添加个按钮..看里面

  • 主题发起人 主题发起人 SevenOrient
  • 开始时间 开始时间
S

SevenOrient

Unregistered / Unconfirmed
GUEST, unregistred user!
QuickRep1上添加Detail,Detail 上添加一个QRDBText,且连接数据库完毕,我只想显示一条.我的意思是欲览下一条时,在添加个按钮..看里面吧:(100分)<br />QuickRep1上添加Detail,Detail 上添加一个QRDBText,且连接数据库完毕,
DataSet属性为adoDataSet;
QRDBText和adoDataset连接好.
QRDBText的field属性为name;
代码:adoDataSet1.commdtext:=str;
adodataSet1.active:=true;
adodataset1.first
quickrep1.preview
为什么把所有的记录都显示出来了?
我只想显示一条.我的意思是欲览下一条时,在添加个按钮,在里面写:
adoDataSet1.next;
quickrep1.preview;
就这样一条一条打印出来
为什么刚first后就把所有的记录都显示出来了?
 
在QuickReport的onNeedData里面添加时间,去除QuickReport的DataSet,手工给个QR控件赋值。
没有结束的时候使用MoreData=True,结束的时候使用MoreData=True,这样你就能够控制打印了。
 
yzhshi老大,你说明白点好不?
 
这样,我整理一段代码,给你贴出来。稍等。。。。
 
嘿,太好了……,谢谢,yzhshi 人真不错
 
这段代码,仓促写的,希望你能够理解OnNeedData事件和原理
{QuickReport的DataSet不能设置Query!}
{-------------------------------------------------------------------------------}
procedure TForm1.QuickReport1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Query1.First;{必须有这句话!否则只能预览,不能打印!因为打印的时候Query已经到Eof了}
end;

{-------------------------------------------------------------------------------}
{供给打印数据}
procedure TForm1.QuickReport1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
{这里对Detail里面的控件赋值,注意,不能使用DBText什么的}
QRLabel1.Caption:=Query1.FieldByName('Col1').AsString;
...
Query1.Next;
if Query1.Eof then
MoreData := False
else
MoreData := True;
end;
 
我点“下一条”代码:
form2.adoDataSet1.next;
form2.QuickRep1.DataSet:=form2.AdoDataSet1;
form2.QRLabel1.caption:=Form2.AdoDataSet1.FieldbyName('name').asString;
form2.QuickRep.Preview;
procedure TForm2.QuickRep1Preview(Sender: TObject);
begin
form3.QRPreview1.QRPrinter :=self.QuickRep1.Printer ;
form3.show;
end;
procedure TForm2.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
self.ADODataSet1.Next;
if adodataset1.Eof then
MoreData:=false
else
moreData:=true;
end;
procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
AdoDataSet1.First;
end;

form3的QRPreview总是显示最后一条记录。为什么?
 
将 QuickRep.DataSet 置为 nil 即可。
 
不行呀!
 
//-----Unit1-----------
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.ADODataSet1.CommandText :='select * from Bjiao_jingY';
form2.ADODataSet1.Active :=true;
form2.ADODataSet1.First;
//form2.QuickRep1.DataSet :=nil;
form2.QRLabel1.caption:=form2.ADODataSet1.fieldbyname('业户名称').AsString ;
form2.QuickRep1.Preview ;
end;
//-------unit2--------
procedure TForm2.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
self.ADODataSet1.Next;
if adodataset1.Eof then
MoreData:=false
else
moreData:=true;
end;

procedure TForm2.QuickRep1Preview(Sender: TObject);
begin
form3.QRPreview1.QRPrinter :=self.QuickRep1.Printer ;
form3.show;
end;

procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
AdoDataSet1.First;
end;
//-----unit3----
procedure TForm3.Button1Click(Sender: TObject);
begin
//form2.ADODataSet1.Next;
//form2.QuickRep1.DataSet :=nil;
form2.QRLabel1.Caption :=form2.ADODataSet1.fieldbyname('业户名称').AsString ;
form2.QuickRep1.Preview ;
end;
//-----dfm文件--
Form1上有一个button1
form2上有QuickREp和AdoDataSet1,设置好了AdoDataSet1的ConnctionString
form3上有QRPreview1 和一个button1
还是不行!还是不行!还是不行!还是不行!还是不行!
 
将 QuickRep.DataSet 置为 nil 后,其他的做法跟你写的一样。
怎么不行?是不是 Preview 窗口没关闭?有什么提示吗?
 
在“下一条”时,要关闭form2吗?没有什么提示
 
好了,好了,终于试出来了。我真是太愚了,谢谢,各位帮忙了!!!:看下面代码:
//-----Unit1-----------
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.ADODataSet1.CommandText :='select * from Bjiao_jingY';
form2.ADODataSet1.Active :=true;
form2.ADODataSet1.First;
//form2.QuickRep1.DataSet :=nil;
form2.QRLabel1.caption:=form2.ADODataSet1.fieldbyname('业户名称').AsString ;
form2.QuickRep1.Preview ;
end;

//---------------Unit2---------
procedure TForm2.QuickRep1Preview(Sender: TObject);
begin
form3.QRPreview1.QRPrinter :=self.QuickRep1.Printer ;
form3.show;
end;
//----Unit3-----------
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.ADODataSet1.Next;
//form2.QuickRep1.DataSet :=nil;

form2.QRLabel1.Caption :=form2.ADODataSet1.fieldbyname('业户名称').AsString ;
form2.QuickRep1.Preview ;
end;
 
多人接受答案了。
 
后退
顶部