![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ОТМЕНА последнего действия ! [D5, dBase, FoxPro]
NDR © (2002-08-02 13:56:00)надо написать процедурку! я меня получается полная фигня.
несовсем то,что нужно. а нужно вот что:
Отмена последнего действия.
Например лазил, лазил в табле и случайно что-то удалил или изменил. жмешь "отменить" . и твои последние действия (по удалению,изменению) отменяются! ну как в Excele
\ Правка \ Отменить
я незнаю как зопоминать координаты ячейки в которой произошли последние изменения. (в Excele есть координаты например A3 или B1)
the-best-officeman (2002-08-04 17:24:00) [1]хммм.... ну просто загрузили =))
с Уважением, the-best-officeman (aka NDR)
the-best-officeman (2002-08-04 17:24:00) [2]хммм.... ну просто загрузили =))
Val (2002-08-02 15:40:00) [3]Надеюсь, под этим просто подразумевается
естественно, всякий лог должен содержать дату и время операции.
А никто и не говорил, что будет работать с SQL :), поэтому "записи добавляются в конец таблицы" остается в силе.
Mike Kouzmine (2002-08-02 15:32:00) [4]Johmenу Спасибо
Johnmen (2002-08-02 15:22:00) [5]>Mike Kouzmine (02.08.02 15:02)
Если имеется в виду после коммита, то это и есть тек.версия записи.
Можно ли получить предыдущие версии записи в IB - нет...
В Oracle - можно, извратившись...
Nikolay M. (2002-08-02 15:12:00) [6]
> >Nikolay M. © (02.08.02 14:32)
> возможно, вы не поняли о чем речь, итак:
Да, я почему-то решил, что предлагается завести флажок в той таблице, которую, собственно, оперируем. Теперь дошло. Согласен, при разумной организации хранить лог можно и в одной-единственной таблице (10Х за такой длинный постинг), просто я сначала подумал, что структуры данных для откатов трех операций будут разными, поэтому логично хранить три разных лога.
Если теперь закрыть вопрос о "записи добавляются в конец таблицы", то можно считать, что мы пришли к единому мнению :)
Надеюсь, под этим просто подразумевается, что в таблице-логе существует возможность определить очередность добавления записей. Потому как SELECT * FROM Log не вернет записи в том порядке, в каком они туда были записаны (хотя может для dbf это не так?). Если разночтений больше нет, тогда будем ждать новых озарений и что думают о проблеме остальные участники форума :)
Mike Kouzmine (2002-08-02 15:11:00) [7]IB? Значит храняться
Johnmen (2002-08-02 15:09:00) [8]>Mike Kouzmine (02.08.02 15:02)
Для какой СУБД ? И что значит "запоминаются" ?
Mike Kouzmine (2002-08-02 15:02:00) [9]Johmenу. Проконсультируй. Я не утаерждаю, я спрашиваю: запоминаются изменения проишедшие с записью, которые существуют параллельно с текущей версией записи (до сбора мусора), если это так, то вопрос - можно получить программно доступ к этим вариантам?
Val (2002-08-02 14:53:00) [10]>Nikolay M. © (02.08.02 14:32)
возможно, вы не поняли о чем речь, итак:
1.последовательность действий сохраняется, т.к. записи добавляются в конец таблицы. Конечно, хоть тысячу и т.д. удалил, вам ведь, возможно, захочется их восстановить?
2. какие селекты и перестраивания(кстати у вас-то нужно знать из какой таблицы выбирать, а тут флаг-вся разница)? ведь это лог, то есть нужно идти с конца таблицы вверх, чтобы восстановить последовательность действий пользователя.
3. почему не будет физического удаления? из таблицы записи удаляются. Записи будут накапливаться в таблице логов, а как же вы хотите восстановить события иначе, не имея данных на тот момент?
4. откат в общем случае: в зависимости от флага, нужно будет выполнить обратное действие. где тут проблема?
Johnmen (2002-08-02 14:48:00) [11]>DiamondShark © (02.08.02 14:38)
Почему не надо ?
DiamondShark (2002-08-02 14:40:00) [12]
> Для чего ?
Для оформления логически связанных действий (logical unit of work) в атомарные операции
DiamondShark (2002-08-02 14:38:00) [13]
> Обоснуй...
А нету у них средств запоминать последовательность действий.
Вот только не надо про транзакции и check pointы, ладно?
Johnmen (2002-08-02 14:35:00) [14]>DiamondShark © (02.08.02 14:23)
>Какие транзакции? Да и обойтись ими не удастся не поэтому. Для
>другого они сделаны.
Для чего ?
Nikolay M. (2002-08-02 14:32:00) [15]
> Val © (02.08.02 14:22)
> а чем плох классический вариант лога: одна таблица и в ней
> кроме полей записи, поле с флагом проведеной операции над
> записью?
А последовательность действий? А если человек решит удалить 100 записей, тогда у них флажок "Удалено"? В принципе, возможно, но тогда придется перестраивать все селекты из этой таблицы, чтобы они учитывали флаги состояний. Да и физического удаления не будет - записи будут накапливаться. Опять же, как реализовать откат UPDATE и INSERT... Поэтому пока я за отдельные логовские таблицы.
> DiamondShark © (02.08.02 14:23)
> Э... Это... dBase, FoxPro. Какие транзакции?
КАЮСЬ, КАЮСЬ!!! :)))
Ну, пропустил я, какая БД. И транзакции упомянул просто к слову... :)
Ногами только не бейте!
DiamondShark (2002-08-02 14:23:00) [16]
> свойство CashedUpdates имеют также и TTable и TQuery.
Зато умеют только ApplyUpdates и CancelUpdates
А нужно именно UndoLastChange
> Конечно, грамотнее делать транзакции, Commit/Rollback, но
> вопрос задан так, что, IMHO, ими обойтись не удастся
Э... Это... dBase, FoxPro. Какие транзакции? Да и обойтись ими не удастся не поэтому. Для другого они сделаны.
Грамотнее? Хотел бы я слышать те русские слова, которыми бы вас поминали пользователи многопользовательской системы, открой вы транзакцию минут так на 20 ;)
Val (2002-08-02 14:22:00) [17]>Nikolay M. © (02.08.02 14:19)
а чем плох классический вариант лога: одна таблица и в ней кроме полей записи, поле с флагом проведеной операции над записью?
Nikolay M. (2002-08-02 14:19:00) [18]
> Val © (02.08.02 14:15)
> сорри, может я не понял чего? откуда в dBase, FoxPro механизм
> транзакций?
Сорьки, пропустил мимо ушей в чем БД. По поводу транзакций было просто лирическое отступление, а в голову сразу пришел вариант с тремя откатными таблицами.
Johnmen (2002-08-02 14:17:00) [19]>DiamondShark © (02.08.02 14:10)
>Не надо вводить народ в заблуждение: для ЭТОГО SQL сервера не
>помогут.
Обоснуй...
Val (2002-08-02 14:15:00) [20]>Nikolay M. © (02.08.02 14:11)
сорри, может я не понял чего? откуда в dBase, FoxPro механизм транзакций?