![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
![]()
В таблице имеется поле nomer. Много записей с одинаковым значением в поле nomer. Я удаляю записи. Как удалить сразу две записи с одинаковым значением в поле nomer, если таких записей во всей таблице осталось не белее 2-ух?
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
а сколько их должно остаться после удаления?!
и Вы хотите удалять повторы только одного номера (ну, например, где nomer = "25") или всё повторяющиеся номера? |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
понятно. ну очень навороченный алгоритм удаления ;-(( а понял, что Вы хотите, не не понял, зачем...
впрочем, рекомендую такой способ: Код:
p.s. молодец, что проект выложил. да ещё и со своим данными. Я точно не стал бы писать код полностью, если бы не было проекта и таблицы! :-)) |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
![]()
Можно попробовать изменить обработчик нажатия кнопки "Удалить" в вашем проекте
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
SERG1980 - а что, кратко и по делу! мне понравилось!! :-)
единственное, я бы вместо цикла for i :=1 to adotable1.RecordCount использовал бы: adotable1.DeleteRecords(arFiltered) ; |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
![]()
только вот одна проблема с кодом - курсор в таблице перескакивает на первую запись! Я пытаюсь удалить не первую, а, например, вторую или десятую, а удаляется все время только первая )))))))))
Это, вроде, из-за adotable1.Filtered. Как избавится от такого нежелательного эффекта?)))) Цитата:
![]()
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 17.08.2008 в 16:07. |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Roof запоминайте позицию перед фильтрацией, потом возращайтесь на неё.
если "Код" - уникальное поле - то запоминайте его, потом AdoTable1.Locate(..) или через BookMark... что интересно, попробуйте мой первоначальный вариант с AdoQuery - там вроде этой проблемы нет :-))) |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
![]()
Привет, Roof.
Я когда-то решал подобную задачу, только для 3 элементов. Поскольку я не спец в БД я ее решил по наглому - примерно так (иллюстрация на основе твоих исходников). Код:
ЗЫ2: Для маленькой таблички этот метод - то что надо. Ну а если захочешь применять для чего-то более или менее грандиозного - лучше делай как Serge_Bliznykov. ![]() найти и перепрятать. Последний раз редактировалось Minimus; 17.08.2008 в 23:59. Причина: Добавил комментарии |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
![]()
2 Serge_Bliznykov - Тебе вообще Огромное спасибо ))))) твой код безупречно работает)))) Я, правда, еще не все в нем понял
![]() А вот с примером 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 |