现在的位置: 首页 > 综合 > 正文

Intraweb中CDS数据库的刷新问题

2013年03月24日 ⁄ 综合 ⁄ 共 803字 ⁄ 字号 评论关闭

本人初学intraweb,当然也是初学Borland Delphi。

基本条件是:Borland Delphi 7 Enterprise + Intraweb 7.0.20。

在实践中,我发现:Borland提供了一种文件型的数据库cds,首先按照Demos的例子,发现:使用DBNavigater,对数据库进行操作后,无论是使用+(增加)、-(删除)、Edit后,使用post提交后,界面上的DBGrid显示记录已经被操作了,但是重新开一个Web界面看的时候,还是原来的数据,并没有改变实际的数据库内容。而且,在关闭了后台的Application Server之后,重新打开Server,再用Web查看的时候,数据也没有改变。

经过了仔细的分析,判断是数据在内存中,并没有被刷新到数据库中,经过查找资料,解决了该问题。

Data access和DBexpress中的Client datasets和simpledataset能操作文件型数据cds,在实际的操作过程中,利用Navgater操作的编辑、删除、增加的数据都反映到了内存中,如果不用内存直接刷新到dataset中,可以使用dataset.logchanges=false直接更新dataset中的数据,但是还是没有将数据保存到cds数据库中,此时可以使用dataset.savetofile存储到指定的文件中。如果在打开的dataset中指定了特定的filename,也可以使用dataset.close来保存到文件中。

关键是在实现intraweb application过程中,dataset.close的执行一般是在窗体被destroy之后,但是web browser中却没有提供类似的功能,可以采用dataset的afterpose和afterdelete的events来响应,直接将变更的数据存储到文件数据库中,即首先close再重新loadfromfile就OK了。

抱歉!评论已关闭.