为什么客户端applyupdates时只能提交到应用程序服务器,而不能提交到数据库。(75分)

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

zypang

Unregistered / Unconfirmed
GUEST, unregistred user!
在李维的《delphi5.x分布式多层应用》一书中提到,
当tdatasetprovider中的resolvetodataset为false时,
且tdatasetprovider当数据的每一个拦位的providerflag的值为pfinupdate
时,在客户端的tclientdataset.applyupdate(0)时,客户端的修改
数据会提交到数据库中。
我也是这样作的,只不过我在客户端是添加数据,最后我添加的数据
只能提交到应用服务器,而不能够在提交到数据库,请问什么原因?
希望大家给个说法。
我可是献出我的家底了。
 
applyupdate(0)是错误记录数为0时,才提交数据库。
看一看你插入的数据有冲突吗?
用applyupdate(-1)试一下。
 
applyupdate(-1)
 
我什么方法都用过了,applyupdate(-1)依旧不行。
怀疑是数据库的毛病,可是直接望里面写是可行的,
我用的sybase数据库,是不是数据库接口与midas的有毛病呀。
苦呀,不知怎么办好。。wuwu.......
 
呵呵。。。
问题越来越怪,我把应用服务器端的query改为table就行了,
而且什么都没有动,(table没写什么语句,只有空壳),
这样都行,看来是query的问题。可是我的query左看右看也
没有什么问题,只写了select * from xx而已,为什么呢?
有没有大虾遇到与我同样的问题。
 
zypang:
小声问一句,你的query.RequestLive属性设成True了没有。
 
如果是用的 query 的话,应该同时关联一个 updateSQL 控件,用它来进行数据的
insert, delete, update ,同时 query 的 CatchUpdate 应为 true, 而
RequestLive 应为 false。
用 applyUpdates 时,只是提交到数据库的 buffer,在 c/s 环境下,最好使用
TDatabase 的 ApplyUpdates 方法
 
to dsm2000:我有设这一项
to crab:我用的是midas好象李维书上写当更新单一的表时好象不用tupdatesql
更新多表时才用他吧。
 
》只能提交到应用服务器,而不能够在提交到数据库
----什么意思?没明白。
BTW:您的书在哪里买的?多少RMB?
 
to::千中元
就是说,当我用tdatasetprovider的onupdatedata事件时,把他的dataset
参数提取出来,发现可以提交出数据,那就是说,数据已经被提交到应用程序服务器
不存在连接的问题,但是我发现我的sybase数据库中却没有这笔交易。那就是说问题
出在query上,但是我又找不到毛病。怎么办?
BTW:书应该哪都有吧?我在厦门。我看见当当网上书城也有,88RMB。
 
我正在试。。。
 
to zypang: 我原来碰到过类似的问题,不知与你的问题是否一致。
问题并不出在applyupdate调用上,而是在applyupdate生成SQL命令时需要得到
Table名,如果tdatasetprovider与Query相连,那么一定要确保Query内包含类
似如下的内容: SELECT ... FROM Table ....或者编写OnTableName的事件给定
表名也可以。
我碰到这个问题时也是没有更新到数据库,而且也没有触发异常。
 
多人接受答案了。
 
后退
顶部