![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записей после фильтрации... [D5, D7, dBase, FoxPro]
BillyJeans © (2003-09-04 12:03:00)
Существует ли метод удаления отфильтрованных записей в таблице? Желательно одной командой...
Sandman25 (2003-09-04 12:48:00) [1]
[8] VAleksey © (04.09.03 12:42)
>Next не нужен!!
Точно. Позор на мои седины :)
>Вообще - это одна команда :-). С точки зрения паскаля ес-с-но.
Application.Run - тоже одна команда, с точки зрения синтаксиса.
И главный begin end - тоже :)
VAleksey (2003-09-04 12:42:00) [2]
Next не нужен!!
While not Table1.Eof do Table1.Delete;
Вообще - это одна команда :-). С точки зрения паскаля ес-с-но.
BillyJeans (2003-09-04 12:40:00) [3]
еще варианты есть?
Sandman25 (2003-09-04 12:33:00) [4]
[5] BillyJeans © (04.09.03 12:28)
Что значит из-за разных фильтров? Или удаляются все сразу (с помощью TQuery, и тогда абсолютно не важно, существует ли вообще какой-то там TTable) или по одной (с помощью цикла по TTable). Других способов нет.
BillyJeans (2003-09-04 12:28:00) [5]
ExecProc тоже не выход, т.к. будет медленно отрабатывать из-за разных фильтров...
BillyJeans (2003-09-04 12:19:00) [6]
да, причем Next в данном случае все испортит!
Sandman25 (2003-09-04 12:19:00) [7]
Ну и что, что Table? Добавьте еще TQuery, можете его динамически создать, если он редко используется.
with TQuery.Create(nil) do
try
DatabaseName := Table.DatabaseName;
Sql.Add("Delete from " + Table.TableName + " where " + Table.Filter);
ExecProc;
finally
Free;
end;
BillyJeans (2003-09-04 12:15:00) [8]
У меня TTable, а (First, while not Eof do ... Next) вовсе не одна команда, и выполняется медленно :(
Sandman25 (2003-09-04 12:07:00) [9]
Оставшиеся после фильтра записи можно удалить командой
with Query do
begin
sql.add("delete from table where " + Dataset.filter);
execproc;
end;
Если использовался OnFilterRecord, то можно пройтись по всем записям (First, while not Eof do ... Next) удалить их (Dataset.Delete).