adoQuery怎么判断数据集中哪些行被删除
adoQuery如何判断数据集中哪些行被删除
程序界面上有一个adoQuery设置LockType为ltBatchOptimistic,用于录入订单行内容,在所有行都录入/修改/删除完毕后,点击保存按钮才执行UpdateBatch();
现在我需要加入自动登记操作记录的功能,因此需要在UpdateBatch之前知道都修改/删除了哪些内容。
代码:
但是实际测试发现,修改记录没有问题,但是删除记录无法保存,这部分代码没有运行,即UpdateStatus=usDeleted不存在。
请问大家,该怎么才能获得被删除的行?
------解决方案--------------------
http://bbs.****.net/topics/390398482
里边估计是找不见了
------解决方案--------------------
BeforeDelete时记录下关键值。
------解决方案--------------------
删除后光标移动了,UpdateStatus状态发动变化了
------解决方案--------------------
创建一个对照表,提交前和对照表比较即可(比较前,如果qrylist执行了筛选,一定要关闭)。
创建对照表方法
1打开qrylist的同时打开qrylist2(对照表)
2在qrylist的afteropen时qrylist.SaveToFile, 比较前用qrylist2(对照表).LoadFromFile
个人感觉ADO的批量提交仅仅在大量+简单处理的数据处理上有优势。
最好是及时提交+触发器处理
程序界面上有一个adoQuery设置LockType为ltBatchOptimistic,用于录入订单行内容,在所有行都录入/修改/删除完毕后,点击保存按钮才执行UpdateBatch();
现在我需要加入自动登记操作记录的功能,因此需要在UpdateBatch之前知道都修改/删除了哪些内容。
代码:
//保存行修改记录
with qryLIST do
begin
First;
while not Eof do
begin
if UpdateStatus=usDeleted then
begin
//这里是删除记录
Next;
Continue;
end;
if UpdateStatus=usModified then
begin
//这里是修改记录
end;
Next;
end;
end;
if qryLIST.State<>dsOpening then
qryLIST.UpdateBatch();
但是实际测试发现,修改记录没有问题,但是删除记录无法保存,这部分代码没有运行,即UpdateStatus=usDeleted不存在。
请问大家,该怎么才能获得被删除的行?
------解决方案--------------------
http://bbs.****.net/topics/390398482
里边估计是找不见了
------解决方案--------------------
BeforeDelete时记录下关键值。
------解决方案--------------------
删除后光标移动了,UpdateStatus状态发动变化了
------解决方案--------------------
创建一个对照表,提交前和对照表比较即可(比较前,如果qrylist执行了筛选,一定要关闭)。
创建对照表方法
1打开qrylist的同时打开qrylist2(对照表)
2在qrylist的afteropen时qrylist.SaveToFile, 比较前用qrylist2(对照表).LoadFromFile
个人感觉ADO的批量提交仅仅在大量+简单处理的数据处理上有优势。
最好是及时提交+触发器处理