Невозможность обновления таблиц, если обновляют с двух рабочих мест.

guest_aes
Дата: 21.12.2004 14:33:24
Не пойму в чем дело.
Если приложение работает на одной машине, то при нажатии на кнопку Update все хорошо, данные в базе обновляются. Если же на двух компьютерах загрузить DataSet, а потом обновить данные на одном из них, то при попытке обновить данные с другой машины выдается сообщение.
"Concurrency violation: the UpdateCommand affected 0 records."

При создании формы использовался визард DataForm.
Worobjoff
Дата: 21.12.2004 17:20:03
См. UpdateCommand.CommandText.
Созданный визардом, он содержит текст для оптимистической блокировки. Т.е. WHERE содержит условие по значениям всех полей. И если одно из них не совпадет (т.е было изменено другим пользователем) - будет вот это сообщение.
Два решения:
1. ContinueUpdateOnError = True

2. Переписать содержимое WHERE, чтобы там только PK = @PK было. Но это если устраивает такой тип блокировки ("кто последний сохраняет, тот и прав").

То же самое - о DeleteCommand.CommandText
Кстати тут можно применять признак "удален" вместо физического удаления. Очень удобно.
Sa
Дата: 21.12.2004 22:52:23
Не используйте визард, если используете то контролируйте то что он создает и правьте в соответствии с логикой вашего приложения :-)
guest_aes
Дата: 22.12.2004 10:41:18
Спасибо Worobjoff. Помогло.
Мне казалось, что визард уже должен создавать форму, которая может работать не только в монопольном режиме.
DeDMakar
Дата: 30.01.2008 01:31:47
Worobjoff, можете мне помочь. У меня такая же ошибка. Вот код http://rapidshare.com/files/87548728/ExampleInventory.rar . Все создано в ручную, без уизарда.