ADO在使缓存更新怎么进行状态检查(100)(100分)

X

xhd730

Unregistered / Unconfirmed
GUEST, unregistred user!
我以前写出数据库都用BDE , 现在想学习一下ADO 。我在新的项目中使用ADO 但是我不知道
在ADO中象BDE那样对数据集进行状态进行检测如:DSEDIT,DSINSERT。等
同时想大家多介绍BDE与ADO的不同,
谢谢。我在以前的贴子中找了好久都没有找到状态检测的。
(只有145分)
 
if ADS_DJ_FP.Modified then //如果已经修改则
if ADS_DJ_FP.State in [dsInsert,dsEdit] then //如果是插入和编辑状态则

 
正如ysai所说。
 
if ( AdoQuery1.UpdateStatus in [usModified,usInserted,usDeleted] )
or( AdoQuery1.State in [dsEdit,dsinsert])
or AdoQuery1.Modified
一个都不能少然要么不能检查当前的缓存是否有数据。
或者不能检测当前的数据是否在编辑状态。
哈哈谢谢各位了。我的QQ是 43745429 多交流
同时大家多介绍一下ADO同BDE的差别优劣
 
看看老李的ADO前四章
全OK
 
看看下贴:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1509781
 
能不能给点源程序例子
 
在ado中有一个属性:如果在缓存中更新记录没有更新到数据库ADODataset有个属性是changeCount
该属性是表示在缓存中有几个更新记记录。而查看记录状态在原生ado对象中我记的Recordset中
有一个属性好像是recordst.state。我忘记了在delphi中封装成什么,好像是ADODATASET.RecodState
 
up
好像是 ... adodataset.RecordStatus
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1509781
快点给分!!完美的解决办法!删除记录的旧值很难取的啊!!搞了半年一不小心,原来如此!

原问题是ADO记录删除后,访问删除记录的值???
好东东自然应该共享,UP者有分让更多的人共享
=============================================
问了好久,无果!!今天装了个VB6发现可以,我就不信号称VB KILLER的DELPHI搞不定!!!
在D6+SQL SERVER WIN2K环境下测试用如下代码定可实现!!
结论如下:在正常情况下,设置ADO记录集的DisableControls后就可以在不更新可视控件的
状态下访问记录集!!但是我们访问删除记录不行!!可能是delphi的DBGRID里面或FIELD里
面管理有点BUG(问题)!!而导至在记录集DisableControls时,GRID控件有刷新动作!!下面代码最重要的是
self.DBGrid1.DataSource:=nil ;我发现如果用了DATAGRID绑定后就不能正常访问了!!其他
普通的DBEDIT,DBCHECKBOX绑定没什么问题!!

VAR TT:STRING;
begin
self.ADODataSet1.DisableControls ;
SELF.ADODataSet1.FilterGroup:=fgPendingRecords ;
SELF.ADODataSet1.Filtered:=TRUE ;
//LockWindowUpdate(self.Handle);
self.DBGrid1.DataSource:=nil ;
SELF.ADODataSet1.First;
WHILE NOT SELF.ADODataSet1.Eof DO
BEGIN
//

TT:=string(SELF.ADODataSet1.Recordset.Fields['xssl'].OriginalValue) ;
tt:= string(self.ADODataSet1.FieldByName('xssl').OldValue) ;
showmessage(tt) ;
SELF.ADODataSet1.Next ;
END;
self.ADODataSet1.EnableControls ;
self.ADODataSet1.Filtered:=false ;
self.DBGrid1.DataSource:=self.DataSource1 ;
//LockWindowUpdate(0);
附原问题!!
问问:<< ADO记录删除后,访问删除记录的值???
=========================================
在ADO的ltBatchOptimistic模式下,DELETE 删除记录后!!
在UpdateBatch() 之前!!我想得到当前记录的旧值;
self.ADOQuery1.FilterGroup:=fgPendingRecords;
self.ADOQuery1.Filtered:=true;
SELF.ADOQUERY1.DisableControls;
adoquery1.First;
with adoquery1 do
while not adoquery1.Eof do
begin
case adoquery1.UpdateStatus of
usModified: begin
showmessage(fieldbyname('wzmc').OldValue) ;
end;
usDeleted:begin
showmessage(fieldbyname('wzmc').OldValue) ; //这句不行了???
end ;
SELF.ADOQUERY1.EnableControls ;
我怎样访问删除记录的值的!!上面的方法能够得到删除记录的状态,但是得到不

具体的值!!
好象是ADO的问题!!但是隐约记得VB6好象可以的!
 
顶部