ADODataSet.DeleteRecords(arAll)难到真的不能用吗。我今天一定要解决(可惜我一次只能放100分)

时间:2022-11-14 19:52:33
我的系统已经是很新了

Win2003Server, SQLServer2000+SP3, Delphi7, MDAC2.7
 
但还是不能用ADODataSet.DeleteRecords(arAll)这条语句,这是为什么,
于是我就干脆用Delete语句删除,但到最后一条记录时,就出错,后发现记录是删除了,但为什么还是要报错。
看了好多以前的帖子,要么是用SQL语句直接解决,要么是说更新什么的。我都照做,问题依旧

12 个解决方案

#1


有没有判断为EOF啊..

#2


那还用说

开始是这样  ADODataSet.DeleteRecords();报错后改为:

if ADODataSet.IsEmpty then
  Exit;
ADODataSet.First;
while not ADODataSet.Eof do
  ADODataSet.Delete;

#3


这样吧

if ADODataSet.Eof == true then
  Exit;
ADODataSet.First;
while ADODataSet.Eof == true do
  ADODataSet.Delete;

#4


TO: rikky(读书、心知、生活) 
不明白你是什么意思

#5


if ADODataSet.Recordcount<1 then   Exit;
ADODataSet.First;
while not ADODataSet.Eof  do
  ADODataSet.Delete;

#6


if ADODataSet.Recordcount<1 then   Exit;
ADODataSet.First;
while not ADODataSet.Eof  do
  ADODataSet.Delete;
if adodataset.recordcount>0 then
  adodataset.delete;

#7


while not adodataset.eof do
begin
...
end;

#8


关键是我想弄明白什么情况下才支持 ADODataSet.DeleteRecords(arAll);

#9


ADODataSet有没有执行联合查询即显示的是多表数据?

#10


没有,就一个表
只是用的BatchOptimization模式的LockType
Cursor是Static的

#11


你的LockType一定为ltBatchOptimistic,且cachesize一定是大于1。这样是会出错的,你只要将cachesize设为1就可以了。我也碰到过。
记得给分。

#12


TO: nnwq(乖仔) 
  DeleteRecords(arAll)还是不能用
目前的属性:LockType=ltOptimisitic; CursorLocation=clUseClietn; CursorType=ctStatic; CacheSize=1;我用最简单的SELECT * FROM TableName的方法取数据,结果还是“此环境不允许操作”

#1


有没有判断为EOF啊..

#2


那还用说

开始是这样  ADODataSet.DeleteRecords();报错后改为:

if ADODataSet.IsEmpty then
  Exit;
ADODataSet.First;
while not ADODataSet.Eof do
  ADODataSet.Delete;

#3


这样吧

if ADODataSet.Eof == true then
  Exit;
ADODataSet.First;
while ADODataSet.Eof == true do
  ADODataSet.Delete;

#4


TO: rikky(读书、心知、生活) 
不明白你是什么意思

#5


if ADODataSet.Recordcount<1 then   Exit;
ADODataSet.First;
while not ADODataSet.Eof  do
  ADODataSet.Delete;

#6


if ADODataSet.Recordcount<1 then   Exit;
ADODataSet.First;
while not ADODataSet.Eof  do
  ADODataSet.Delete;
if adodataset.recordcount>0 then
  adodataset.delete;

#7


while not adodataset.eof do
begin
...
end;

#8


关键是我想弄明白什么情况下才支持 ADODataSet.DeleteRecords(arAll);

#9


ADODataSet有没有执行联合查询即显示的是多表数据?

#10


没有,就一个表
只是用的BatchOptimization模式的LockType
Cursor是Static的

#11


你的LockType一定为ltBatchOptimistic,且cachesize一定是大于1。这样是会出错的,你只要将cachesize设为1就可以了。我也碰到过。
记得给分。

#12


TO: nnwq(乖仔) 
  DeleteRecords(arAll)还是不能用
目前的属性:LockType=ltOptimisitic; CursorLocation=clUseClietn; CursorType=ctStatic; CacheSize=1;我用最简单的SELECT * FROM TableName的方法取数据,结果还是“此环境不允许操作”