Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ОТМЕНА последнего действия ! [D5, dBase, FoxPro]


Страницы:   1 2

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 механизм транзакций?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо