一个简单的问题请大侠进来指教了。(100分)

  • 主题发起人 主题发起人 一灯
  • 开始时间 开始时间

一灯

Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了一个Access2000数据库,库中有两的表,表1和表2,表1实际是一套题库,表2是试题
表2的“题目编号”是表1的编号。两者相联。在我清空表2时出现了问题。代码如下: 

procedure TDataModule2.EmptyTemp;
var OriginTable:string;
i:integer;
linked:Boolean;
begin
OriginTable:=ADOTable2.TableName;
ADOTable2.TableName:='表2';
if ADOTable2.RecordCount<1 then
begin
ADOTable2.TableName:=OriginTable;
exit;
end;
if ADOTable1.MasterSource=nil then
Linked:=false
else
linked:=true;
unlink;
for i:=ADOTable2.RecordCount downto 1 do
begin
ADOTable2.RecNo:=i;
{*} ADOTable2.Delete;
end;
ADOTable2.TableName:=OriginTable;
if Linked then Link;
end;

procedure TDataModule2.Link;
begin
ADOTable1.MasterSource:=DataSource2;
ADOTable1.MasterFields:='题目编号';
end;

procedure TDataModule2.Unlink;
begin
ADOTable1.MasterSource:=nil;
ADOTable1.MasterFields:='';
end;

在执行到{*}时,出现异常“Key Column infomation is insufficent or incorrect,too many
rows were affected by update.”这是什么原因。
清空表2为什么不能用deleterecords()
 
for i:=ADOTable2.RecordCount downto 1 do
begin
ADOTable2.RecNo:=i;
{*} ADOTable2.Delete;
end;

改成这样试试。。。。

with ADOTable2 do
begin
first
while not Eof do Delete;
end;
 
晕,用得了这么复杂吗?直接用SQL语句不行吗?
delete * from 表2
 
recno不一定可以使用,如果删除,最好使用sql语句,简单明了高效
delete from table1 where 条件
 
同意使用SQL。
 
多人接受答案了。
 
后退
顶部