Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как просмотреть список удаленных записей / 11 сообщений из 11, страница 1 из 1
29.08.2009, 14:43
    #36169102
Vady
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
Добрый день!
Допустим, удалил некоторые записи командой DELETE, в FoxPro они физически не удаляются. Возникает вопрос: как сделать отбор именно удаленных записей для просмотра и как впоследствии при необходимости восстановить их?
...
Рейтинг: 0 / 0
29.08.2009, 16:57
    #36169166
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
Deleted()
...
Рейтинг: 0 / 0
29.08.2009, 16:58
    #36169167
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
Recall()
...
Рейтинг: 0 / 0
29.08.2009, 17:04
    #36169173
Vady
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
А конкретно SQL-запросом как?
...
Рейтинг: 0 / 0
29.08.2009, 17:46
    #36169193
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
В принципе, это возможно такой командой

Код: plaintext
1.
2.
3.
SET DELETED OFF
SELECT * FROM MyTable INTO CURSOR MyCursor NOFILTER WHERE Deleted() = .T.
SET DELETED ON

Однако сама постановка вопроса говорит о том, что вы где-то серьезно ошиблись в проектировании приложения. Удаленные записи не должны восстанавливаться. "Умерла, так умерла". Физически они удаляются последующей командой PACK, которая дается раз в неделю/месяц/год администратором базы данных в зависимости от интенсивности удаления записей в вашем приложении.

Да, понятно, вы начнете рассказывать сказки про то, что пользователь ошибся, произошел сбой и т.д. и т.п. Это все понятно, но, тем не менее, не является оправданием.

Проблема не в том, что это физически невозможно, а в том, что, как правило, удаляется не отдельные записи в отдельной таблице, а набор взаимосвязанных записей во множестве таблиц. Причем это все еще сопровождается различными расчетами, результат которых записывается в самые разные таблицы.

Ну, например, удаление записи о приеме товара на склад должно вызвать удаление записей из таблиц документов и строк документов. А также изменить доступный остаток в карточке товара. Хотите восстановить документ? Так вам придется озаботится поиском всех связанных записей и пересчетом остатков. Оно вам надо? Гораздо проще во всех смыслах завести документ заново.
...
Рейтинг: 0 / 0
29.08.2009, 18:03
    #36169199
Vady
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
ВладимирМ, а оправдываться тут нечему, т.к. пишу приложение под базу, сделанную под старую программу, написанную не мной.
За ответ спасибо!
...
Рейтинг: 0 / 0
29.08.2009, 18:35
    #36169214
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
VadyА конкретно SQL-запросом как?
А без SQL-запроса вы не умеете ? :)
Код: plaintext
1.
SELECT MyTable
COPY TO SomeTable FOR DELETED()
...
Рейтинг: 0 / 0
29.08.2009, 18:57
    #36169222
Vady
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
reware, мне вполне достаточно того ответа:
Код: plaintext
SELECT * FROM MyTable WHERE Deleted() = .T.
т.к. не всегда понадобится выбрать все удаленные записи.
...
Рейтинг: 0 / 0
29.08.2009, 20:08
    #36169244
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
Vadyreware, мне вполне достаточно того ответа:
Код: plaintext
SELECT * FROM MyTable WHERE Deleted() = .T.
т.к. не всегда понадобится выбрать все удаленные записи.

Вы удивитесь, но условие в FOR в команде COPY абсолютно совпадает с условием WHERE в команде SELECT.
...
Рейтинг: 0 / 0
30.08.2009, 12:45
    #36169472
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
rewareVadyА конкретно SQL-запросом как?
А без SQL-запроса вы не умеете ? :)
Код: plaintext
1.
SELECT MyTable
COPY TO SomeTable FOR DELETED()

Есть один нюанс. COPY TO физически создает таблицу на диске. И для ее удаления надо будет удалять именно файл с диска. Команда Select-SQL может создать курсор или массив. Т.е. либо физически файл на диске создан не будет, либо он будет удален автоматически в момент закрытия курсора.

Кроме того, COPY TO учитывает все наложенные ограничения на таблицу. Т.е. например, если есть фильтр SET FILTER, то COPY TO выгрузит данные с учетом этого фильтра. А Select-SQL подобный фильтр проигнорирует.

Впрочем, что именно использовать зависит от задачи.
...
Рейтинг: 0 / 0
30.08.2009, 22:26
    #36169729
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как просмотреть список удаленных записей
reware,

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


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