Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить дубликаты в DBF / 14 сообщений из 14, страница 1 из 1
22.10.2015, 11:27
    #39083215
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Подскажите как удалить дубликаты из DBF?
...
Рейтинг: 0 / 0
22.10.2015, 11:33
    #39083227
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
вариант с distinct выдает результат без дублей, но в файле DBF они остаются
...
Рейтинг: 0 / 0
22.10.2015, 11:37
    #39083232
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
После distinct записать результат на место исходной DBF
...
Рейтинг: 0 / 0
22.10.2015, 11:58
    #39083277
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Dima T,
Как то можно сделать запросом или в Delphi цикл по записям?
...
Рейтинг: 0 / 0
22.10.2015, 12:06
    #39083292
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
При чем тут дельфи?
...
Рейтинг: 0 / 0
22.10.2015, 12:21
    #39083324
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Пиши подробнее. Что и как ты делаешь и как часто это надо.

Как вариант
Код: sql
1.
2.
3.
4.
select distinct * from MyTable into cursor MyCur
sele MyTable
zap in MyTable
append from dbf('MyCur')


Вариант нехороший, т.к. требует монопольного доступа
...
Рейтинг: 0 / 0
22.10.2015, 12:34
    #39083353
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Dima T,
импортирую состав изделия в DBF, в DBF должны быть только уникальные записи. DBF создается программно при каждом импорте.
расшифруйте пожалуйста последний запрос, не очень его понял
...
Рейтинг: 0 / 0
22.10.2015, 12:37
    #39083364
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
nikomp, импортируют из чего-то, а не в. Вы создаёте эту дбф или она к вам уже готовая приходит?
...
Рейтинг: 0 / 0
22.10.2015, 12:39
    #39083368
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
tanglir, из чего-то - экспортируют, DBF я создаю при каждом импорте
...
Рейтинг: 0 / 0
22.10.2015, 12:46
    #39083380
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Нет, экспортируют во что-то, а импортируют из чего-то. Впрочем, это зависит от того, с какой сторны смотреть. Я предпочитаю смотреть со стороны своего приложения, а не внешней системы.
Вот вы, например, экспортируете данные из своего приложения в дбф. Впрочем, с "точки зрения" дбф-а таки да, туда данные импортируются, но имхо это весьма бредовый подход.

Но если дбф всё-таки создаёте вы, то... ЯНХНП. Вот здесь вы пишете
nikompвариант с distinct выдает результат без дублей, но в файле DBF они остаютсяТак что вам мешает сразу выбрать данные с применением дистинкта?
...
Рейтинг: 0 / 0
22.10.2015, 12:50
    #39083389
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
tanglir правильно написал. Ладно, забыли слова экспорт/импорт

Если DBF создаешь ты сам, то фильтруй сам при заполнении. Т.е. не пиши повторы чтобы потом не удалять.
Или второй вариант: пиши во временную MyTemp.DBF, затем из нее
Код: sql
1.
select distinct * from MyTemp into table MyTable
...
Рейтинг: 0 / 0
22.10.2015, 13:18
    #39083452
Как удалить дубликаты в DBF
nikompвариант с distinct выдает результат без дублей, но в файле DBF они остаютсяЕсли используется distinct, то речь идти может только о select distinct. Но запрос select никогда, нигде и ничего не изменял и не изменяет. Для изменений есть Update.
...
Рейтинг: 0 / 0
26.10.2015, 08:09
    #39086355
foxwizard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
В журнале FoxTalk читал такую фишку.

USE test.dbf IN 0 EXCLUSIVE
*Удаляем индексы
DELETE TAG all
*Удаляем все записи
DELETE ALL
*Индексируем по тем полям, по которым должна быть уникальность записей
INDEX on field1+field2+field3 TAG tmptag UNIQUE
*Восстанавливаем записи
RECALL all
pack

Дело в том, что RECALL all, при наличии уникального индекса восстановит только одну запись ,отвечающую критериям индекса.
Ну и не забываем перед началом: Убрать все записи, помеченные на удаление.
После - убрать временный индекс и восстановить нужные.
...
Рейтинг: 0 / 0
28.10.2015, 15:48
    #39089055
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить дубликаты в DBF
Я дубли отлавливаю так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
*тест_поле - поле (или набор полей), в котором могут быть дубликаты
*тест_таблица - таблица, которой принадлежит это поле
SELECT(тест_поле);
    POLE1,  COUNT(*) AS KOLVOZAP FROM тест_таблица GROUP BY 1 HAVING COUNT(*) > 1 AND NOT DELETED();
    INTO CURSOR DUAL_NAME NOFILTER READWRITE

SELECT * FROM тест_таблица a;
    INNER JOIN DUAL_NAME ON тест_поле;
    = DUAL_NAME.POLE1
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить дубликаты в DBF / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]