Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > wait transaction


Автор: Delphist 10.7.2007, 14:32
Когда выскакивает ошибка о заблокированной записи SQLCode = -901, c wait transaction. Скажите, пожалуйста, какое лучше всего выдавать универсальное сообщение пользователю.  
Сейчас я выдаю такое:
Код

    Запись изменить нельзя т.к. для нее есть не подтвержденные данные 
    среди открытых справочников или она редактируется другим пользователем.

Но оно мне не нравиться. Да и wait transaction выскакивает не всегда на редактирование записи, а например делаю я копию с группы записей, среди которых есть заблокированная. В итоге выскакивает не очень умное сообщение.
Помогите составить грамотное сообщение.

Автор: Akella 11.7.2007, 12:01
запись заблокирована, т.к. редактируется другим пользователем

Автор: Delphist 11.7.2007, 13:40
Цитата(Akella @  11.7.2007,  13:01 Найти цитируемый пост)
запись заблокирована, т.к. редактируется другим пользователем 

Хоршо, а если такое: пользователь открыл справочник1 подправил запись, но commit не сделал, а затем открывает другой справочник2, где есть записи связанные с подправленной ранее, и пытается внести изменения в справочник2, в итоге wait transaction.
В результате у пользователя сообщение, что типа редактирует другой пользователь, а какой тут другой пользователь, если он сам его заблокировал.

Автор: Akella 11.7.2007, 15:06
запомни хорошее правило: пишущая транзакция должна быть минимальна по времени!

Добавлено через 3 минуты и 21 секунду
Ннаверное, понятнее было бы так: физически редактирование записи должно быть минимальным по времени. Представь, что пользователь открыл форму редактирование, где при создании формы у тебя Dataset.Edit...
Лучше так:
1. Открываем форму и читаем данные в контролы
2. Пользователь меняет данные
3. по нажатию не кнопку происходит
 3.1 edit
 3.2 запись данные
 3.3 post

Добавлено через 3 минуты и 59 секунд
Ну или
Цитата

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


Добавлено через 5 минут и 47 секунд
Можно проверять подтверждена ли предыдущая транзакция и, соответственно, разрешать редактировать др. справочник или нет. Но советую делать как можно проще для пользователя, чтобы он не заморачивался с подтвержденим транзакций каждый раз. Лучше AutoCommit.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)