荫想在我FDTable组件的所有记录使用删除,
mytable.Delete;
但没有记录被越来越删除。
任何一个可以建议我的方式来删除在FdTable的所有记录。
编辑
我修改了它以这种方式,
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.Refresh;
但它走的时候很多,因为在我的fdtable很多行。
卸下底层数据库表,并调用刷新一次就好(要做到这一点,将取决于数据库的最佳方式)的所有记录。
如果你必须通过TFdTable做到这一点,使用BeginBatch,做你删除(不刷新),并endBatch函数才刷新。
mytable.BeginBatch;
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.EndBatch;
mytable.Refresh;
尝试
MyTable.EmptyDataSet;
有可能是有点超过,这样做,但你不说你是如何在第一时间填充MyTable
。
我会建议你使用存储过程的工作,而不是从应用程序中的SQL。存储过程是制作简单,而且速度极快,因为它们直接在服务器上运行。只要创建你的表存储过程;
sp_deleteall
和它做SQL的一行:
从MYTABLE删除
从您的应用程序,在表单上放一个TFDStoredProc,将其链接到你的存储过程在服务器上,只是在程序调用`
sp_deleteall.ExecProc;
要知道有多少记录刚刚删除调用,程序执行后:
ShowMessage(IntToStr(sp_deleteall.RowsAffected) + ' records were deleted.');
试试吧 ...
尝试
因为这样做删除所有的行会阻碍性能。
如果不工作,那么为什么不创建数据集运行,然后释放对象。
最快的形式最慢。前两个是在执行服务器端的命令。
TRUNCATE TABLENAME;
然后重新打开。这需要独占访问表。DELETE FROM TABLENAME;
。这并不需要独占访问。所有你需要做删除所有记录在FDMemTable是
MyTable.Active := False;