|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.08.2008, 00:15 | #1 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
Удалить 2 записи. ADO...
В таблице имеется поле nomer. Много записей с одинаковым значением в поле nomer. Я удаляю записи. Как удалить сразу две записи с одинаковым значением в поле nomer, если таких записей во всей таблице осталось не белее 2-ух?
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
16.08.2008, 01:06 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а сколько их должно остаться после удаления?!
и Вы хотите удалять повторы только одного номера (ну, например, где nomer = "25") или всё повторяющиеся номера? |
16.08.2008, 01:30 | #3 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
Если записей с одинаковым значением в поле nomer осталось больше 2-ух, то удаляю только одну запись, которую выбрал. Если же их осталось только две во всей таблице ( с одинаковым значением в поле nomer ), то удаляю их вдвоем сразу.
Например, записи в таблице: 1) 25 2) 25 3) 25 4) 89 5) 89 6) 89 7) 95 8)95 9) 95 Выбрал я запись2 и нажал удалить. Остались записи 1,3,4,5,6,7,8,9 Выбрал я запись5 и нажал удалить. Остались записи 1,3,4,6,7,8,9 Выбрал я запись1 и нажал удалить. Остались записи 4,6,7,8,9 - т.е. с одинаковым значением в поле nomer (25) осталось всего две записи. Мы их обе сразу и удаляем Вот уже часа три не могу сообразить никак
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 16.08.2008 в 01:37. |
16.08.2008, 09:37 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
понятно. ну очень навороченный алгоритм удаления ;-(( а понял, что Вы хотите, не не понял, зачем...
впрочем, рекомендую такой способ: Код:
p.s. молодец, что проект выложил. да ещё и со своим данными. Я точно не стал бы писать код полностью, если бы не было проекта и таблицы! :-)) |
16.08.2008, 10:09 | #5 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
Можно попробовать изменить обработчик нажатия кнопки "Удалить" в вашем проекте
Код:
|
16.08.2008, 11:34 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
SERG1980 - а что, кратко и по делу! мне понравилось!! :-)
единственное, я бы вместо цикла for i :=1 to adotable1.RecordCount использовал бы: adotable1.DeleteRecords(arFiltered) ; |
17.08.2008, 16:02 | #7 | |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
только вот одна проблема с кодом - курсор в таблице перескакивает на первую запись! Я пытаюсь удалить не первую, а, например, вторую или десятую, а удаляется все время только первая )))))))))
Это, вроде, из-за adotable1.Filtered. Как избавится от такого нежелательного эффекта?)))) Цитата:
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 17.08.2008 в 16:07. |
|
17.08.2008, 21:03 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Roof запоминайте позицию перед фильтрацией, потом возращайтесь на неё.
если "Код" - уникальное поле - то запоминайте его, потом AdoTable1.Locate(..) или через BookMark... что интересно, попробуйте мой первоначальный вариант с AdoQuery - там вроде этой проблемы нет :-))) |
17.08.2008, 21:20 | #9 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
Привет, Roof.
Я когда-то решал подобную задачу, только для 3 элементов. Поскольку я не спец в БД я ее решил по наглому - примерно так (иллюстрация на основе твоих исходников). Код:
ЗЫ2: Для маленькой таблички этот метод - то что надо. Ну а если захочешь применять для чего-то более или менее грандиозного - лучше делай как Serge_Bliznykov.
бороться и искать
найти и перепрятать. Последний раз редактировалось Minimus; 17.08.2008 в 23:59. Причина: Добавил комментарии |
18.08.2008, 20:32 | #10 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
2 Serge_Bliznykov - Тебе вообще Огромное спасибо ))))) твой код безупречно работает)))) Я, правда, еще не все в нем понял Но ты и это предусмотрел)))) расписал мне комментариев ))))) Использую именно твой код, да еще и Minimus тоже советует твой использовать )))
А вот с примером SERG1980 мне просто ради интереса разобраться до конца охота. Посмотрите, пожалуйста, вот я попытался запоминать позицию до фильтрации: Код:
2 Minimus - попробую ))))) спасибо тебе за совет ))))
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 18.08.2008 в 20:41. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите как программно удалить все записи | Worms | БД в Delphi | 3 | 04.03.2008 16:30 |
Как удалить файл | dagarik | Общие вопросы Delphi | 9 | 05.12.2007 20:25 |
Как удалить тему? | Умелец | Свободное общение | 2 | 28.03.2007 12:13 |
удалить записи в таблице Dbf. | pups | БД в Delphi | 7 | 15.12.2006 19:19 |
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить | Alar | Общие вопросы Delphi | 0 | 29.10.2006 21:36 |