清空表时出现“键列信息不足或不正确。更新影响过多行。.”,清空不了。为何?(35分)

  • 主题发起人 CPU风扇
  • 开始时间
C

CPU风扇

Unregistered / Unconfirmed
GUEST, unregistred user!
with ADOTable1 do
begin
DisableControls;
first;
while not EOF do
begin
Delete;
end;
enablecontrols;
end;

数据库是用Access。
按照上面这样写,在程序的别的窗口都可以用,这是在这个不行。
delete删除表的记录有时也弹出这样的框,有时可以删,有时删不了,不知为何

请问这是什么原因?清空一个表,还有什么其他的写法?
 
没有Next吗?上面的语句
 
adotable1.canmodify ?
edit
 
通常是发生在你的表没有主键,并且表中有两条记录是完全一样的,而你正在删除的记录恰好
是这些记录中的一条,解决方法只有将这些记录用SQL语句"Delete "加上条件,将相同记录完全
删除。

个人见解,有失误的地方请大家指出:)。
 
确实有完全一样的数据
我加上主键试试!

-------------------
adotable1.canmodify ?
edit
-------------------
什么意思?我是初学者,能说一下吗?
是不是
adotable1.canmodify ?
edit
这样写就行了?
 
没有next
不过好像也不需要吧?
 
清空表?好像有EmptyTable?

直接用Query执行Delete from TableName不效率好一些?
 
能说具体些吗?我刚学,还不是很懂
 
这个语句是不要Next的。删除后自动下移的。
我建议用delete from 表名.

我一下子没反应过来
 
好的,马上下线试一下,OK的话,晚点再上来谢你
 
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('delete from 表名');
try
ExecSQL;
...
except
...
end;
end;
 
with ADOTable1 do
begin
DisableControls;
first;
while not EOF do
begin
close;
open;
Delete;
close;
open;
end;
enablecontrols;
end;

老兄是你删除后没有更新,你照我上面的代码修改一下大概会没问题了吧
 
OK了
是因为有两条以上的记录完全一样才这样的.在表里加上主键就行了

谢谢大家的帮助!
 
顶部