用QReport制作报表,关闭预览的form后,对数据没有任何的变化,还是第一次的预览数据,在access里看到数据明明已经变化了。难道就没办法了吗?(200分

  • 主题发起人 主题发起人 爱人出差了
  • 开始时间 开始时间

爱人出差了

Unregistered / Unconfirmed
GUEST, unregistred user!
用QReport制作报表,关闭预览的form后,对数据没有任何的变化,还是第一次的预览数据,在access里看到数据明明已经变化了。难道就没办法了吗?(200分)<br />工作环境:win200+access+delphi6+QReport3.09
问题:我在用QReport制作报表,该报表对应access里的
一个table,第一次运行预览正常,关闭预览的form后,对
table作了若干修改,重新返回预览的form,但是预览的
数据没有任何的变化,还是第一次的预览数据。在access里
看到数据明明已经变化了。
我在预览前也把table.Close,再table.open;
还试过在第一次预览后把qreport所在的form释放掉,下次
预览再create,还是不行。难道就没办法了吗?
 
table.Close
table.open
Table1.Refresh
呵呵! 出现这样的怪现象并不认为是技术上的原因,只是对某些容易被忽视的细节给予提醒而已。
也许你配置的DATABASE的”感知“能力就是这么慢,谁知道呢?
 
第三句就可以了。第三句等于第一句加第二句。
 
呵呵,楼上两位没看我的问题吗?有这么简单的话就不用劳烦大家了
 
问题原因:Access数据库有一种类似“缓存”的机制,并不立刻将你的修改体现在数据库中。
一般这种情况表现在:当两个程序同时使用一个数据库的时候,一个程序进行了修改,另一个程序不能立刻看到修改。(即使是Queyr.Close、Query.Open等)
但是注意:一般在两个程序操作的时候发生。如果你的数据库修改也是在同一个程序中进行的话,就是说使用同一个数据库链接的话,这种现象一般不会发生。
看你的问题,问一下:你的修改程序和你的预览程序使用的是一个DataBase吗?
 
to:yzhshi:
我用的修改程序和你预览程序使用的是一个DataBase;
另外一点:在access2000里打开时候看到数据明明已经变化了
 
那我们可以首先定位问题的原因。
在你的程序里面放置一个Query、一个DBGrid、DataSet,然后在你更新以后使用这个Query读取看数据是否正确。
然后打印。如果数据正确,打印出问题,我们可以找QuickReport部分的问题,如果数据不正确,我们就可以断定是数据库驱动方面的问题。
 
你试试这样:
关闭浏览的Form的Close事件中,Table.Active=false;当再次打开浏览时,Form的Show事件中
Table.Active=true;应该行的,我就是这样做的
 
to:liuly, cAkk ,两个斑竹:
这个问题我自己解决了,能不能把分收回来?
 
不会吧,自己解决了也不说一下,真是的。
 
找taozhiyu吧,到它的黑板上面写两句话就可以了。
 
解决方法:
qroport的dataset属性的数据集要放在全局form里。就这么简单。
 
啊?难道你原来没有?
就是说你原来使用的DataSet是各自使用各自的???
好像被我言中了。。。
>>来自:yzhshi, 时间:2002-8-11 13:38:00, ID:1257322
>>看你的问题,问一下:你的修改程序和你的预览程序使用的是一个DataBase吗?
 
不会吧,问题自己解决了还想收分?我可没听说过
 
to yzhshi:
我用不同的query,但是连接的是同样的database。
好吧,就接受你的答案吧。
 
[:)]
有点抢分之嫌,但是我确实是说这个意思,使用同一个DataBase,就是使用了同一个Session,这样获得数据就应该是相同的。
使用两个DataBase,就是两个Session,因为缓存机智可能存在问题。这也是论坛讨论很多但是一直没有结果的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部