一样的ADO缓存模式,不一样的问题 -- 搞过数据库的大侠们进来留点纪念。 请了。(100分)

  • 主题发起人 本公子
  • 开始时间

本公子

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个奇怪的要求,不知道能否实现。

这样的--
1.ADODataSet采用ltBatchOptimistic方式(缓存)。
2.原数据库表中有记录A,现在又新增2条记录B和C,还未提交保存。

此时,用 usInserted 能够判断出来B和C这两条是新增的。
如果A记录有所改动,用 usModified 也能判断出来。

问题是:
在保存记录之前,发现新增的记录中有一条的数据录入是错误的,又将其数据进行了修改(B记录或C记录)。
如何在保存的时候,能够判断出新增的2条记录那个是被修改过的??(现在这2条记录都还在缓存中)

能否用数据库的方法进行判断? (不借用其他的中间变量)
 
星期二到QQ群[1005454]來討論吧。
 
不好意思,我对这个不太清楚.
 
暂时还没想到什么好方法.我想是否可以从ADO原生对象入手.
 
其实你关心的数据两种状态:库中已有的(即所谓修改的),库中没有的(即所谓新增的)。

放两个ADODataSet,一个保持状态,一个用来数据操作。
(未作仔细研究,只是根据你的说法想到的)
 
adoataset有FILTER GROUP 方法,里面有一个参数能满足你的要求,别的ADO组件也有此方法
A D O数据集F i l t e r G r o u p属性值意义
F g U n a s s i g n e d 指定不使用任何的过滤器来过滤数据
f g N o n e 移去任何的过滤器,让所有的数据都显示出来。这也可以
通过设定A D O的F i l t e r e d属性值为F a l s e来达到
f g P e n d i n g R e c o r d s 只显示被修改过但尚未更新回数据源的数据或被修改过但
尚未被取消更新的数据
f g A ff e c t e d R e c o r d s 只显示受到上一次更新回数据源影响的数据
f g F e t c h e d R e c o r d s 只显示在目前更新缓存之中的数据。这些数据是在上一次
从数据源取得之后所有储存在客户端的数据
f g P r e d i c a t e 只显示刚被删除的数据
f g C o n f l i c t i n g R e c o r d s 只显示被修改过但当更新回数据源时发生错误的数据
 
weichao9999:
你理解的错了。
A记录是库中已有的,他修改不修改我不关心,因为我已经知道如何判断A是否修改。
在提交之前,B和C记录是库中没有的,是新增的,B和C在提交前,其中有一个又有所改动,现在就想判断这个改动的是B或C,是在新增当中判断的。

WILLBEGOOD:
你所说的我已经知道。你和weichao9999理解的一样,如上所述。
这不是我想要的结果。
见 http://www.delphibbs.com/delphibbs/dispq.asp?lid=464928
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1666145

不过还是非常感谢你们2位的留言。
 
我也知道这个问题很龌龊,一般不会提出这样的问题和需求的。 [:(]
其实,原本是想通过判断新增的记录是否有所改变来触发一个事件的,所以才会提出这样的问题。 [:(]

不过现在已经通过其他途径来解决了这个触发事件的问题。[:D]
所以上面本贴的问题也就不着急了。 [^] 就算是干了一件傻事吧。 [V]
 

Similar threads

回复
0
查看
522
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
659
SUNSTONE的Delphi笔记
S
S
回复
0
查看
647
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部