En este grupo En todos

Foro de Ado.net



Referencia a objeto no establecida como instancia de un objeto

Escrito por Beatriz
el 19/06/2007
Buenas tardes a todos: Llevo una semana atascada con el mismo problema. Tanto al añadir, como al modificar registros, me da el Error Referencia a Objeto no establecida. He realizado varios formularios siguiendo diferentes formas de obtener el resultado, pero siempre me da el mismo error.

....... Form Load
Dim cn As New OleDb. OleDbConnection(Origen)
Dim da As New OleDb. OleDbDataAdapter("Select * from Clientes", cn)
Dim ds As New DataSet()
da. Fill(ds, "Clientes")

Dim cmdBuilder As New OleDb. OleDbCommandBuilder(da)
da. InsertCommand = cmdBuilder. GetInsertCommand
da. DeleteCommand = cmdBuilder. GetDeleteCommand
da. UpdateCommand = cmdBuilder. GetUpdateCommand

Me.txtIdCliente.DataBindings. Add("Text", ds, "Clientes. IDCLIENTE")
Me.txtNombre.DataBindings. Add("Text", ds, "Clientes. Nombre")
Me.txtDomicilio.DataBindings. Add("Text", ds, "Clientes. Direccion")
.......

"Guardar una referencia al objeto BindingManagerBase.
bmb = Me. BindingContext(ds, "Clientes")
"Forzar la actualización de los botones
bmb. Position = bmb. Count
bmb. Position = 0

..... Validar

Private Sub cmdValidar_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Handles cmdValidar. Click
Select Case estado
Case Actualizar. Añadir
If FilaActual <> -1 Then
Dim cb As New OleDb. OleDbCommandBuilder(da)
Dim Fila As DataRow
Fila = ds. Tables("Clientes"). NewRow()
Fila. Item("IDCLIENTE") = Me.txtIdCliente.Text
Fila. Item("NOMBRE") = Me.txtNombre.Text
Fila. Item("DIRECCION") = Me.txtDomicilio.Text
.........
ds.Tables.Add("Clientes"). Rows. Add(Fila)
da. Update(ds, "Clientes")
Me.statusAviso.Text = "Registro Añadido Correctamente"
Case Actualizar. Modificar

ds. Tables("Clientes"). Rows(FilaActual). Item("IDCLIENTE") = Me.txtIdCliente.Text
ds. Tables("Clientes"). Rows(FilaActual). Item("NOMBRE") = Me.txtNombre.Text
ds. Tables("Clientes"). Rows(FilaActual). Item("DIRECCION") = Me.txtDomicilio.Text
........
da. Update(ds, "Clientes")

... AÑADIR:
Dim control As Control
For Each control In Controls
If TypeOf control Is TextBox Or TypeOf control Is MaskedTextBox Then
control. Text = ""
End If
Next
Estado = Actualizar. Añadir

El error cuando le doy a actualizar, modificar los cambios, por añadir o por modificar el registro me da en:
ds. Tables("Clientes"). Rows(FilaActual). Item("IDCLIENTE") = Me.txtIdCliente.Text
Acabo de volver a probar, y al añadir y validar me da el error en:
Fila = ds. Tables("Clientes"). NewRow()
Muchas gracias por su atención. Un saludo.
Escrito por Martinsc
el 04/01/2008

Dim cmdBuilder As New OleDb. OleDbCommandBuilder(da)

Posiblemente lo tengas en esta linea.

Prueba con

Dim cmdBuilder As OleDb. OleDbCommandBuilder = New OleDb. OleDbCommandBuilder(da)