Delta 数据的困惑 100分!在线等待!(100分)

  • 主题发起人 主题发起人 dennisfox
  • 开始时间 开始时间
D

dennisfox

Unregistered / Unconfirmed
GUEST, unregistred user!
使用三层结构,更新表中有TEXT字段,如果把TEXT字段改成空,在CLIENTDATASET的Delta数据中却没有将这个TEXT更新后的值记录下来,导致更新不成功,如果把text字段的值改成其他任何值,都可以正常更新,不知道是什么原因!
同时IMAGE字段(改成NULL)也同样有这个问题!
环境:CLIENTDATASET+provider+ADO+SQLSERVER 2000
等待高手!
 
应该是跟Provider的更新模式有关,它有三种更新模式(匹配全部,匹配更改部分,匹配主建),把Provider的更新模式改成 upWhereKeyOnly 试试。
 
更新模式就是upWhereKeyOnly;
现在关键是Delta都不记录更新后的TEXT空值信息!
 
你的意思是,你把它赋值为Null的话,数据库的数据根本就不变?
有什么提示没有呢?
跟踪Provider提交给数据库的SQL语句看看。
 
你的意思是,你把它赋值为Null的话,数据库的数据根本就不变?
对,但是没有任何提示,Delta没有这个TEXT字段的更新信息,SQL中自然就没有列出这个更新字段!
 
呵呵,郁闷的问题。
还真没有碰到过哦,我做个Demo测试一下先。
 
我看Delta里的信息是通过TEMPCLIENTDATASET.DATA := Delta;
ShowMessage(TEMPCLIENTDATASET.XMLDATA),如果text字段设成其他任何值,里面都有更新的信息,即使text字段设成‘’,也没有更新信息!
 
我测试了一个Text字段,没有这样的问题,可以赋值Null值。
我用的是Delphi7。
更新模式是全部匹配。
 
以下是它生成的SQL
exec sp_executesql N'update BS_AskForLeaveMsg set
cContent = @P1
where
cCode = @P2 and
cLeavedate = @P3 and
cIssuer = @P4 and
dIssueTime = @P5
', N'@P1 text,@P2 int,@P3 datetime,@P4 nvarchar(50),@P5 datetime', NULL, 5, '09 19 2005 3:08PM', N'010101', '09 19 2005 3:08PM'
 
你把CLIENTDATASET的Delta内容帖出来看看!
 
帮顶!
╭=========================================╮
80G海量源代码,控件,书籍全免费狂下不停!
http://www.source520.com

╰=========================================╯
 
还有人碰到过这个问题呀!
 
呵呵,不是很清楚,但是在AfterApplyUpdates事件中可以手动更新吧
 
后退
顶部