在哪个事件,关键要看你的应用了,你想让它在什么时候打开,可以通过设置TCinetdataset的属性打开。

解决方案 »

  1.   

    你不用关心中间层的表何时打开,将它们Active全部设为False就可以了。当ClientDataset的Active被打开时,TProvider会自动打开的。所以只要关心一下cds.Open就可以了。
      

  2.   

    谢谢各位,
    ClientDataset.Open 可以自动打开中间层的表.
    那么如果 ClientDataset.Close是否也意味中间层的表的关闭
      

  3.   

    实际上中间层的表在传完数据后就自动关闭了。一切都是TProvider在做。
      

  4.   

    chechy,你好,我照你的方法试了,三层中的M/D模式,真的很方便.
    如果用三层,真的要比C/S 效率高吗?如果在客户端并不多的情况呢?
      

  5.   

    效率我不太清楚,好像李维的书有专门的描述。
    不过,我记得Dan Miser(TeamB)专门写了一篇文章,建议在两层的程序中使用三层结构的模式。这就证明了三层结构在处理问题上面的优越性。
    编程有时不能一昧的讲究效率,不要自己给自己找茬也很重要。
      

  6.   

    在C/S模式下,我继承了 TIBQuery 类,也实现了 M/D 模式 CachedUpdates
    请各位再谈谈三层和C/S 的区别,和各他们的优缺点,
    因为我认为系统不大的话,做三层可能繁了点.
    谢谢各位啦,我位加分的.
      

  7.   

    chechy兄,你真好,看来你对三层结构编程很在行,
    你为小弟介绍几本好书吗.李维的我看过了,好像浅了点.
    谢谢.
      

  8.   

    好像Delphi方面除了李维的书外,没有什么非常有名的著作。听说国内有个叫徐新华的人写过,不过我一个以前的同事说他的MIDAS写的很臭。
    我只研究过Delphi 5 Developer's Guild中的MIDAS那一章,是Dan Miser写的,写的很不错。不过内容少了点。Dan Miser说没钱,所以不肯自己专门写一本MIDAS的书。不过他的网站值得一看。
      

  9.   

    在运行时打开,在数据模块的CREATE事件中打开或者在主FORM的CREATE事件中.