Diamond Access中怎么删除一个表的纪录?(50分)

  • 主题发起人 主题发起人 DreamTiger
  • 开始时间 开始时间
D

DreamTiger

Unregistered / Unconfirmed
GUEST, unregistred user!
我想删除一个表的所有纪录,用Diamond Access的Query如下:
procedure TDMod.EmptyTable(sTableName:string);
var
query1:TDaoQuery;
begin
query1 := TDaoQuery.Create(self);
query1.database := SequencesDatabase;
try
query1.SQL.Text := 'DELETE * FROM ' + sTableName + ' WHERE SeqID <> ""';
try
query1.Active := true;
except
end;
finally
query1.free;
end;
end;
总是出错:无效的操作。
当然,不用Delete语句就可以:
try
query1.SQL.Text := 'SELECT * FROM ' + sTableName;
try
query1.Active := true;
while not query1.isempty do query1.delete;
except
end;
finally
query1.free;
end;
这样是可以的,说明query1和database都不是只读的。问题就是delete
为什么用不了?我察看了access中对dao的介绍,可以用delete * From
table where condition 来删除多个纪录的啊。

到底是哪里出的错?
 
Delete后不能加*应直接加From和where子句。肯定是书上写错了,我看过的
大型数据库没有一个这样用的。要删除多个记录可以在Where子句中进行相应
的定义。
 
要删除整个表可以用
delete from tablename
where exists
(
select * from tablename
)
不过这种语句只能在大型数据库中使用。
 
两种方法都试过了,都不行。
 

query1.Active := true;

query1.Execute
 
cAkk:高,就是高!只是我不懂,为什么必须用Execute?
 
删除语句不带返回值当然要用Execute
另外我刚在DB2上试过我的方法没道理不行。
 
后退
顶部