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

Вниз

Удаление некоторых записей   Найти похожие ветки 

 
Demoniak ©   (2004-05-05 11:20) [0]

Надо удалить все записи содержащие подстроку "Bad" в таблице... Я делаю так, но удаляется только первая запись содержащая нужную подстроку...

  dbf.DisableControls;
  dbf.First;
  try
     while not dbf.Eof do begin
        if (pos("Bad", dbf.FieldByName("socksstat").AsString ) <> 0) then begin
           dbf.Delete;
        end;
        dbf.Next;
        application.ProcessMessages;
     end;
  finally
     dbf.EnableControls;
     dbf.First;
  end;


 
Johnmen ©   (2004-05-05 11:31) [1]

else dbf.Next;

Убрать application.ProcessMessages;


 
Sergey13 ©   (2004-05-05 11:35) [2]

Как вариант
delete from dbf_table
where socksstat like "%Bad%"


 
Demoniak ©   (2004-05-05 11:47) [3]

2 Johnmen ©  :

Вот так, тоже не работает:

  dbf.DisableControls;
  dbf.First;
  try
     while not dbf.Eof do begin
        if (pos("Bad", dbf.FieldByName("socksstat").AsString ) <> 0) then begin
           dbf.Delete;
        end else dbf.Next;
//         application.ProcessMessages;
     end;
  finally
     dbf.EnableControls;
     dbf.First;
  end;

2 Sergey13 ©  :
Не могу так сделать, т.к. я не использую BDE и компонент Query соответственно тоже....


 
Johnmen ©   (2004-05-05 11:53) [4]

>Demoniak ©   (05.05.04 11:47) [3]
>Вот так, тоже не работает:

Значит только первая запись удовлетворяет условию...


 
Demoniak ©   (2004-05-05 11:54) [5]

2 Johnmen © :

Нет )) Там видно в ДБГриде, что еще штук 20 точно с таким условием...


 
Sergey13 ©   (2004-05-05 11:55) [6]

2Demoniak ©
Посмотри на регистр символов. Может тут что.


 
Курдль ©   (2004-05-05 12:01) [7]

Выбран методически неверный способ. Нельзя одновременно двигаться по набору данных и удалять его записи. Вам дали простой и изящный метод решения проблемы в [2] - ему и следуйте.
Если уж совсем невмоготу, как хочется попользоваться методом delete, то сначала отфильтруйте весь набор данных по Вашему условию, а потом уж пройдитесь по нему и удалите все, что видно.


 
Demoniak ©   (2004-05-05 12:07) [8]

2 Sergey13 ©

Регистр такой же...

2 Курдль ©  

Я уже говорил, что НЕ могу использовать SQL запросы... А фильтровать БД - не подходит, надо чтоб ненужные записи были физически удалены...


 
sniknik ©   (2004-05-05 12:12) [9]

в dBase, FoxPro Delete не удаляет физически, и sqd не удаляет и твой метод тоже.


 
Соловьев ©   (2004-05-05 12:28) [10]


> подстроку "Bad"

у меня было такое что оператор(руки бы поотрывал) писал вместо русских символов английские и наоборот, благо выглядят одинаково. В твое ситуации надо попробовать разные комбинации букв - русских В,а и английских - B,a


 
Курдль ©   (2004-05-05 12:32) [11]


> Я уже говорил, что НЕ могу использовать SQL запросы... А
> фильтровать БД - не подходит, надо чтоб ненужные записи
> были физически удалены...

Я разве сказал "спрятать"? Я сказал: "отфильтровать и поудалять оставшиеся"!


 
Demoniak ©   (2004-05-05 13:11) [12]

Ясно) Я в общем делаю так:

  dbf.DisableControls;
  dbf.First;
  try
     while dbf.Locate("socksstat", "Bad", [loCaseInsensitive, loPartialKey]) do begin
        dbf.Delete;
        application.ProcessMessages;
     end;
  finally
     dbf.EnableControls;
     dbf.First;
  end;

Все удаляется нормально, НО!! После удаления ненужных записей, DBGrid неправильно отображает данные. А именно: скроллбар как-бы быстрее прокручивается там, где были ненужные записи ). Сложно это объяснить однако, в общем скол глючит как-то странно...


 
Demoniak ©   (2004-05-05 13:13) [13]

Например, если удаляться первые 100 записей из скажем 1000, то ползунок скроллбара вообще будет не в начале скроллбара, даже при установки активной первую запись..


 
Кщд   (2004-05-05 13:27) [14]

запакуем после удаления?

Delphi syntax

function DbiPackTable (hDb: hDBIDb; hCursor: hDBICur; pszTableName: PChar; pszDriverType: PChar; bRegenIdxs: Bool): DBIResult stdcall;

Description

DbiPackTable optimizes table space by rebuilding the table associated with hCursor and releasing any free space.


 
Demoniak ©   (2004-05-05 13:40) [15]

Все- сделал сенкс



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
14-1083720501
Думкин
2004-05-05 05:28
2004.05.30
С днем рождения! 5 мая


1-1084859875
lehich
2004-05-18 09:57
2004.05.30
чтение из тхт файла


11-1073934915
Maxim Pushkar
2004-01-12 22:15
2004.05.30
Не работает Font.Color для RichEdit?


8-1079904338
Swine
2004-03-22 00:25
2004.05.30
О гифах


14-1084284261
296321823
2004-05-11 18:04
2004.05.30
delphigfx.mastak.ru