![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 10
|
![]()
Всем доброго времени, Опрос на наличие я воде бы освоил, на поиск двойников тож не проблема, это всё в стандартных опросах есть. Вот теперь встала проблема . Надо пробежаться по полю, найти двойников, и второе (или если есть 3-е) значение удалить, причём удалить всю строку, предварительно скопировав в другую таблицу. Вроде просто, но вот для бронепоезда не под силу пока, мож разберусь со временем. Заранее спасибо.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
вижу, что ответов нет...
поэтому попытаюсь хоть чем-то помочь... во-первых, где пример таблицы? (и далеко не всё однозначно, кого считать двойником) во-вторых, что конкретно не получается, где перебор таблицы? На какое событие Вы хотите повесить обработку? На кнопку? Так начните с того, что поместите кнопку и назначьте ей обработчик. в-третьих, в какую таблицу и, главное, ЗАЧЕМ, Вам сохранять удаляемые строки? |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 10
|
![]()
Ой как класно, кто то есть живой, спасибо за пояснения, постараюсь всё объяснить. Сразу скажу что с кнопками я не умею, ещё не вошебник, путём долгих проб и ошибок был создан опрос "UPDATE Tab2 INNER JOIN [Tab1] ON Tab2.Feld11 = [Tab1].Feld6 SET Tab2.Feld4 = [Tab1].Feld4
WHERE ((([Tab1].Feld4)<>[Tab2].[Feld4]));" где feld это поле, Tab1-2 название таблиц, исходник и то что должно получиться. В данном случае происходит изменение количества, по EAN. Для того чтоб не рытся пару лет в таблице в поиске двойных значений EAN, ну и соответственно того что к нему привязано, хотелось-бы создать "опрос" который всё это сделает за секунды "SELECT First([Tab2].[Feld2]) AS [Feld2 Feld], Count([Tab2].[Feld2]) AS AnzahlVonDuplikaten FROM [Tab2] GROUP BY [Tab2].[Feld2] HAVING (((Count([Tab2].[Feld2]))>1));" в данном случае опрос переписывает таблицу на саму себя, оставляя 2 поля, с EAN и количеством дубликатов, т.к. в нек. случаях их доходит до 5, ошибки в переписывании таблиц. Ну и не много о моём умении пользоваться Access; на уровне колхозного самовара, даже не чайника; таблицы ввожу методом импорта, (вернее одну таб., исходник с новым количеством) опрос сохранён в аксесе, два раза на левую мышь, и всё готово. Ну потом экспорт полученой таблицы как текст. файлик. Заранее Спасибо за помощь. Образец таблицы, прикрепил. EAN это второе поле PS скопировать двойные в отдельную таблицу было бы не плохо для дальнейшей отчистки мусора с сервера, их там тож не меньше, только с разными атрибутами, а с помощью таблицы ошибок их можно стереть по быстрому Последний раз редактировалось vitaverde; 22.02.2013 в 02:20. Причина: ошибка |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
![]()
Без файла базы данных - тяжело...
0. СДЕЛАЙТЕ КОПИЮ БАЗЫ!!! 1. Добавьте в таблицу поле "Номер" типа счётчик. 2. Пусть Ваш запрос, который ищет повторяющиеся записи, называется "ЗапросПовторовДанные". Создайте запрос "ЗапросПовторовНомера" путём объединения таблицы с данными и "ЗапросПовторовДанные" с тем, чтобы вывести значения поля "Номер" для повторяющихся данных. 3. В пределах каждой группы повторяющихся записей в "ЗапросПовторовНомера" найдите минимальные значения поля "Номер" (групповые операции, функция Min) - "ЗапросПовторовНомераMin". 4. Объедините "ЗапросПовторовНомера" с "ЗапросПовторовНомераMin" так, чтобы узнать номера всех повторяющихся записей, кроме записей из "ЗапросПовторовНомераMin" и запишите их в таблицу дубликатов (запрос на добавление записей) - "ЗапросПовторовУдалить". 5. Используя подчинённый запрос и предложение IN в поле "Условие отбора" в конструкторе запроса: IN (SELECT Номер FROM ЗапросПовторовУдалить) отберите из таблицы с данными только уже сохранённые дубликаты и преобразуйте этот запрос в запрос на удаление. Не забудьте выполнить пункт №0.
Окупант, руки прочь от Украины!!! Слава Героям!
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 10
|
![]()
Казан кипит, но попробую, спасибо. База данных это .accdb файл?? Попробую соэдам, и если совсем тяжко будет прийду снова. Спасибо.
ЗЫ Вот только не знаю, у Вас русский офис, могут проблемки возникнуть с немецким, с ангельским нет, а вот немцы... они противные Последний раз редактировалось vitaverde; 27.02.2013 в 01:09. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
![]()
Да, accdb - это файл базы данных.
Окупант, руки прочь от Украины!!! Слава Героям!
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 136
|
![]()
Нет - файл базы данных mdb
![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
![]()
Реляционная база данных - это любая таблица (или несколько связанных либо несвязанных таблиц), даже на бумаге. В электронном виде это может быть как .mdb, accdb, так и .xls, .txt и куча других форматов (расширений), данные в которых упорядочены особым - табличным образом...
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 136
|
![]()
Я не ошибаюсь - я шучу. Именно поэтому смайлик и нарисовал. А также тонко намекаю на то, что лучше выкладывать пример в mdb.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двойные интегралы | Sanlex | Помощь студентам | 0 | 29.12.2012 01:38 |
Двойные интегралы | cudri | Помощь студентам | 3 | 15.12.2011 21:43 |
двойные пробелы | dronchik2010 | Помощь студентам | 0 | 11.12.2011 12:48 |
C++ Двойные массивы | KrivieRuki | Помощь студентам | 5 | 26.10.2011 07:09 |
Двойные темы | Ulex | О форуме и сайтах клуба | 1 | 23.12.2008 00:59 |