我很痛苦。。。关于quickrep的使用。(50分)

  • 主题发起人 主题发起人 astart
  • 开始时间 开始时间
A

astart

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个form使用quickrep,由于基本上输出的内容差不多,所以我设计时候没有给两个form
重新设置quickrep。
form1上设置一个button来激活quickrep的form,使用的dataset是qury
form2也是一样的设置。
读取的都是相同格式的表。
_________________________________________________
在quickrep我设置两个Tqrband:columband,Qrband2
colmband的type是rbColumnHeader
Qrband2的type是rbDetail
在Qrband2已经设置了datafield
_________________________________________________
以下是formt1上的bottun2点击时间处理
procedure TinRcD.Button2Click(Sender: TObject);
var Scondition:String;
begin

if FormMain.db1.Connected=True then
begin

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
with ADOQuery1do
begin
Scondition:='';
SQL.Text:='select cpinb.num,cpxhdyb.cpxhmc,cplbxhb.xhmc,cpinb.pp,cpinb.dj,cpinb.sl,cpinb.jsr,cpinb.jsbm,cpinb.rq';
Sql.Text:=Sql.Text+' from cpinb,cpxhdyb,cplbxhb ';
Sql.Text:=Sql.Text+' where cpinb.lb=cpxhdyb.cpxh and cpinb.xh=cplbxhb.xh2 ';
Sql.Text:=Sql.Text+' and cpinb.rq>='''+DateToStr(DateTimePicker1.date)+'''';
Sql.Text:=Sql.Text+' and cpinb.rq<='''+DateToStr(DateTimePicker2.date)+'''';
if Edit2.Text<>'' then
Scondition:=Scondition+' and cpinb.lb='+Edit2.Text;
if Edit3.Text<>'' then
Scondition:=Scondition+' and cpinb.xh='+Edit3.Text;
if Edit1.Text<>'' then
Scondition:=Scondition+' and cpinb.pp='''+Edit1.Text+'''';
if ComboBox3.Text<> '' then
Scondition:= Scondition+ ' and cpinb.jsbm='''+ComboBox3.Text+'''';
Sql.Text:=Sql.Text+Scondition;
end;

// showmessage(ADOQuery1.SQL.Text);
Application.CreateForm(TFRreport, FRreport);
ADOQuery1.Open;
ADOQuery1.First;
FRreport.QRTile.Caption:='物品入库表';
FRreport.QRnum.Caption:='序号';
FRreport.QRlb.Caption:='类别';
FRreport.QRxh.Caption:='类型';
FRreport.QRpp.Caption:='品牌';
FRreport.QRdj.Caption:='单价';
FRreport.QRsl.Caption:='数量';
FRreport.QRbm.Caption:='部门';
FRreport.QRsj.Caption:='时间';
FRreport.num.DataSet:=ADOQuery1;
FRreport.lb.DataSet:=ADOQuery1;
FRreport.xh.DataSet:=ADOQuery1;
FRreport.pp.DataSet:=ADOQuery1;
FRreport.dj.DataSet:=ADOQuery1;
FRreport.dbsl.DataSet:=ADOQuery1;
FRreport.jsbm.DataSet:=ADOQuery1;
FRreport.jsr.DataSet:=ADOQuery1;
FRreport.rq.DataSet:=ADOQuery1;
FRreport.QuickRep1.Preview;
end;
end;
///判定连接数据是否成功。
form2在调用的表是cpoutb表的内容,但是字段都是一样的。
现在出现的问题是
form1点击button可以报表正常显示
form2点击button却不显示columband里面的内容,同时只显示出一条记录
(显示记录不完整,还有其它的记录没有出来,左下角的报表装载显示0%)
各位大哥们,怎么回事啊??
 
两个Form是否用了两个Query?如果是,问题出在FRreport.QuickRep1的Dataset属性。
当Form1调用FRreport时,该属性应赋值为Form1的Query;当Form2调用时应赋值为Form2的Query。
将该赋值语句加到FRreport.QuickRep1.Preview前试试。
 
我觉得很奇怪的是,在form1中可以显示的的
FRreport.QRnum.Caption:='序号';
FRreport.QRlb.Caption:='类别';
FRreport.QRxh.Caption:='类型';
FRreport.QRpp.Caption:='品牌';
FRreport.QRdj.Caption:='单价';
FRreport.QRsl.Caption:='数量';
FRreport.QRbm.Caption:='部门';
FRreport.QRsj.Caption:='时间'
在form2中却不能,headband1我设置为Tqrband。
这点是为什么?
另外,对不同的query,我在preview之前已经重新设置query值,所以应该没有问题,
而且也显示了一条记录。(后面还有的就没有显示出来)
艾,是什么原因呢?
 
现在出现的问题是我重新给form2的qury创建一个quickrep,但是,显示还是一样有问题。
我是按照form1的quickrep一样作的,怎么还是有问题呢?
我晕,,,!!!!
出现的问题是
1、还是只能显示一条记录
2、没有显示标题栏目
 
还需要设置dataset。
 
我已经设置了dataset,而且已经显示出来第一条记录,
我的quickrep设置如下:
columeband1 (type;rbcolumheader)
detailband1 ( type:rbdetail)
dataset已经设置,语句经过检验。
打印预览
出现问题是只显示第一条记录,没有显示columeband1上面的qrblabel等。。。
 
大家看看啊。
给个理由啊。
 
天啊,我终于知道是什么原因了,哈哈哈哈。。。。
我的两个form是使用同一个quickrep的来完成的报表的。
我开始只设置了detail中的qrbtext中的什么lb、xh的dataset属性,却忽略了
quickrep中也有dataset属性设置,它也必须设置,经过设置后程序运行正常。
虽然samcrm、renyi没有完全解决问题,但是还是感谢大家。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
532
import
I
后退
顶部