0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
1 | |
Удалить дубли документов19.07.2010, 10:44. Показов 30863. Ответов 28
Метки нет (Все метки)
Всем привет, накосячил с агентом. Результат: продублировались все документы в базе, как это исправить, тоесть удалить все дубли?
0
|
19.07.2010, 10:44 | |
Ответы с готовыми решениями:
28
Удалить дубли из списка Как удалить дубли из БД? Как удалить дубли Удалить дубли из массива |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
19.07.2010, 10:46 | 2 |
Легко вычислить по автору и дате создания.
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 10:48 | 3 |
Сообщение от Medevic
Поэтому дата создания у них одинаковая
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
19.07.2010, 10:55 | 4 |
Я про это и говорю. Поиском или через представление по дате создания легко найти все дубли.
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 11:00 | 5 |
Сообщение от Medevic
0
|
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
|
|
19.07.2010, 11:01 | 6 |
Created, Modified, Modified by...
Добавлено: GetModifiedDocuments method, @Created, @Modified и др.
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 11:08 | 7 |
Сделал вью по всем документам с категоризированой колонкой @text(@Created)+" - "+@DocChildren.
Получилось на некоторые даты-время по несколько десятов документов причем разных форм.
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
19.07.2010, 11:10 | 8 |
Даты могут отличаться на секунды/минуты.
Надо брать документы за период. SELECT (@Created > [Дата - 5мин]) & (@Created < [Дата + 5мин])
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 11:11 | 9 |
Код
Set dc=dbd.AllDocuments Call dbd.CreateCopy("",DirPath(0)+dbd.FileName) Set doc=dc.GetFirstDocument While Not doc Is Nothyng Call doc.CopyToDatabase(dbd) Set doc=dc.GetNextDocument(doc) Wend
0
|
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
|
|
19.07.2010, 11:11 | 10 |
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 11:24 | 11 |
Может как то в цикле все документы сравнивать?
Цикл по всем дкументам текущий сравниваем со следущими, если находится идентичный то удаляем его. ТОлько вот как сравнивать? UPD: По размеру? Код
Set dc=db.AllDocuments Set docc=dc.GetFirstDocument While Not docc Is Nothyng Set docs=dc.GetNextDocument(docc) While Not docs Is Nothyng If docc.Size=docs.Size Then set tmpdoc=dc.GetPreDocument(docs) Call docs.remove(true) set docs=tmpdoc End If Set docs=dc.GetNextDocument(docs) Wend Set docc=dc.GetNextDocument(docc) Wend
0
|
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
|
|
19.07.2010, 11:40 | 12 |
Что-то я так и не понял, чем не покатил поиск по created, modified?
В принципе у документов-копий created и modified должны совпадать до секунды - можно поплясать от этого.
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 11:51 | 13 |
Сообщение от alik86
0
|
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
|
|
19.07.2010, 12:02 | 14 |
Создайте вид с формулой отбора SELECT ((Form = "Forma") & (@Created = @Modified)), он выдаст вам документы по нужной форме, которые были скопированы программно.
В общем случае при создании документа "ручками" created - это момент создания, а modified - момент сохранения, т.е. "modified - created = время заполнения полей документа". При программном копировании для документа эти моменты совпадают. Как-то так. P.S. Только не забывайте про "7 раз отмерь - один раз отрежь" - перепроверьте, ибо я выдал лишь своё предположение. :ya_lamo:
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 12:17 | 15 |
Сообщение от alik86
Сделал представление по указанной выше формуле, по этой форме было примерно 1300 доков сейчас по ней 2600, отображается только 20, какие еще есть варианты? Юзеры скоро загрызут.... :ya_lamo:
0
|
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
|
|
19.07.2010, 12:26 | 16 |
Отсортируй представление по общему параметру, и удаляй каждый первый(второй) документ
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 12:27 | 17 |
Сообщение от Darker
0
|
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
|
|
19.07.2010, 12:31 | 18 |
Код
lead=true set doc=view.getfirstdocument while not doc is nothyng lead=not lead if lead then doc.ToRemove="1":call doc.save(true,False) set doc=view.getnextdocument(doc) wend set col=db.Search({ToRemove="1"},Nothyng,0) col.RemoveAll(1)
0
|
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
|
|
19.07.2010, 12:34 | 19 |
Высказывание: Последовательность "эксперимент -> *цензура*..ц -> чтение документации" даже из толковых админов/программеров тяжело выбить.
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
19.07.2010, 12:41 | 20 |
Сообщение от alik86
0
|
19.07.2010, 12:41 | |
19.07.2010, 12:41 | |
Помогаю со студенческими работами здесь
20
Удалить дубли, но не сортировать Удалить дубли в списке Найти дубли в массиве (не удалить!) Sqlite не могу удалить дубли Как удалить дубли страниц Удалить дубли слов в строках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |