Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

Проблема при удалении данных из таблицы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
14-1086899285
KnowledgeSeeker
2004-06-11 00:28
2004.06.27
Память под приложение.


1-1087071297
Roland88
2004-06-13 00:14
2004.06.27
Бэкап реестра


3-1085748952
S@shka
2004-05-28 16:55
2004.06.27
FLOAT NUMERIC или INTEGER


1-1086697688
riko
2004-06-08 16:28
2004.06.27
Подскажите пожалуйста: Treeview&TreeNode + array


8-1081334219
ЁПРСТ
2004-04-07 14:36
2004.06.27
Как нарисовать на форме текст без фона?