CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Actualizacion vb.net
(1/1)
cobyz21:
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 --- Private Sub frm_planta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Conexion.Open() ' La cadena de selección Dim sSel As String = "SELECT * from plan_prub ORDER BY ficha ASC" Try ' Crear un nuevo objeto del tipo DataAdapter NpDataAdapter = New Npgsql.NpgsqlDataAdapter(sSel, Conexion) ' SqlDataAdapter(sSel, sCnn) ' Crear los comandos de insertar, actualizar y eliminar Dim cb As New Npgsql.NpgsqlCommandBuilder(NpDataAdapter) ' SqlCommandBuilder(da) cb.QuotePrefix = "[" cb.QuoteSuffix = "]" ' Asignar los comandos al DataAdapter ' (se supone que lo hace automáticamente, pero...) debe tener la tabla una llave primaria o mandara error NpDataAdapter.UpdateCommand = cb.GetUpdateCommand() NpDataAdapter.InsertCommand = cb.GetInsertCommand() NpDataAdapter.DeleteCommand = cb.GetDeleteCommand() ' ' Esta base de datos usa el ID con valores automáticos NpDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey ' DataTab = New DataTable() ' Llenar la tabla con los datos indicados NpDataAdapter.Fill(DataTab) 'mostrar el primer registro If DataTab.Rows.Count > 0 Then btn_primero_Click(Nothing, Nothing) txt_busqueda.Select() Else fila = -1 btn_modifica.Enabled = False End If Catch ex As Exception MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbLf & ex.Message, "Conectar con la base", MessageBoxButtons.OK, MessageBoxIcon.[Error]) End Try End Sub Private Sub asignarDatos(ByVal dr As DataRow) ' Usar los datos que hay en los textbox If Rdb_m.Checked = True Then dr("s") = DBNull.Value '"M" Else dr("s") = DBNull.Value '"F" End If dr("ficha") = txt_ficha.Text dr("nombre") = txt_nombre.Text End Sub Private Sub btn_guarda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_guarda.Click Dim DataRo As DataRow = DataTab.Rows(fila) ' Asignar los datos de los textbox a la fila asignarDatos(DataRo) Try NpDataAdapter.Update(DataTab) DataTab.AcceptChanges() Catch ex As DBConcurrencyException MsgBox("Error de concurrencia: " & vbLf & ex.Message & vbLf & vbLf & "Codigo de error :" & vbLf & ex.StackTrace, MsgBoxStyle.Critical, "Error") End Sub
Navegación
Ir a la versión completa