三层结构下,数据更改不成功 (50分)

  • 主题发起人 主题发起人 xxczq
  • 开始时间 开始时间
X

xxczq

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的Midas编程练习时,用DbNavigator更改数据后保存,单击Refresh按钮系统出错:
'must apply updates before refreshing data',数据更改不成功,表现为:从新运行系统,
数据仍然为原来的数据,并不是改动后的数据。我的ClientDataSet代码中,AfterPost事件代码如下
if clientdataset1.changecount>0 then
clientdataset1.applyupdates(0)
连接的数据库为Sql Server7.0,用AdoConnection和AdoQuery连接,如过数据库该为DBDeMo则系统正常
 
'must apply updates before refreshing data' 这是当然的了。因为你没有更新数据到
服务器。不成功的原因可能有以下几点。
1。用applyupdates(-1)试试。
2。中间件的数据集是否设置为可以修改?包括provider和数据集(adoquery)。
3。建议置socketconnect(或其它)的connected为假。运行时再置为真。
4。我以前遇到个情况,applyupdates(0)一次,它就更新一次,但只要重新联接就好了。
 
用applyupdates(-1)更改成功,但是不能刷新,如果刷新,则还出'must apply .....'错误
为什么呢?
 
而且如果用Sql语句连接两个表更改数据的话,出错‘insuficient key information for updating
or refreshing ’
 
可能我不太明白你说的意思。请加我的QQ吧:18283251.
 
在中间件中放入两个query,master->主数据表,detail->从数据表。
再放入一个Datesource1->master
detail.datasource:=Datesource1;
编辑Detail.Masterfields,根据关键字段建立主从关联。
加一个Tdatasetprovider1->master.
客户端:一个clientdataset1->datasetprovider1;
再放一下clientdataset2,clientdataset2.datafield:=clientdataset1.detail。
更新:clientdataset1.applyupdates(0);
 
主要更新不成功的原因;
如果你使用ADO会有这样出现的
要求你使用的SQL语句中有定位的索引号;
更新数据最好不要是UPWHEREALL;我也遇到的情况
 
1。应该是BeforePost事件里面AfterPost
2。Join出来的东西不可以这样进行修改。
 
CJF怎么BeforePost事件里面的AfterPost?不解
另外,Join出来的数据如何更改?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部