Delta中如何区别被修改为""的字段和本就是NULL的字段?(200分)

  • 主题发起人 主题发起人 KVLee
  • 开始时间 开始时间
K

KVLee

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataSet接受传来的Delta后,对于被修改的记录,是表现为两条记录的,一条是原记录,一条记录修改情况,其中原记录和修改前一致,第二条记录中仅仅在修改的字段上保存新字段值,其它未修改的为NULL,如ID,Name等字段,如主贴中的例子,现在的问题是客户端修改数据时,将某个字段值清空,如将DJ字段值由“打不响”置为“”,在Delta中该DJ字段也表现为NULL,这样与其它如ID、Name等字段表现相同,无法判断出它被修改了,哪位大侠研究过这些东东,给与指点!
 
仅仅从null值无法区分!与原记录比较即可。
 
但我是 Delta 传到中间层的, 然后根据 Delta 产生相应的 SQL 来更新数据, 因此不能与原数据对比哦
 
对不起!我没有细看,这个问题没有这么简单!
我研究研究。
 
好的..先谢谢了...
 
自顶一下..
 
各位大哥..帮帮忙呀
 
if Delta.IsNull then
//Null value
else
//Not Null Value
 
我找到方法了!
假设cds里已经是delta数据,
首先定位到状态是usModified的行,
对于每个字段可以这样判断:
if VarIsEmpty(fields.[green]newValue[/green]) and (fields.[red]Value[/red]=null) then
memo1.lines.add(IntToStr(i)+'-->没有修改')
else
memo1.lines.add(IntToStr(i)+'-->修改了')
 
好像用VarIsEmpty(fields.newValue)就可以了!
 
fields.IsNull 属性你没用过?
 
问题解决..非常感谢yeskert1
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部