Eliminar un Registro

16/08/2004 - 22:23 por Omar Flores | Informe spam
Hola que tal, tengo un problema al tratar de eliminar un registro.

Tengo una forma con un TabControl y varios TabPages, en el TabPage
correspondiente
a las bajas tengo lo siguiente.


Declaracion de variables

Public Class frmProveedores
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Dim daBProveedor As SqlClient.SqlDataAdapter
Dim dsBProveedor As New DataSet
Dim drBProveedor As DataRow
Dim dtBProveedor As DataTable = New DataTable



-
Private Sub tpBaja_Layout(ByVal sender As Object, ByVal e As
System.Windows.Forms.LayoutEventArgs) Handles tpBaja.Layout
txtBRFC.Focus()
Dim dc(0) As DataColumn

Try
daBProveedor = New SqlClient.SqlDataAdapter("Select * from
Proveedor", conn)
daBProveedor.Fill(dtBProveedor)
dc(0) = dtBProveedor.Columns("RFC_Proveedor")
dtBProveedor.PrimaryKey = dc
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

End Sub

' Aqui lo unico que hago es Llenar la tabla y establecer la columna de la
llave primaria.


Ahora tengo un botón de busqueda que manda llamar a un Procedimiento llamado
BuscaBaja, el cual tiene el sig. código.


Private Sub BuscaBaja()
Dim busca(0) As Object
busca(0) = txtBRFC.Text
drBProveedor = dtBProveedor.Rows.Find(busca)

txtBRFC.Text = drBProveedor("RFC_Proveedor").ToString
txtBNombre.Text = drBProveedor("Nombre").ToString
txtBDireccion.Text = drBProveedor("Direccion").ToString
cbBCiudad.Text = drBProveedor("Ciudad").ToString
txtBTelefono.Text = drBProveedor("Telefono").ToString
End Sub

Aqui le mando el parámetro del RFC, si lo encuentra despliega el contenido
de los demas campos.
(hasta aquí no tengo ningun problema)


Y por último tengo un botón que manda llamar a un procedimiento llamado
Eliminar, el cual tiene el sig. código.


Private Sub Eliminar()
Dim cbBProveedor As SqlClient.SqlCommandBuilder
Try
cbBProveedor = New SqlClient.SqlCommandBuilder(daBProveedor)
dsBProveedor.Tables("Proveedor").Rows.Remove(drBProveedor) '(*)
daBProveedor.DeleteCommand = cbBProveedor.GetDeleteCommand
daBProveedor.Update(dsBProveedor, "Proveedor")
dsBProveedor.Tables("Proveedor").AcceptChanges()
daBProveedor.DeleteCommand.Connection.Close()
MsgBox("Registro Eliminado ")
Catch ex As SqlClient.SqlException
MsgBox("Ocurrio el siguiente error: " & ex.Message)
Catch exc As Exception
MsgBox("Ocurrio el siguiente error: " & exc.Message)
End Try

End Sub

Aqui pretendo eliminar el registro que buscamos anteriormente, pero me marca
el Sig. error:

referencia a Objeto no establecida como instancia de un objeto (*)


Espero y me puedan decir que es lo que estoy haciendo mal y/o proporcionarme
algúna otra alternativa

Por su ayuda, muchas gracias.
 

Leer las respuestas

#1 Tomas
17/08/2004 - 03:57 | Informe spam
Debes entender que el WEB es sin estado, lo que significa que tu cuando
apretas el boton los objectos se crean cada vez de nuevo y por esto mismo
drBProveedor cada vez se encuentra nulo.

http://support.microsoft.com/?scid=...es;E305141

Vea si el link ariba te ayuda algo.

Saludos,
Tomas

"Omar Flores" wrote:

Hola que tal, tengo un problema al tratar de eliminar un registro.

Tengo una forma con un TabControl y varios TabPages, en el TabPage
correspondiente
a las bajas tengo lo siguiente.


Declaracion de variables

Public Class frmProveedores
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Dim daBProveedor As SqlClient.SqlDataAdapter
Dim dsBProveedor As New DataSet
Dim drBProveedor As DataRow
Dim dtBProveedor As DataTable = New DataTable
.
.

-
Private Sub tpBaja_Layout(ByVal sender As Object, ByVal e As
System.Windows.Forms.LayoutEventArgs) Handles tpBaja.Layout
txtBRFC.Focus()
Dim dc(0) As DataColumn

Try
daBProveedor = New SqlClient.SqlDataAdapter("Select * from
Proveedor", conn)
daBProveedor.Fill(dtBProveedor)
dc(0) = dtBProveedor.Columns("RFC_Proveedor")
dtBProveedor.PrimaryKey = dc
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

End Sub

' Aqui lo unico que hago es Llenar la tabla y establecer la columna de la
llave primaria.


Ahora tengo un botón de busqueda que manda llamar a un Procedimiento llamado
BuscaBaja, el cual tiene el sig. código.


Private Sub BuscaBaja()
Dim busca(0) As Object
busca(0) = txtBRFC.Text
drBProveedor = dtBProveedor.Rows.Find(busca)

txtBRFC.Text = drBProveedor("RFC_Proveedor").ToString
txtBNombre.Text = drBProveedor("Nombre").ToString
txtBDireccion.Text = drBProveedor("Direccion").ToString
cbBCiudad.Text = drBProveedor("Ciudad").ToString
txtBTelefono.Text = drBProveedor("Telefono").ToString
End Sub

Aqui le mando el parámetro del RFC, si lo encuentra despliega el contenido
de los demas campos.
(hasta aquí no tengo ningun problema)


Y por último tengo un botón que manda llamar a un procedimiento llamado
Eliminar, el cual tiene el sig. código.


Private Sub Eliminar()
Dim cbBProveedor As SqlClient.SqlCommandBuilder
Try
cbBProveedor = New SqlClient.SqlCommandBuilder(daBProveedor)
dsBProveedor.Tables("Proveedor").Rows.Remove(drBProveedor) '(*)
daBProveedor.DeleteCommand = cbBProveedor.GetDeleteCommand
daBProveedor.Update(dsBProveedor, "Proveedor")
dsBProveedor.Tables("Proveedor").AcceptChanges()
daBProveedor.DeleteCommand.Connection.Close()
MsgBox("Registro Eliminado ")
Catch ex As SqlClient.SqlException
MsgBox("Ocurrio el siguiente error: " & ex.Message)
Catch exc As Exception
MsgBox("Ocurrio el siguiente error: " & exc.Message)
End Try

End Sub

Aqui pretendo eliminar el registro que buscamos anteriormente, pero me marca
el Sig. error:

referencia a Objeto no establecida como instancia de un objeto (*)


Espero y me puedan decir que es lo que estoy haciendo mal y/o proporcionarme
algúna otra alternativa

Por su ayuda, muchas gracias.



Preguntas similares