關於多層結構的幾個問題,請各位高手多多指教,我出200分,這是我畢業設計中的一個大難題!(200分)

  • 主题发起人 主题发起人 JerryDongmei
  • 开始时间 开始时间
ClientDataSet.ApplyUpdates(0)
 
你在这里说得不太清楚,如果对于单表的话,客户端使用ClientDataSet.ApplyUpdate(0)
几可以将更新数据发到服务器端有服务器根据相关的条件如是使用数据集更新,还是使用
的是动态SQL语句更新等。复杂的是对于多表,或者经过关联查询出来的数据更新时,由于
在客户端显示的数据属于几个不同的表,所以不能直接使用APPLYUPDATE(0)来做,一个
方便的例子是,对于N个表,分别设立N个UpdaetSQL和DataSetProvider来执行,在收到客
户端传来的数据后,通过调用SetParams函数来拆分Delta中的在各个数据回到各自对应的
UpdateSQL中,再调用UpdateSQL的Apply方法真正将数据更新回各表中。
 
你是否使用了ADOConnection的begin
trans来进行事务处理并使用ADOQuery来进行数据的插入
最后使用了AdoConnection的CommitTrans进行提交,如果是这种情况请说明,然后我再回答
因为我现在不太明白你是怎样做的,所以不好贸然作答
 
用ApplyUpdates提交数据库
关于多表更新的问题,李维的书《分布式应用系统篇》上讲的N清楚。
 
李维的《分布式应用系统篇》如有电子书,请别忘了给我一份,谢谢!
lzmyh@ynmail.com
 
还没结束吗,人都应该毕业了吧。
关于三层,李维的书讲的非常清楚和详尽,请自行参考。
 
多表也能用ApplyUpdates(-1). 花招在Server端. Server端可以用UpdateSQL.
不过前提是你用BDE, 而且需要一点小技巧来让UpdateSQL自动填上参数.
 
说的太笼统,把你的源码发一份给我,我帮你解决,你写的比较简单,应该回解决
 
人早就毕业了
 
hehe,是,应该早毕业了。
 
再不毕业的话,肯定没学位了!
 
有没有将Datasetprovider.[Options]中的poAllowCommandText设为True
 
不知你是否有李维写的,可能叫<<DELPHI下开发多层应用系统>>.
你如果是用dbnavigator上的存盘button来存是不行的,
另外用一button在onbuttonclick事件中可以这样写
if clientdatset1.applyupdates(-1)>0 then
application.messagebox('保存数据出错','错误',mb_ok+16);
 
zengr说的不错
但用updateSQL太繁琐,效率也有问题,好的办法直接使用TDataSetProvider生成的
UPDATESQL, 对于多表更新只能修改TDataSetProvider控件
 
apartment:
1.我是这样做的,在服务端建立MTSDataModal,用TADOConnection连接数据库,
通过接口方法返回结果集,其返回值是_RecordSet型的。客户端用CoMyClass的
CreateRemote(ServerName) 取得接口,把返回的结果集赋值到ADODataSet的
RecordSet属性,然后ADODataSet连接到DataSetProvider,DataSetProvider
连接到ClientDataSet,ClientDataSet然后用DBGrid显示,按我上面提到的
方法是能得到结果集的,看上去传送的应该是结果集本身,但我在接口方法中
把Connection关闭掉后,运行会出现堆栈错误,从这现象看,传送的又象是指针。
这把我弄得很迷糊,请指点。
2.我个人觉得,midas虽然是可以开发多层应用,不过它还是没有脱离传统得结构化
编程,想在midas中应用OOP好象比较困难。另外,能否自己构造Data属性。您知道
Data属性得结构吗?
 
多人接受答案了。
 
后退
顶部