Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.052 c
8-1080043109
MaestroV
2004-03-23 14:58
2004.05.30
Свойства TPen


8-1079695681
Sauron_ua
2004-03-19 14:28
2004.05.30
ПОМОГИТЕ!!!! DirectX Texture


4-1081593816
Kerk
2004-04-10 14:43
2004.05.30
Drag&amp;Dock


3-1083492155
SH
2004-05-02 14:02
2004.05.30
Microsoft FoxPro 6-8 -> Delphi 7


9-1075106393
Oyster
2004-01-26 11:39
2004.05.30
Как сделать взрыв





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский