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

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

Проблема с интерфейсов OK и Отмена, Commit и Rollback


DelphiLexx ©   (2006-12-04 19:17:00) 

У меня возникла следующая проблема с сохранением данных в БД:
Есть DBGridEh который связан с TFIBDataSet'ом. Сейчас у меня на форме есть DBGridEh который связан с TFIBDataSet'ом, ещё много чего и две кнопки "ОК" и "Отмена". Пользователь вносить изменения(добавляет, удаляет, модифицирует данные) в грид.
[B]1)[/B] Сейчас у меня все сохранения вносятся после нажатия крестика на форме или нажатия кнопки "ОK" - которая делает Commit и закрывает форму. Кнопка "Отмена" - закрывает форму и делает Rollback.
[B]2)[/B] Есть вариант заместо кнопок "ОК" и "Отмена" сделать кнопку "Закрыть" - которая просто закрывает форму, и после каждого изменения делать Commit т.е. FIBDataSet.AutoCommit := True;
[B]3)[/B] Последний вариант состоит в том, чтобы оставить кнопки "ОK" и "Отмена", и в добавок на ToolBar'e разместить две кнопки (или только первую): кнопка  сохранения текущих изменений(при чем форма не закрывается т.е. FibDataSet.Commit) и кнопка отмены внесенных данных(форма также не закрывается и делается FibDataSet.Rollback).
Посоветуйте как правильней и нужней будет для пользователя. Если мои варианты бредовые предлагайте свои. Главное, чтобы пользователь остался доволен.


Sergey13   (2006-12-05 11:58:00) [1]

> [12] ЮЮ ©   (05.12.06 11:53)

Так и я вроде другими словами про это-же. Уходить надо автору от этого.


ЮЮ   (2006-12-05 11:53:00) [2]

Sergey13 ©   (05.12.06 11:07) [10]
Но если по Ok - Commit, то, боюсь, что в FormCreate где-то StartTransaction затаился.


ANB   (2006-12-05 11:21:00) [3]


> Обычно им нужна "одна большая красная кнопка, которая все
> за меня сделает".

Не, наши обычно просят такую же, но ЗЕЛЕНУЮ.


Sergey13   (2006-12-05 11:07:00) [4]

> [9] ЮЮ ©   (05.12.06 11:00)

Так по кнопке "ОК" и предлагается заливать данные с комитом.
А за использование Rollback через пользовательский интерфейс вообще, ИМХО, руки отрывать надо. 8-)


ЮЮ   (2006-12-05 11:00:00) [5]


Sergey13 ©   (05.12.06 10:14) [8]
> потом по отдельной кнопке одной короткой транзакциейзавать
> в БД.


А у автора:   кнопки "ОK" - которая делает Commitи закрывает форму. Кнопка "Отмена" - закрывает форму и делает Rollback.

или у FIB-ов Commit это аналог ApplyUpdates ?


Sergey13   (2006-12-05 10:14:00) [6]

> [6] DelphiLexx ©   (05.12.06 09:13)
> Ну так каким способом воспользоваться 1, 2 или 3

Все зависит от типа бизнес-транзакции, к которой собственно должна стремиться транзакция в БД.
Если узеры вводят независимые ни от чего отдельные строки, то комитить нужно, ИМХО, каждый ввод. Если вводится сложный документ (шапочно детальный), то документ целиком и должен комититься. Во втором случае желательно вводить новые данные не напрямую в БД, а в отдельные датасеты в памяти, которые потом по отдельной кнопке одной короткой транзакцией завать в БД.


clickmaker   (2006-12-05 09:36:00) [7]


> Ибо если юзеры - ббблондинки и им подобные

Вы уверены, что хотите сохранить данные?
     [ Да ] [Нет] [Может быть...]

;)


DelphiLexx   (2006-12-05 09:13:00) [8]


> В этом окне обязательно должна быть эта кнопка, при том
> одна, все равно другие не нажимают.

Ну так каким способом воспользоваться 1, 2 или 3


Anatoly Podgoretsky   (2006-12-04 20:53:00) [9]

> Sam Stone  (04.12.2006 20:28:04)  [4]

> Ведь они всегда тычут ОК в диалоговом окне

В этом окне обязательно должна быть эта кнопка, при том одна, все равно другие не нажимают.


Sam Stone   (2006-12-04 20:28:00) [10]

1 или 3 вариант. В софтине, которую я сейчас поддерживаю, реализовано так: редактируешь, что хочешь, добавляешь записи, удаляешь и тд. Когда надоело - жмешь кнопочку, происходит коммит или роллбек.

Вообще, действительно, лучше
> опроси хотя бы потенциальных пользователей

Ибо если юзеры - ббблондинки и им подобные, то им наверняка понадбится лишний запрос "а вы точно хотите сохранить/отменить изменения, сделанные в базе?". Ведь они всегда тычут ОК в диалоговом окне не глядя на текст сообщения, а потом возмущаются полученному результату )


Desdechado   (2006-12-04 20:18:00) [11]

> Прога только разрабатывается
Тогда на нее есть ТЗ.
Или опроси хотя бы потенциальных пользователей, потому как видение программиста, даже опытного, может весьма сильно отличаться от видения конкретной категории пользователей.
Обычно им нужна "одна большая красная кнопка, которая все за меня сделает".


DelphiLexx   (2006-12-04 19:26:00) [12]


> а пользователя спросить?

Прога только разрабатывается. Спрашивать нет возможности. Поэтому и решил с master'ами посоветоваться.


Desdechado   (2006-12-04 19:23:00) [13]

а пользователя спросить?


Наверх

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