Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Удаление из данных несколькими пользователями


Автор: Калинка 1.8.2011, 18:20
Всем привет,помогите новичку, такая проблема:
Есть БД на аксессе, создан датаадаптер, датасет. При помощи датаадаптера заполняю датасет и связываю его с гридом. Далее пользователь удаляет 
какую либо строку, выполняется метод Update адаптера и принятие изменений в датасет. При этом, если второй пользователь удалил эту строку
в своей копии датасета и обновил данные в БД, то у первого вылезает исключение типа "Ошибка паралеллилизма. DeleteCommand удалил 0 строки из 1".
Те есть так-то понятно, что строка уже удалена, но... Как обработать это исключение, чтобы пользователю выходило сообщение о том, что данная строка
удалена и просто обновить его датасет. Читал мануалы на микрософте, про методы update и fill, но не совсем мне ещё понятно, как это организовать.
Пишу на VB 2008 из-под 2008-й студии.

Пример кода:
Код

'процедура удаление строки в датасете

Public Sub DelRow(ByVal tableName As String, ByVal colName As String, ByVal dg As DataGridView)
        dt = ds.Tables.Item(tableName)
        dt.PrimaryKey = New DataColumn() {dt.Columns(colName)}
      
        dr = dt.Rows.Find(dg.Item(0, dg.CurrentCell.RowIndex).Value)
        dr.Delete()
    End Sub

'процедура обновления датасета и принятия изменений в БД
Public Sub DelDateTable(ByVal tableName As String)
        dbCmdBld = New OleDbCommandBuilder(dbAdapter)
        If ds.HasChanges(DataRowState.Deleted) = True Then
            dbAdapter.DeleteCommand = dbCmdBld.GetDeleteCommand()
           
            Try
                dbAdapter.Update(ds, tableName)
                ds.Tables(tableName).AcceptChanges()
            Catch e As Exception
                System.Windows.Forms.MessageBox.Show(e.Message, "Ошибка при обновлении таблицы в DataSet!")
            End Try
        End If
    End Sub




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