我的三层结构中客户端的ClientDataSet的数据怎么不能更新到后台数据库中,用ApplyUpdates(-1)?(100分)

  • 主题发起人 主题发起人 rodegun
  • 开始时间 开始时间
R

rodegun

Unregistered / Unconfirmed
GUEST, unregistred user!
我在作一套三层结构,数据库用oracle,服务层用ADO + MIDAS,用socket连接;
而我在客户端增加一条记录后,调用applyUpdates(-1)进行更新,程序没有出错,
但总是不能更新到后台数据库中,这是怎么回事呢?
 
您跟踪调试一下您的程序,是否执行了SetAbort?
 
provide.allowcommand :=true;
resolvetodataset :=false;
 
有什么出错的提示?
 
三层里更新数据库比较复杂。
比如说,applyupdtes(-1),应该表示不允许出错。
你的中间层(或用户)有权限来更改后端数据库吗?
三层应用中,建议resolvetodataset设为True。
 
用applyUpdates(-1)=0表示不出错,
返回其它值都表示有错,
出错也不会报异常!
我用过三层架构方式下的applyUpdates 来更新数据,
没什么问题!
检查一下你的各字段赋值是否正确。
 
1.applyupdtes(-1)表示更新的資料不允许出错
applyupdtes(0)表示任意更新資料
2.注意你對所操作表的權限
3.在sqlquery中的欄位不能用別名!
 
要注意表名,字段的大小。
 
你的applyupdates(-1)是不允许出错,如果你的数据出错,你就无法更新进去。
 
检查一下applyupdates(-1)的返回值。
另外再让服务端程序处于调试执行状态,看客户端applyupdates(-1)时有什么错误出现。
 
用Applyupdates(0),
判断返回值是否等于0,
等于零表示成功;不等于零表示失败。
提交失败的结果集可以在Clientdataset的最后一个事件的返回值中找到。[:D][:)]
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
我建義在TClientDataSet.ReconcileError 事件中寫點指錯提示,
方便你的跟踪..
另外主关键字要设置正确.
 
你不妨添加RECONCILE ERROR DIALOG 窗体,若出错则会有详细信息的。
 
不要用-1
Set MaxErrors to ? to indicate that there is no limit to the number of errors.
 
同意sumingfei的意见,用Applyupdates(0)试一试,会很快找到答案。
 
直接添加sql语句:
1.provide.allowcommand :=true;
clientdataset.close
clientdataset.commandtext:='insert into ....';
clientdataset.execute;
或用applyupdate;
2.provider固定与一个表(或查询连接)
provide.allowcommand :=false;
修改数据
clientdataset.applyupdate(-1);
 
应该是你的DATASETPROVIER的ALLOWCOMMANDTEXT设为TRUE了,
也就是说,允许客户端的CLIENTDATASET写命令行,
改为FALSE就行了。
 
是不是用 TQuery 而 Requestlive=false啊~~??
 
是不是对 TDataSetProvider 采用了 ResolveToDataSet=True 方式?
如果是,再看一看是否数据集的 LockType=ltBatchOptimistic 类型?
如果是,改为 ltOptimistic即可。
 
后退
顶部