• Jueves 7 de Noviembre de 2024, 23:30

Autor Tema:  Actualizacion vb.net  (Leído 2601 veces)

cobyz21

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Actualizacion vb.net
« en: Viernes 15 de Octubre de 2010, 21:27 »
0
Saludos a todoa estoy progrmando un sistema en vb.net y a la hora de actualizar me manda el siguiente error

Infracción de concurrencia: UpdateCommand afectó a 0 de los 1 registros esperados.
Codigo de error :
en System.Data.Common.DbDataAdapter.UpdatedRowStatusE rrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandIn...fo[] batchCommands, Int32 commandCount)
en System.Data.Common.DbDataAdapter.UpdatedRowStatus( RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
en System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
en System.Data.Common.DbDataAdapter.UpdateFromDataTab le(DataTable dataTable, DataTableMapping tableMapping)
en System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
en SystemSTP.frm_form.btn_guarda_Click(Object sender, EventArgs e) en E:...Formsfrm_planta.vb:línea 549


el codigo es el siguiente

     
Código: vb.net
  1.  Private Sub frm_planta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.        
  3.       Conexion.Open()
  4.               ' La cadena de selección
  5.               Dim sSel As String = "SELECT * from plan_prub ORDER BY ficha ASC"
  6.              
  7.               Try
  8.                   ' Crear un nuevo objeto del tipo DataAdapter
  9.                   NpDataAdapter = New Npgsql.NpgsqlDataAdapter(sSel, Conexion) ' SqlDataAdapter(sSel, sCnn)
  10.                   ' Crear los comandos de insertar, actualizar y eliminar
  11.                   Dim cb As New Npgsql.NpgsqlCommandBuilder(NpDataAdapter) ' SqlCommandBuilder(da)
  12.                   cb.QuotePrefix = "["
  13.                   cb.QuoteSuffix = "]"
  14.                   ' Asignar los comandos al DataAdapter
  15.                   ' (se supone que lo hace automáticamente, pero...) debe tener la tabla una llave primaria o mandara error
  16.                   NpDataAdapter.UpdateCommand = cb.GetUpdateCommand()
  17.                   NpDataAdapter.InsertCommand = cb.GetInsertCommand()
  18.                   NpDataAdapter.DeleteCommand = cb.GetDeleteCommand()
  19.                   '
  20.                   ' Esta base de datos usa el ID con valores automáticos
  21.                   NpDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
  22.                   '
  23.                   DataTab = New DataTable()
  24.                   ' Llenar la tabla con los datos indicados
  25.                   NpDataAdapter.Fill(DataTab)
  26.                   'mostrar el primer registro
  27.                   If DataTab.Rows.Count > 0 Then
  28.                       btn_primero_Click(Nothing, Nothing)
  29.                       txt_busqueda.Select()
  30.                   Else
  31.                       fila = -1
  32.                       btn_modifica.Enabled = False
  33.                   End If
  34.               Catch ex As Exception
  35.                   MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbLf & ex.Message, "Conectar con la base", MessageBoxButtons.OK, MessageBoxIcon.[Error])
  36.               End Try
  37.       End Sub
  38.        
  39.       Private Sub asignarDatos(ByVal dr As DataRow)
  40.               ' Usar los datos que hay en los textbox
  41.               If Rdb_m.Checked = True Then
  42.                   dr("s") = DBNull.Value '"M"
  43.               Else
  44.                   dr("s") = DBNull.Value '"F"
  45.               End If
  46.  
  47.               dr("ficha") = txt_ficha.Text
  48.               dr("nombre") = txt_nombre.Text
  49.       End Sub
  50.  
  51.       Private Sub btn_guarda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_guarda.Click
  52.        
  53.       Dim DataRo As DataRow = DataTab.Rows(fila)
  54.               ' Asignar los datos de los textbox a la fila
  55.               asignarDatos(DataRo)
  56.        
  57.               Try
  58.                   NpDataAdapter.Update(DataTab)
  59.                   DataTab.AcceptChanges()
  60.               Catch ex As DBConcurrencyException
  61.                   MsgBox("Error de concurrencia: " & vbLf & ex.Message & vbLf & vbLf & "Codigo de error :" & vbLf & ex.StackTrace, MsgBoxStyle.Critical, "Error")
  62.              
  63.       End Sub
  64.