2011-07-03 18 views
0

どのようにしてDELPHIのテーブルからすべてのレコードを削除できますか?我々はこのようなループを使用することはできません:テーブルからすべてのレコードを削除する

for k:=1 to table1.recordcount do 
    begin 
     table1.Last; 
     table1.Delete; 
    end; 

何か解決方法はありますか?

+1

どのような種類のテーブルですか? BDE TTable? ADOテーブル? dbExpress? –

答えて

8

最良の方法は、SQLデータベースとそれを達成するためには、クライアント側カーソルを移動せずに、サーバー上で直接削除を実行することです。単一のDELETEコマンドが一度にすべてのレコードを削除できる場合、各レコードごとに1つずつ、いくつかのDELETEコマンドを発行する方法があります。

さらに、一部のデータベースでは、ロールバックデータを生成せずにテーブル全体を空にできるTRUNCATEコマンドがあります(これはOracleですが、他のDBにも同じコマンドが存在する可能性があります) - 後でコマンドをロールバックする必要がないことが確かである限り。

データベースがSQLデータベースではない場合は、ドキュメントがそのテーブルを空にする最良の方法を教えてくれます。

6

クエリコンポーネント(のTQueryまたはTAdoQueryまたはTSQLQueryを)を使用することができ、Delete From <TableName>にそのSQL.Textプロパティを設定し、Query.ExecSQL(代わりのQuery.Open)を使用します。

5

Table1.EmptyTableについてはどうですか?あまり効率的

または、:

while table1.recordcount <> 0 do 
    table1.Delete; 
+1

+1のEmptyTable。 –

+0

このTable1.EmptyTableは、実際のデータベースのレコードを実際に削除しますか? –

関連する問題