一个奇怪的问题,高手请进(高分)(三层)(200分)

  • 主题发起人 主题发起人 zjbfvfv
  • 开始时间 开始时间
Z

zjbfvfv

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个准三层,用的Server:ADodateset,Adoconnection,数据库:Access 2000,Client
Sokect,ClientDataset,
现出现这现的问题(对主从表进行更新):
主表,与从表都用一个单独的Provide,一个常用的Provider,用来进行一些其它的操作(CheckCDS)
当在更新从表时,我进行更新主表,和其它相关表,出现"不能对关闭的表进行操作错误.
示例如下:
在从表的BeforeApply;
1.UpdateMasterTable,(直接用Master Provider)
2.UpdateOtherTabel(用CheckCDS);
3.UpdateOtherTabel(用CheckCDS);(进行多次使用用CheckCDS进行不同的操作)
4.UpdateOtherTabel(用CheckCDS);
出现"不能对关闭的表进行操作.
但我对UpdateOtherTabel的操作:我都是:
Close;
CommandText:=....(在Server 的Provider,的AllowCommandText:=true)
Open;
望高手指点.
还有一个问题对主从表的关系设定:有下面三种情况,不知有什么不同
1.在Client设定
2.在Server设置
3.在Client,Server都设置.
哪种情况比较好一些呢,更加合理一点.

 
可以看看李维的书,那里有你需要的。
 
我建议用存储过程进行更新,这样有助于表示层与数据逻辑的分离。
 
我对李维的说没有很好的研究,主要是没有书,大哥,能不能提一个明确的答案,我现在知道
一些答案,这主要是由于在Server端的Provider.DataSet Close 的缘故,今天晚上试试看,明天
再看.
 
怎么没有回答这个问题,敬请版主出马
 
zjbfvfv wrote that:
//我在做一个准三层,用的Server:ADodateset,Adoconnection,数据库:Access 2000,Client
//Sokect,ClientDataset,
//现出现这现的问题(对主从表进行更新):
//主表,与从表都用一个单独的Provide,一个常用的Provider,用来进行一些其它的操作(CheckCDS)
// 当在更新从表时,我进行更新主表,和其它相关表,出现"不能对关闭的表进行操作错误.
//示例如下:
// 在从表的BeforeApply;
// 1.UpdateMasterTable,(直接用Master Provider)
// 2.UpdateOtherTabel(用CheckCDS);
// 3.UpdateOtherTabel(用CheckCDS);(进行多次使用用CheckCDS进行不同的操作)
// 4.UpdateOtherTabel(用CheckCDS);
//出现"不能对关闭的表进行操作.
//但我对UpdateOtherTabel的操作:我都是:
//Close;
//CommandText:=....(在Server 的Provider,的AllowCommandText:=true)
//Open;
//望高手指点.
//还有一个问题对主从表的关系设定:有下面三种情况,不知有什么不同
//1.在Client设定
//2.在Server设置
//3.在Client,Server都设置.
//哪种情况比较好一些呢,更加合理一点.
多层应用系统中要做到将逻辑层与表现层完全隔离并不是一件挺容易的事,看你上面的
代码,肯定还没有做到这一步。针对具体的情况:
建议不在服务器端进行的表的Master/Detail设置,因为这样做的话,每一次Provider的
传输是一个笛卡尔乘积,网络数据流量特别大。在客户端进行设置是一个在逻辑上说比较合
理的方式,这会给客户端带来更为灵活的处理。
而对于数据的分别更新,应该放在Server端,在DataSetProvider中,有一个事件
OnUpdateData(Sender: TObject;DataSet: TClientDataSet);其中DataSet中存放的便 是
一切需要更新的数据,在这个地方,老兄,你便可以为所欲为了。
 
多人接受答案了。
 
后退
顶部