用Dephi开发三层结构程序,碰到个麻烦的问题,描述如下
  在应用服务层用ADO,加入TADOQuery及TDataSetProvider,客户端用TClientDataSet,可以实现增删改查,但是如果同时有多个Form要做增删改查,而所有的TClientDataSet指向同一个TDataSetProvider时,会有问题。举例来讲,在Form1新增后输了一半的数据,然后跑到Form2中增加了一笔数据,Form2的数据增加没问题,但回到Form1输入完整后再保存时,会保存不了,因为两个Form的DataSet指向同一个TDataSetProvider,当然,如果指向不同的TDataSetProvider是没有问题的,但这样开发出来的系统很笨,增加一个Form就要改App,有没有什么思路可解决此问题,欢迎高手们指点及讨论。

解决方案 »

  1.   

    事物,“有状态”,'无状态',数据库会维护当前的状态,你form2更新后,会出现定位问题的
      

  2.   

    强烈推荐你体验一下CBX框架,天然无状态中间对象,并且Pooling:
    CBX是一个完备的RIA应用开发框架,它充分的具备了这三大要素,包含:浏览器ao运行容器插件;宿主在IIS的应用服务器兼部署服务器;以Delphi 7为基础扩展而来的强大开发环境。 
    CBX的价值在于: 
    能够将Delphi7开发桌面应用的强大能力搬上了浏览器,远远超越基于Html乃至Ajax技术的Web开发技术的能力范畴,它意味着:几乎所有的VCL控件都能直接用使用在Web客户端中;几乎所有的Windows API都可以在客户端调用;客户端代码执行效率达到了C++的级别; 能使用客户端电脑的所有硬件资源。 
    具备一个简约而高效强大的服务器容器环境,能够用Delphi Midas的开发模式开发高效率的、能够穿透防火墙、在互联网上运行的应用服务器,天然集成无状态中间层业务对象的机制,系统层次简捷健壮,充分体现了三层构架的高性能,将三层构架系统的特性发挥到了极致; 
    CBX具备高度开放的访问接口,天然面向和各种Web系统交互和集成,诸如:JSP、ASP、ASP.Net、PHP乃至静态html网页,开发者不仅可以将CBX模块自如的嵌入到纯Web系统中,而且还能通过灵活的接口和CBX对象交互,让CBX充当各种纯Web构架方案的强有力补充,弥补纯html技术能力所不能及之处。 Demo地址(需要运行初始化程序): 
    http://117.34.65.21/CBX/AppSvr.dll/Splash.ao 
    讨论区: 
    http://bbs.codegear-cn.com/viewthread.php?tid=1205&extra=page%3D1 
    http://www.firebird.net.cn/forum_list.asp?forum_id=11 
    案例:http://www.firebird.net.cn/forum_list.asp?forum_id=12 
    资源下载(开发环境+CBX+教程):ftp://117.34.65.21 用户密码都是cbx 
    开发环境会和已有D7冲突,需要事先卸载已安装的D7。CLXBase7可以完全替代D7. CBX RIA 500人超级QQ群(请尽快加入,很快爆满) 49977536 
    ===================================== 
    CBX开发版完全免费,商业版可以免费赠予加入CBX群的人