![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TTable
Laimer © (2001-12-18 11:42:00)Можноли очистить таблицу БД от записей не применяя Exclusive
panov (2001-12-19 09:05:00) [1]Deniz © (19.12.01 08:51)
Согласен.
Хотя в цикле навряд ли курсор сместится:-)
Deniz (2001-12-19 08:51:00) [2]>panov © (18.12.01 16:09)
А причем тут Help? Особенно - Opens an empty datasetесли в условии сказано что Table не пустой изначально.
В любом случае логично проверять EOF при проходе по всем записям с какими-то изменениями, а при удалении всехзаписей логичнее проверять IsEmpty, потому как задача то в этом и состоит: "Удалять пока не кончатся записи(таблица опустеет)."
Я к чему все это, если вдруг во время выполнения цикла произойдет Next или Locate на следующие записи(теоретически такое возможно), то тогда EOF удалит не все записи, или в цикле надо поставить First???
panov (2001-12-18 18:08:00) [3]>Val © (18.12.01 16:25)
Точно. Вначале - Table1.First;
Val (2001-12-18 16:25:00) [4]>panov © (18.12.01 16:09)
на первую запись стать надо бы, думаю:
TDataSet.Delete
Deletes the active record and positions the cursor on the nextrecord.
panov (2001-12-18 16:09:00) [5]Посмотри в Help DataSet.Eof:
Test Eof (end-of-file) to determine if the cursor is positioned at the last record in a dataset. If Eof is True, the cursor is unequivocally on the last row in the dataset. Eof is True when an application:
- Opens an empty dataset.
- Calls a dataset’s Last method.
- Call a dataset’s Next method, and the method fails (because the cursor is already on the last row in the dataset).
- Calls SetRange on an empty range or dataset.
Deniz (2001-12-18 15:56:00) [6]>panov © (18.12.01 14:42)
А если ты стоишь не на первой записи?
В любом случае у меня проверяется пустотатаблицы, а у тебя конец:)
panov (2001-12-18 14:42:00) [7]>Deniz
Абсолютно без разницы...
Deniz (2001-12-18 14:33:00) [8]>panov © (18.12.01 11:58)
>Тогда только в цикле
>while not Table1.Eof do
>begin
> Table1.Delete;
>end;
Заменить
while not Table1.Eof doна while not Table1.IsEmpty do
panov (2001-12-18 13:41:00) [9]>tns © (18.12.01 13:25)
"...не применяя Exclusive"
tns (2001-12-18 13:25:00) [10]есть стандартная функция Empty Table.
with MyTable do
begin
Active := False;
DatabaseName := "";
TableName := "123.dbf";
TableType := dbase;
EmptyTable;
end;
tns (2001-12-18 13:24:00) [11]есть функция стандартная функция Empty Table.
with MyTable do
begin
Active := False;
DatabaseName := "";
TableName := "123.dbf";
TableType := dbase;
EmptyTable;
end;
Laimer (2001-12-18 12:11:00) [12]Спасибо
panov (2001-12-18 11:58:00) [13]Тогда только в цикле
while not Table1.Eof do
begin
Table1.Delete;
end;
Laimer (2001-12-18 11:52:00) [14]У меня используется там Ttable, как с ним можно эт провернуть
panov.а за ответ спасибо тоже пригодиться))
panov (2001-12-18 11:48:00) [15]Query1.Sql.Text := "DELETE FROM mytable";
Query1.Execute;