powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Delete??? Как это работает?
4 сообщений из 4, страница 1 из 1
Delete??? Как это работает?
    #32121552
--Руслан--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
У меня есть проблема, ниже я попытаюсь изложить её суть.
Я работаю в Visual FOX PRO V7.0. Создаю базу данных, потом создаю в ней таблицу. Потом при помощи Form Wizard-а создаю простую форму, на форме отображаются таблица и навигатор по таблице. Если добавить данные (при помощи панели НАВИГАТОР) – данные добавляются, если их потом редактировать – редактируются, а вот проблема с удалением! Удаляю – они вроде удаляются, т.е. навигатор их игнорирует, не отображает ни как…, а на самом деле записи в таблице остаются!!! Это видно если в Project Manager (закладка DATA) курсор поставить на имя таблицы и нажать кнопку Browse. Открывается таблица и там эти данные легко видеть, правда, напротив, вроде как уже несуществующей, записи (в левой части) отображается чёрный прямоугольник.
Например:
- Добавляю запись с ID 1
- Удаляю запись с ID 1
- Если я пытаюсь потом опять добавить запись с ID 1, то вылетает ошибка - Failed to update table:Unique index violation.
Как мне сделать так чтоб из таблицы эти записи удалялись по нажатию кнопки DELETE на навигаторе?
С уважением Руслан.
...
Рейтинг: 0 / 0
Delete??? Как это работает?
    #32121584
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри в хелпе DELETE, RECALL, SET DELETED, PACK.

> Если я пытаюсь потом опять добавить запись с ID 1, то вылетает ошибка - Failed to update table:Unique index violation.

В таблице поставь фильтр на индекс FOR !DELETED() и создай индекс
INDEX on DELETED() TAG DELETED(). Это описано в разделе хелпа по оптимизации (попробуй поиск по 'optimizing'). Сейчас подробнее не могу, дома фокса с хелпом нет, а инет загружен, по msdn.microsoft.com особо не полазишь.
...
Рейтинг: 0 / 0
Delete??? Как это работает?
    #32121746
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При удалении командой DELETE записть только помечается , как удаленная.

Физическое удаление записей из файла происходит при выполнении операции PACK (в монопольном режиме). Однако, не надо злоупотреблять этим - достаточно паковать таблицу раз в месяц (неделю), в зависимости от интенсивности работы с ней.

Для того, чтобы не видеть удаленные записи, в программе нужно установить SET DELETE ON . Учти, что при этом проблемы уникальности ключей останутся в силе, т.к. запись все же существует.

Рецепт - см. постинг NNN насчет фильтра в индексе.
...
Рейтинг: 0 / 0
Delete??? Как это работает?
    #32121758
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При удалении запись помечается как удаленная и только после команды PACK удаляется из таблицы. А что касается
<Failed to update table:Unique index violation.>
скорее всего индекс уникальный и так как после команды DELETE запись не удаляется из таблицы, то до команды PACK нельзя добавить запись с таким же уникальным ключом.

Можно сделать так:

LOCATE FOR İD = 1
İF FOUND()
RECALL
REPLACE [FİELD1] WITH '', [FIELD2] WITH 0
ELSE
APPEND BLANK
REPLACE ID WITH [NUM]
ENDİF

ну или что то похожее
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Delete??? Как это работает?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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