|
Delete??? Как это работает?
|
|||
---|---|---|---|
#18+
Здравствуйте! У меня есть проблема, ниже я попытаюсь изложить её суть. Я работаю в 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 на навигаторе? С уважением Руслан. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 20:22 |
|
Delete??? Как это работает?
|
|||
---|---|---|---|
#18+
Смотри в хелпе 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 особо не полазишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 22:19 |
|
Delete??? Как это работает?
|
|||
---|---|---|---|
#18+
При удалении командой DELETE записть только помечается , как удаленная. Физическое удаление записей из файла происходит при выполнении операции PACK (в монопольном режиме). Однако, не надо злоупотреблять этим - достаточно паковать таблицу раз в месяц (неделю), в зависимости от интенсивности работы с ней. Для того, чтобы не видеть удаленные записи, в программе нужно установить SET DELETE ON . Учти, что при этом проблемы уникальности ключей останутся в силе, т.к. запись все же существует. Рецепт - см. постинг NNN насчет фильтра в индексе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 10:12 |
|
Delete??? Как это работает?
|
|||
---|---|---|---|
#18+
При удалении запись помечается как удаленная и только после команды 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 ну или что то похожее ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 10:17 |
|
|
start [/forum/topic.php?fid=41&fpage=425&tid=1598383]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 173ms |
0 / 0 |