powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить дубликаты в DBF
14 сообщений из 14, страница 1 из 1
Как удалить дубликаты в DBF
    #39083215
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как удалить дубликаты из DBF?
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083227
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант с distinct выдает результат без дублей, но в файле DBF они остаются
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083232
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После distinct записать результат на место исходной DBF
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083277
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Как то можно сделать запросом или в Delphi цикл по записям?
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083292
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем тут дельфи?
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083324
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пиши подробнее. Что и как ты делаешь и как часто это надо.

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


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

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

Если DBF создаешь ты сам, то фильтруй сам при заполнении. Т.е. не пиши повторы чтобы потом не удалять.
Или второй вариант: пиши во временную MyTemp.DBF, затем из нее
Код: sql
1.
select distinct * from MyTemp into table MyTable
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39083452
nikompвариант с distinct выдает результат без дублей, но в файле DBF они остаютсяЕсли используется distinct, то речь идти может только о select distinct. Но запрос select никогда, нигде и ничего не изменял и не изменяет. Для изменений есть Update.
...
Рейтинг: 0 / 0
Как удалить дубликаты в DBF
    #39086355
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В журнале 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
Как удалить дубликаты в DBF
    #39089055
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я дубли отлавливаю так:
Код: 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
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить дубликаты в DBF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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