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

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

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

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

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

индексы с условием по делетед и нот. делетед оптимизируются в 9-й версии,
я это уже показывал и ссылка в хелпе есть на это
(ставим условие в начало выражения составного индекса)
...
Рейтинг: 0 / 0
Проблема с удалением записи
    #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
Проблема с удалением записи
    #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
Проблема с удалением записи
    #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
Проблема с удалением записи
    #35802896
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, интересно, что-то с хелпом не так, действительно для Not Rushmore работает, а наоборот нет
...
Рейтинг: 0 / 0
Проблема с удалением записи
    #35802897
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
Member

Вы мне открыли тайну?
так что про случай с сет делетед он?
...
Рейтинг: 0 / 0
Проблема с удалением записи
    #35802900
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, но Ваша упертость с кулинаром не имеет границ
...
Рейтинг: 0 / 0
Проблема с удалением записи
    #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
Проблема с удалением записи
    #35802930
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саньк, пойду домой время уже пол десятого.
...
Рейтинг: 0 / 0
Проблема с удалением записи
    #35803160
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mila mavPaulWist, когда я хочу восстановить удаленные данные, т.е пользователь их должен просто записать по-новому возникают проблемы типа сообщения "Ошибки при выполнении многошаговой процедуры", таже ситуация с удалением еще раз введенных данных. т.е получается что мы хотим вставить новую запись, а точно такая же уже есть в БД. Т.к она помечена, как удаленная, пользователь не знает что аналогичные данные уже есть в БД.

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


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