Hola Carlojas, hace unos dias me ayudaste a realizar un codigo para actualizar mi base de datos desde una funcion, esta funciona correctamente me actualiza los registros ya editados pero tengo ahora otro problema a partir de esto. Te comento que antes de llamar a la Funcion para ubicar un registro utilizo el sig codigo desde un boton filtrar
Me.OperadoresBindingSource.Filter = "Codigo_oper = " & Me.TB_Codigo.Text & " And Identificador=2"
Una vez filtrado el formulario con el registro ubicado realizo los cambios y llamo a esta Funcion
Public Function ModifOper(ByVal Cedula As String, ByVal RowId As Integer) As Boolean
Try
Dim conect As New SqlCeConnection(My.Settings.LaLolaConnectionString )
conect.Open()
Dim ds As New DataSet
Dim adp As New SqlCeDataAdapter("Select * from Operadores", conect)
adp.Fill(ds)
Dim fila As DataRow = ds.Tables(0).Select("Id = " + RowId.ToString + "1")(0)
fila.BeginEdit()
fila("Identificador") = Me.L_Identificador.Text
fila("Codigo_oper") = Me.TB_Codigo.Text
fila("Den_oper") = Me.TB_RazonSocial.Text
fila("Domicilio") = Me.TB_Domicilio.Text
fila("Telefono") = Me.TB_Telefono.Text
fila("Celular") = Me.TB_Celular.Text
fila("Fax") = Me.TB_Fax.Text
fila("Email") = Me.TB_Email.Text
fila("Contacto") = Me.TB_Contacto.Text
fila("Estado") = Me.L_Estado.Text
fila.EndEdit()
Dim cb As New SqlCeCommandBuilder(adp)
adp.Update(ds)
ds.Tables(0).AcceptChanges()
Return True
conect.Close()
Catch ex As DataException
MessageBox.Show(ex.Message)
Return False
Catch ex2 As SqlCeException
MessageBox.Show(ex2.Message)
Return False
End Try
End Function
Luego salgo del programa y voy a la base de datos para controlar que los cambios esten bien y efectivamente los cambios los realiza correctamente pero que pasa, estos cambios los realiza tambien al primer registro siempre. Es decir si modifico el registro Nro. 5 tambien me modifica el 1 de igual manera, a medida que voy modificando datos a diferentes registros me actualiza el primero. Creo que el problema esta en esta linea del codigo pero no se como modificarla. Espero me puedas ayudar y muchas gracias nuevamente.
Dim fila As DataRow = ds.Tables(0).Select("Id = " + RowId.ToString + "1")(0)
Id es el campo con clave principal (Prop. int autonumerico)
Tambien la modifique de estas maneras pero me tira errores
Dim fila As DataRow = ds.Tables(0).Select("Id = " + RowId.ToString + "")(0)
Aca me devuelve el error "Indice fuera de los limites de la matriz"
Dim fila As DataRow = ds.Tables(0).Select("Id = " & RowId.ToString & "")(0)
de esta manera me tira el mismo error
Saludos