大家给看看一个报表的问题!(100分)

  • 主题发起人 主题发起人 dir1493
  • 开始时间 开始时间
D

dir1493

Unregistered / Unconfirmed
GUEST, unregistred user!
我用QReport控件做了一个报表,显示的是一个Query中的数据.
程序运行起来,第一次执行Query中的SQL语句正常,打印报表数据正常。
第二次运行Query中的sql语句正常,打印报表数据正常,后几次运行都很正常。
但我只要把这个执行Query的窗体关闭(注意是关闭窗体,不是结束程序的运行),
在重新打开这个窗体,再执行Query中的SQL语句正常,但是打印数据报表就很不正常了,
看不见应有的数据,就象这个报表没有连接数据源一样,连报表字段标题都没有了,
就剩一个报表标题了???
这是什么问题???大家有没有碰到过。
我用的调用报表的语句是

QReport.Preview;
 
啊!是不是分不够呀???可以再加
 
報表是自動創建的吧?
 
这个现象显然是Query1没有数据集返回,请检查
请用以下语句测一下
if not Query1.IsEmpty then
QReport.Preview else
showmessaqge('no');
 
QReport引用的DATASET对象指针可能已经无效了,
原先的实例已经随着你的FORM关闭(释放)而释放了,
如果你的FORM关闭动作是释放的话,
这是QR的需要注意的一个问题
 
我也遇到这个问题:
解决:
var B:boolean;
ReportForm.create()
begin
B:+True;
end;

ReportForm.close()
begin
B:=False;
end;

//预览时
if B then
ReportForm.Free;
ReportForm:=FReportForm.create();
QReport.Preview;
 
问题已经初步解决,但比较苯,
在欲览的时候给报表付dataset值,每次预揽的时候都付值。
比较苯。
有没有更简单的方法。
 
你现在的做法是正确地,这样数据库比较安全,窗体关闭,连接释放,是应该的,如果当然如果查询
始终不变,你可以在设计期给它赋初值;,每次都重新生成窗体
 
是,我现在的方法是可以实现!但整个报表中的数据控件我在调用时都要重新的给付
dataset值,如果有100个数据控件我就要重新付100次。太麻烦了。
 
用數據模塊,所有用的dataset都放在裡面,就不會出現這種情況
 
我也遇到相同的情况,解决的办法和你一样:每次预览前从新给每个QRDBText赋dataset值。
 
给每个QRDBText赋dataset值也太残忍了吧 动动脑筋吗
我不知道楼主给QREPORT的DATASET属性赋的什么值,以及你的FORM重新打开(创建)的时候实例对应
的变量名(创建方式)
假如QREPORT的DATASET是FORM1.QUERY1
而你第二次创建FORM时 实例没有赋给FORM1,就不行了
QR好久没有用了你试试一下
在FORM的ONCREAGE事件中写一行
FORM1:=SELF;
形式的代码,确保FORM1变量有效应该就不用太麻烦了,
程序员是要学着偷懒的, 不要没法儿进步了,呵呵 不行再想别的方法,静候佳音
(.PAS 和 .DFM 贴出来看看)

 
如果还不行 ,释放FORM时,同时释放你的QREPORT,
创建FORM后,再重新创建QREPORT(ONCREATE),
实在是没有任何理由再有问题了,
 
谢谢大家,问题已经解决了,分已经送出。
特别鸣谢 大嘴兄。ligen兄。
 
后退
顶部