Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 12:53   #1
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию Удаление нескольких записей из БД

Здравсвуйте)
Пытаюсь удалить из БД несколько записей, имеющих одинаковый номер.
Код:
for i:=1 to Form1.ADOTable10.RecordCount-1 do
begin
     if Form1.ADOTable10.Fields[0].AsString=Edit1.Text then
     Form1.ADOTable10.Delete;
     Form1.ADOTable10.Next;
end;
Но что-то у меня не получается, удаляюстя не все нужные записи) Подскажите, как это лучше сделать)) Спасибо)
a_n_n_a вне форума Ответить с цитированием
Старый 22.04.2011, 13:03   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
for i:=1 to Form1.ADOTable10.RecordCount-1 do
begin
     if Form1.ADOTable10.Fields[0].AsString=Edit1.Text then
     Form1.ADOTable10.Delete else
     Form1.ADOTable10.Next;
end;
А вообще-то так
Код:
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('DELETE FROM TABLENAME  WHERE (FIELD = "'+Edit1.text+'")');
ADOQuery.ExecSql;

Последний раз редактировалось _SERGEYX_; 22.04.2011 в 13:07.
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.04.2011, 14:15   #3
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

А можно это не через запрос сделать как-нибудь?
a_n_n_a вне форума Ответить с цитированием
Старый 22.04.2011, 14:36   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

мне категорически непонятно Ваше нежелание использовать запросы (ведь это мало того, что избавляет от цикла, так ещё намного короче, надёжнее и, главное, быстро и эффективно решает Вашу задачу.
Ну, представьте, у Вас в таблице 100 тысяч записей. А поле с нужным значением (которое нужно удалить у 1-й, 100-й и 999тысячной записи - ну, т.е. будет удалено всего три записи.) Так вот, мало того, что ваш цикл вытянет все данные на клиента, все 100 000 записей, так программа их будет по одной перебирать, сравнивать значение и удалять нужные.. 100 000 записей будет проверено в цикле... оператор пока успеет сходить пообедать и чай попить...
А можно сказать серверу - ну-ка, давай, удали у себя там внутри записи, которые отвечают условию. И он это сделает настолько быстро - насколько это позволяют условия доступа его (сервера) к собственным внутренним структурам данных!


впрочем, воля Ваша..
Цитата:
Но что-то у меня не получается, удаляюстя не все нужные записи) Подскажите, как это лучше сделать)) Спасибо
попробуйте или цикл крутить в обратную сторону:
Код:
ADOTable10.Last;
for i:=Form1.ADOTable10.RecordCount-1 downto 0 do
begin
     if Form1.ADOTable10.Fields[0].AsString=Edit1.Text then
         Form1.ADOTable10.Delete
     else
         Form1.ADOTable10.Prev;
end;
или даже просто так сделать:
Код:
ADOTable10.First;
while Not Form1.ADOTable10.Eof do
     if Form1.ADOTable10.Fields[0].AsString=Edit1.Text then
         Form1.ADOTable10.Delete
     else
         Form1.ADOTable10.Next;
end;
p.s. а чем первый вариант кода от _SERGEYX_ не устроил...

Последний раз редактировалось Serge_Bliznykov; 22.04.2011 в 14:46.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2011, 02:44   #5
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Большое спасибо)
a_n_n_a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка записей в промежутке нескольких минут ssdm SQL, базы данных 4 29.01.2010 15:47
Чтение нескольких записей в TList ? spamer Общие вопросы Delphi 10 30.10.2009 17:07
Удаление нескольких записей Hobbit_88 БД в Delphi 5 23.04.2009 17:18
добавления нескольких записей в MS Acces opel.omega БД в Delphi 276 27.12.2008 09:22
Поиск нескольких записей VenMaster БД в Delphi 1 14.06.2008 22:48