起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: xhong

【结】TDeltaDataSet是不是有Bug?

[复制链接]
发表于 2010-2-1 12:12:32 | 显示全部楼层
nextstat可以保证每次都是对应到正确的记录上,意思仅针对修改情况,是这样吗
不是。

新增和删除是只有一条,遍历都用nextstat
见附件
原数据集

无标题.jpg

2.13 KB, 下载次数: 255

回复 支持 反对

使用道具 举报

发表于 2010-2-1 12:13:52 | 显示全部楼层
我删除了01,把02修改为022,新增了03
见附件

无标题.jpg

11 KB, 下载次数: 250

回复 支持 反对

使用道具 举报

发表于 2010-2-1 12:14:36 | 显示全部楼层
代码如下

VAR
  FDelta2: TDeltaDataSet;
begin
  Memo1.Lines.Clear;
  if not Assigned(FDelta2) then
  begin
    FDelta2 := TDeltaDataSet.Create(DataSetBrokerBZSJJ1.DATASET);
  end;
  FDelta2.First;
  while not FDelta2.Eof do
  begin
    Case FDelta2.UpdateKind of
    TUpdateKind.ukDelete:
    begin
      Memo1.Lines.Add(FDelta2.Fields[0].AsString);
    end;
    TUpdateKind.ukInsert:
     begin
      Memo1.Lines.Add(FDelta2.Fields[0].AsString);
    end;
    TUpdateKind.ukModify:
    begin
      Memo1.Lines.Add(FDelta2.Fields[0].AsString);
      FDelta2.NextStatus;
      Memo1.Lines.Add(FDelta2.Fields[0].AsString);
    end;
       else Dialogs.ShowMessage('error');
    end;
   FDelta2.Next;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-1 13:39:21 | 显示全部楼层
18楼和21楼的说法矛盾了,21楼是最终说法是吧?
你21楼说:遍历都用nextstat。你23楼还是用FDelta2.Next;遍历的啊。你23楼是对于修改时候才用到FDelta2.NextStatus;定位修改后的值的,到底是怎么样,你这几个帖子不太一致,请最后确认一下给个最终确认的答案
回复 支持 反对

使用道具 举报

发表于 2010-2-1 15:21:25 | 显示全部楼层
nextstat可以保证每次都是对应到正确的记录上,意思仅针对修改情况,是这样吗
不是。
不好意思,多打个“不”字。

好像组织起来有点困难,是这样的,修改记录的记录内部用nextstat来循环,像把02修改为022;原记录01、02、03的记录 循环用next
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-3 10:28:09 | 显示全部楼层
有些乱了。举个例子说吧
原始记录:     1      2        null     4,现在比如我修改2为22,并清空4
修改后记录:   null   22     null      null
是这样吗?那通过第二条记录怎么知道第四个字段是清空为null,而不是本次没修改而null的呢
回复 支持 反对

使用道具 举报

发表于 2010-2-3 11:51:56 | 显示全部楼层
原始记录:     1      2        null     4,现在比如我修改2为22,并清空4
修改后记录:   null   22     null      null

我有糊涂
修改后的记录应该是 1   22     null      null 吧。

另外
那通过第二条记录怎么知道第四个字段是清空为null,而不是本次没修改而null的呢
,你是怎么知道这些值的呢,是通过Fields[I] 来获取字段的值,所有可以知道第四个字段已经从4修改为null
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-3 12:02:04 | 显示全部楼层
什么意思?

修改后记录:   null   22     null      null
吧?
我说的是Delta相邻2条记录
回复 支持 反对

使用道具 举报

发表于 2010-2-3 14:18:40 | 显示全部楼层
好像有点晕,
原始记录:     1      2        null     4,
请问,这个是一条记录的四个字段的值,
还是四条记录?

如果是一条记录的四个值,那就是我27楼说的,如果是四条记录,那么
通过23楼的代码的结果应该是
2
22
4
null

不是null   22     null      null 这个结果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-5 15:30:28 | 显示全部楼层
晕了,前后帖子说法似乎很多出入,以哪个为准
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-11 18:59 , Processed in 0.041740 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表