Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизПроблема при удалении данных из таблицы Найти похожие ветки
← →
Jet © (2004-05-31 16:51) [0]Есть код:
--if (Form2.temp.RecordCount > 0 ) then
begin
Form2.temp.First;
for i := 1 to Form2.temp.RecordCount do
begin
Form2.temp.Delete;
Form2.temp.Next;
end;
end;
--
После выполнения пишет, что кол-во записей = 0, но в DB-viewere
показывает все записи, но только помеченные для удаления и физический размер файла прежний.
Как реально удалить записи из таблицы?
← →
Vlad © (2004-05-31 16:52) [1]
> Jet © (31.05.04 16:51)
DbiPackTable
← →
Vlad © (2004-05-31 16:53) [2]
> for i := 1 to Form2.temp.RecordCount do
> begin
> Form2.temp.Delete;
> Form2.temp.Next;
> end;
Так ты через одну удаляешь
а вот так все:
while not Form2.temp.Eof do Form2.temp.Delete
← →
YurikGL © (2004-05-31 17:10) [3]if (Form2.temp.RecordCount > 0 ) then
repeat
Form2.temp.Delete;
until Form2.temp.eof
← →
Sandman25 © (2004-05-31 17:12) [4][3] YurikGL © (31.05.04 17:10)
Тогда уже либо
for I := 1 to RecordCount do
Delete;
либо
while not Eof do
Delete
← →
Jet © (2004-05-31 17:17) [5]Да delete не срабатывает, я ведь описал выше. А next забыл здесь стереть в проге без нее.
--
После выполнения пишет, что кол-во записей = 0, но в DB-viewere
показывает все записи, но только помеченные для удаления и физический размер файла прежний.
Как реально (физически) удалить записи из таблицы?
← →
Anatoly Podgoretsky © (2004-05-31 17:21) [6]А совет [1] не помог, а другого не будет, это единственный по укаковке, кроме персоздания таблиц с нуля.
← →
Vlad © (2004-05-31 17:23) [7]
> Jet © (31.05.04 17:17) [5]
Delete срабатывает.
Если ты не знаком с работой DBF - так и скажи.
Записи не удаляются физически, они только помечаются к удалению.
Чтобы удалить их физически, нужно сделать упаковку таблицы.
Как ? Читай Vlad © (31.05.04 16:52) [1]
← →
YurikGL © (2004-05-31 17:31) [8]Vlad © (31.05.04 16:53) [2]
Через одну, он записи не удаляет, просто когда курсор доходит до конца, он удаляет каждый раз последнюю запись.
← →
Vlad © (2004-05-31 17:35) [9]
> YurikGL © (31.05.04 17:31) [8]
Когда доходит до конца, свойство Eof принимает значение true и цикл прекращается
← →
YurikGL © (2004-05-31 17:37) [10]
> > for i := 1 to Form2.temp.RecordCount do
> > begin
> > Form2.temp.Delete;
> > Form2.temp.Next;
> > end;
И где здесь EOF?
:)
← →
Anatoly Podgoretsky © (2004-05-31 17:40) [11]YurikGL © (31.05.04 17:37) [10]
EOF здесь не нужен, могут быть конечно другие непрятности при работе в сети.
← →
Курдль © (2004-05-31 17:42) [12]А нехило бы объяснить, что такое Form2.temp!
И какая конечная цель?
Судя по декларации "dBase FoxPro" temp может быть TTable.
А судя по for i := 1 to Form2.temp.RecordCount do цель - очистка таблицы. Так может быть совершитьForm2.temp.EmptyTable
?
← →
Vlad © (2004-05-31 17:43) [13]
> YurikGL © (31.05.04 17:37) [10]
Если имеется ввиду это, то тут по-любому записи будут удаляться через одну. До тех пор пока не Eof, а далее в обратном порядке.
← →
Anatoly Podgoretsky © (2004-05-31 17:49) [14]Курдль © (31.05.04 17:42) [12]
Недостаточно информации, что бы это советовать, может стоять фильтр. Но если действительно надо очистить таблицу, то это лучший метод, конечно если сделать предположение, что это БДЕ, пока ни в одной его ветке нет информации о движке.
Vlad © (31.05.04 17:43) [13]
Не будут он же написал, что привел не тот код и мало еще чего он нам не сказал.
← →
YurikGL © (2004-05-31 18:05) [15]
> Как реально (физически) удалить записи из таблицы?
SQL - коммандой.
← →
Jet © (2004-05-31 18:13) [16]BDE.
temp - таблица
--
emptytable - доступ не эксклюзивен, не поможет
Как я понял нужно сдлеать упаковку для удаления помеченных записей?
← →
Anatoly Podgoretsky © (2004-05-31 21:26) [17]YurikGL © (31.05.04 18:05) [15]
Не то
Jet © (31.05.04 18:13) [16]
Так для упаковки тоже нужен монопольный доступ, кроме того если ты хочишь очистить всю таблицу, то emptytable оптимальнее. Результат пустая таблица, почти мгновенно, по крайней мере глазами не заметишь.
← →
Jet © (2004-05-31 22:17) [18]Anatoly Podgoretsky ©
--
А можно перед очисткой включить эксклюзивный режим, очистить таблицу, а потом выключить его?
← →
Anatoly Podgoretsky © (2004-05-31 22:24) [19]Так и делают
← →
Jet © (2004-05-31 22:27) [20]Всем спасибо, с утра попробую.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.056 c