emptytable怎么用?(100分)

  • 主题发起人 主题发起人 zhengli
  • 开始时间 开始时间
Z

zhengli

Unregistered / Unconfirmed
GUEST, unregistred user!
“要删除表格中的所有记录,
可以调用EmptyTable函数。
如果表处于打开状态,
必须是以独占方式打开的。”
(上面是我在一本书中看到的)
什么是独占方式?


程序示例如下:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
With Table1 Do
Begin
Active := False;
DatabaseName := 'Delphi_Demos';
TableName := 'CustInfo';
TableType := ttParadox;
EmptyTable;
{换成DeleteTable也一样}
End;

此程序运行总出现如下错误:
Project Project1.exe raised exception class EDBEinginError with
message 'Table is busy.
Table:....(数据文件路径)'
 
独占方式就是你现在对表进行操作的table对该表加独占锁,
只允许该table对加锁表进行读写操作,
其它企图使用(读/写)该表的操作均不允许。

 
emptytable 前加上 active:=true试试看
 
将table1.exclusive:=true;即可

With Table1 Do
Begin
exclusive:=true;
Active := False;
DatabaseName := 'Delphi_Demos';
TableName := 'CustInfo';
TableType := ttParadox;
EmptyTable;
{换成DeleteTable也一样}
End;
 
lhxu,问题可能就在于active:=true。如果在emptytable 前加上 active:=true;
而table1.exclusive:=false(缺省),
就会出现错误:table can not opend for exclusive use.

zhengli,如下,没问题。注意DatabaseName和应该在你的系统里,tableName也在
对应的DatavaseName里。顺便提醒,在执行下面的程序前,最好备份table所在的目
录,便于以后再用。

With Table1 Do
Begin
Active := False;
DatabaseName := 'DBDEMOS';
TableName := 'items';
TableType := ttParadox;
EmptyTable;
End;

 
1. use query: delete CustInfo
2. 加上Exclusive:=true;
 
奇怪,删除所有记录,用DELETE * FROM不就可以了吗?
 
同意cAKK,
 
多人接受答案了。
 
后退
顶部