要怎样定位到UpdateStatus=usDeleted的记录呢,头痛(100分)

  • 主题发起人 主题发起人 riversoft
  • 开始时间 开始时间
R

riversoft

Unregistered / Unconfirmed
GUEST, unregistred user!
有三张表
Pruducts 产品库存表
---------------------------
ProductID Stock

Orders 定单表
----------------------------
OrderID OrderDate

OrderDetails 定单详细表
-----------------------------------
OrderID ProductID Quantity

用delphi6+Ado+SqlServer2000

AdsOrderDetails:TAdoDataSet;
AdsOrderDetails.LockType:=ltBatchOptimistic;
AdsOrderDetails.CommandText:='Select * from OrderDetails';

BtnSaveClick(Sender:TObject)
begin
adoConnection.BeginTrans;
AdsOrderDetails.First;
while not AdsOrderDetails.eof do
begin
case AdsOrderDetails.UpdateStatus do
usInserted:在Products中扣除相应的库存入;
usDeleted:在Products中加入相应的库存入;
end;
end;
AdsOrderDetails.UpdateBatch;
end;

现在其他算法不管,只是usDeleted的记录无发定位啊,
到底要怎样才能定位到已删除的记录上呢,
我不想用TClientdataSet来协助。
 
没人理。提一下
 
在数据库中做触发器不是很容易达到要求吗?
为什么要在客户端实现呢?
 
用ClientDataSet.StateFilter:=[usDelete]可以实现你想要的功能
 
to:book523
我是这么想过,但有这样也不是办法,
有时候比如删除的是历史的订单记录的话你说怎么办,
不会也让库存无缘无顾的多起来把。
 
ClientDataSet.StateFilter:=[usDelete]
我知道但我不想还要在客户端放midas.dll
之类的东东,难道用adodataset就真的不能
实现同样的功能吗
 
再看了看你的问题,你执行了Delete操作前就应该减
 
to:nulk
其实如果在delete之前就减的话就不难,但要在delete后必须进行updateBatch;
不然的话如果数据集合被cancel就不好办了,如果解决不了的话只能自己多建一
个状态字段进行状态判断维护了,但我想既然borland有usDeleted
这个属性就应该可以让我们去使用它,只不过我不知道如何使用,为什么
TClientDataSet有StateFilter属性而TAdoDataSet没有呢,头痛,
我想这个问题是比较通用的啊
 
你可以在做删除操作前,将你可能会发生变化的记录存在一个用户不可见的地方,如果删除
操作成功的话,根据这些保存信息,进行相应的修改;
或者你先做修改操作,如果没有记录没有删除成功,根据保存的信息,将修改操作恢复;
个人意见。
 
ADO要用:
case RecordStatus do
[rsDeleted]:
 
使用FilterGroup:=fgPendingRecords
 
因为TClientDataSet在内存中有临时表的功能,
TAdoTable.RecordStatus好象是Batch Update Mode才有用
 
to:wbtvc谢谢你的提点
答案接受
 
riversoft:
wvtvc的做法可以不可以呀,我现在也是这个问题。
zhangc@moe.edu.cn
 
riversoft ,和wvtvc
我做了一下测试,用ACCESS2000,在删除记录的时候,
我用了deleterecord(crcurrent),
读recordstatus的时候还是读不到rsdeleted,,其它的都没有问题。
我非常着急,希望你能回答这个问题,或者将例子程序发到我的信箱:zhangc@moe.edu.cn
各位大侠帮忙了。
 
我在使用中又发现了一个问题,就是判断出了rsdeleted后,
detail数据库原来的数据不知道了,不是说只是做了删除的标记,并没有删除吗?
我使用fieldbyname('fieldname').asstring根本不行。
 
我也一样,找不到rsDeleted记录
 
可以用UpdateRecordTypes=rtDeleted
 
后退
顶部