Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с удалением записи / 16 сообщений из 16, страница 1 из 1
06.02.2009, 14:40
    #35801913
mila mav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Есть БД в Fox pro, для манипулирования данными из БД создано приложение в Delphi. Проблема в том, что я не могу удалить записи, т.е в приложении они удаляются, а реально в БД Fox pro нет. Открываю Fox pro нажимаю на кнопку Remove Delete Records и записи, удаленные из приложения исчезают. Как можно удалить записи из приложения, не заходя каждый раз в Fox pro?
...
Рейтинг: 0 / 0
06.02.2009, 14:53
    #35801979
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Для этого в фоксе существует команда PACK.

НО эта команда требует монопольного доступа к табличке, поэтому "упаковку" табличек производят в административной процедуре.

PS а почему мешают удаленные записи?
...
Рейтинг: 0 / 0
06.02.2009, 15:04
    #35802028
mila mav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
PaulWist, когда я хочу восстановить удаленные данные, т.е пользователь их должен просто записать по-новому возникают проблемы типа сообщения "Ошибки при выполнении многошаговой процедуры", таже ситуация с удалением еще раз введенных данных. т.е получается что мы хотим вставить новую запись, а точно такая же уже есть в БД. Т.к она помечена, как удаленная, пользователь не знает что аналогичные данные уже есть в БД.
...
Рейтинг: 0 / 0
06.02.2009, 15:06
    #35802035
mila mav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
а как можно использовать команду PACK, т.е где ее можно выполнить? Я новичок в Фоксе...
...
Рейтинг: 0 / 0
06.02.2009, 15:14
    #35802073
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
mila mavPaulWist, когда я хочу восстановить удаленные данные, т.е пользователь их должен просто записать по-новому возникают проблемы типа сообщения "Ошибки при выполнении многошаговой процедуры", таже ситуация с удалением еще раз введенных данных. т.е получается что мы хотим вставить новую запись, а точно такая же уже есть в БД. Т.к она помечена, как удаленная, пользователь не знает что аналогичные данные уже есть в БД.

Тогда надо использовать фильтрованный индекс по deleted(), правда у него есть недостаток он не используется в Rushmore, поэтому придется делать два индекса.
...
Рейтинг: 0 / 0
06.02.2009, 15:15
    #35802076
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
mila mavа как можно использовать команду PACK, т.е где ее можно выполнить? Я новичок в Фоксе...

Открыть в Windows - DataSession табличку , а в командном окне выполнить Pack
...
Рейтинг: 0 / 0
06.02.2009, 17:12
    #35802452
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
авториндекс по deleted(), правда у него есть недостаток он не используется в Rushmore

индексы с условием по делетед и нот. делетед оптимизируются в 9-й версии,
я это уже показывал и ссылка в хелпе есть на это
(ставим условие в начало выражения составного индекса)
...
Рейтинг: 0 / 0
06.02.2009, 17:59
    #35802608
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
прошелмимоавториндекс по deleted(), правда у него есть недостаток он не используется в Rushmore


Александр не надо вырывать цитату из предложения, в оригинале

авторТогда надо использовать фильтрованный индекс по deleted(), правда у него есть недостаток он не используется в Rushmore, поэтому придется делать два индекса.

Речь идёт о фильтрованном индексе, те с условием For

Код: plaintext
1.
2.
3.
4.
5.
6.
create cursor test  (f1 int)

INDEX on f1 TAG f1 FOR DELETED()

SYS( 3054 , 11 )

SELECT * FROM test where f1 =  1  INTO ARRAY arr

прошелмимо
индексы с условием по делетед и нот. делетед оптимизируются в 9-й версии,
я это уже показывал и ссылка в хелпе есть на это


Возможно у меня хелп устарел, но там написано:

авторRushmore cannot take advantage of all indexes. If you use a FOR clause in the INDEX command, Rushmore cannot use the index for optimization . For example, because it contains a FOR clause, this statement cannot be optimized, INDEX ON ORDNUM FOR DISCOUNT > 10 TAG ORDDISC.

Так же написано, что индекс с отрицанием тоже не поддерживает оптимизацию

авторSimilarly, Rushmore cannot use an index created with a NOT condition . For example, the this expression can be optimized, INDEX ON DELETED() TAG DEL, But this one cannot, INDEX ON NOT DELETED() TAG NOTDEL.


прошелмимо
(ставим условие в начало выражения составного индекса)

Не понял, про какой составной индекс идёт речь, я говорил о фильтрованном индексе.
...
Рейтинг: 0 / 0
06.02.2009, 20:15
    #35802850
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
_SCREEN.Cls()
set deleted on
create cursor test  (f1 int)

*INDEX on f1 TAG f1 FOR DELETED() 
INDEX on f1 TAG f2 FOR !DELETED()

SYS( 3054 , 11 )

SELECT * FROM test where f1 =  1  INTO ARRAY arr
return

еще раз выполняем и смотрим
...
Рейтинг: 0 / 0
06.02.2009, 20:40
    #35802877
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
_SCREEN.Cls()
set deleted off
create cursor test  (f1 int)

*INDEX on f1 TAG f1 FOR DELETED() 
INDEX on f1 TAG f2 FOR NOT DELETED()

SYS( 3054 , 11 )

SELECT * FROM test where f1 =  1  INTO ARRAY arr
return
...
Рейтинг: 0 / 0
06.02.2009, 20:56
    #35802896
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Да, интересно, что-то с хелпом не так, действительно для Not Rushmore работает, а наоборот нет
...
Рейтинг: 0 / 0
06.02.2009, 20:57
    #35802897
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
PaulWist
Member

Вы мне открыли тайну?
так что про случай с сет делетед он?
...
Рейтинг: 0 / 0
06.02.2009, 20:58
    #35802900
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Извините, но Ваша упертость с кулинаром не имеет границ
...
Рейтинг: 0 / 0
06.02.2009, 21:13
    #35802921
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
прошелмимо
так что про случай с сет делетед он?

Обратимся к хелпу

авторIn the special case that you want to exclude delete records from a query, using an index, as in the first example earlier, will speed up operations when you've set SET DELETED to ON.
...
Рейтинг: 0 / 0
06.02.2009, 21:22
    #35802930
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
Саньк, пойду домой время уже пол десятого.
...
Рейтинг: 0 / 0
07.02.2009, 04:29
    #35803160
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с удалением записи
mila mavPaulWist, когда я хочу восстановить удаленные данные, т.е пользователь их должен просто записать по-новому возникают проблемы типа сообщения "Ошибки при выполнении многошаговой процедуры", таже ситуация с удалением еще раз введенных данных. т.е получается что мы хотим вставить новую запись, а точно такая же уже есть в БД. Т.к она помечена, как удаленная, пользователь не знает что аналогичные данные уже есть в БД.

Вы определитесь хотя-бы для себя - надо только скрыть записи от глаз юзера или надо физически убрать из файла помеченные записи ? Это есть две большие разницы. В первом случае достаточно применить один из многих нехитрых приемов - SET FILTER TO !DELETED(), индекс с условием !DELETED() и пр. В этом случае записи "прячутся", но реально остаются в базе и их можно восстановить командой RECALL. Во втором случае примените команду PACK для данной таблицы. Тогда помеченные записи окончательно уйдут в мир иной. Их уже ничем не восстановишь.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с удалением записи / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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