[英]Delphi Delete all records from FDTable
我試圖刪除我的FDTable組件中的所有記錄,使用,
mytable.Delete;
但沒有記錄被刪除。
任何人都可以建議我刪除FdTable中的所有記錄。
編輯
我用這種方式修改了它,
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.Refresh;
但這需要很多時間,因為我的fdtable中有很多行。
嘗試
MyTable.EmptyDataSet;
可能還有更多要做的事情,但是你沒有說明你是如何填充MyTable
的。
刪除基礎數據庫表中的所有記錄(最好的方法取決於數據庫)並只調用一次刷新。
如果必須通過TFdTable執行,請使用BeginBatch,刪除(不刷新),EndBatch,然后刷新。
mytable.BeginBatch;
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.EndBatch;
mytable.Refresh;
嘗試
因為刪除所有行會妨礙性能。
如果這不起作用,那么為什么不創建數據集運行時,然后釋放該對象。
我建議您使用存儲過程來執行作業,而不是使用應用程序中的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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.