border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU

Retroceder   VB-MUNDO - Programacion Visual > Programacion - Lenguajes > Visual Basic.NET 2003 & 2005
Registrarse FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 21-06-2007, 20:00:41
Junior Member
Site Admin
 
Registrado: jun 2007
Posts: 5
Bettyboop Valoración +2
Predeterminado Referencia a Objeto no establecida como instancia de un obje

Buenas tardes a todos: Llevo una más de una semana atascada con el mismo problema.Agradecería me echaran una mano, ya que acabo de empezar y me veo estancada sin poder continuar.Utilizo Visual Basic 2005. 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("IDCLI ENTE") = Me.txtIdCliente.Text
ds.Tables("Clientes").Rows(FilaActual).Item("NOMBR E") = Me.txtNombre.Text
ds.Tables("Clientes").Rows(FilaActual).Item("DIREC CION") = 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("IDCLI ENTE") = Me.txtIdCliente.Text
y en:
Fila = ds.Tables("Clientes").NewRow()
Muchas gracias por su atención. Un saludo. Si creen que visionando la aplicación pueden ayudarme, ruego me envien un correo a beatrizgdd@hotmail.com.
Responder Con Cita
  #2 (permalink)  
Antiguo 21-06-2007, 21:19:07
Avatar de lesthad
Gran Participación en el Foro
 
Registrado: may 2006
Ubicación: Yucatan
Posts: 106
lesthad Valoración +2
Predeterminado

Hola. Checando tu codigo en la parte de modificar talvez te marca el error porque te falta decir que empieze a modificar antes de asignar nuevamente los datos. Mediante la instruccion:
FilaAModificar.BeginEdit()

y despues guardar los cambios con:

FilaAModificar.EndEdit()

En cuanto a la funcion añadir todavia no veo por que te marca el error.

:-) Saludos
Responder Con Cita
  #3 (permalink)  
Antiguo 22-06-2007, 10:04:07
Junior Member
Site Admin
 
Registrado: jun 2007
Posts: 5
Bettyboop Valoración +2
Predeterminado

Muchas gracias lesthad por tu participación, da gusto contar con gente que trate de echarte una mano. Pero nada, continúa dandome el mismo error.
Gracias de nuevo por las molestias. Un saludo.
Responder Con Cita
  #4 (permalink)  
Antiguo 22-06-2007, 12:46:48
Avatar de maxonico
Gran Participación en el Foro
 
Registrado: jun 2007
Posts: 118
maxonico Valoración +2
Predeterminado

Hola,

Código:
Dim ds As New DataSet()
la tenes declarada en el Load() del formulario y la estas tratando de acceder desde un procedimiento?, el alcance de la variable en ese caso se limita al Load() nomás. Proba declarando la variable como miembro de tu formulario:

Código:
Private ds As New DataSet()
Saludos!
Responder Con Cita
  #5 (permalink)  
Antiguo 23-06-2007, 14:20:54
Junior Member
Site Admin
 
Registrado: jun 2007
Posts: 5
Bettyboop Valoración +2
Predeterminado

Muchas gracias maxonico por tu aportación. He probado y continúa dandome el error, aunque ahora me da en da.Update(ds,"tabla"). Os muestro el código:
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Clientes
Dim WithEvents bmb As BindingManagerBase
Dim estado As Actualizar
Dim FilaActual As Integer
Dim da As OleDb.OleDbDataAdapter
Dim cambios As Boolean
Private ds As New DataSet()

Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.statusAviso.Text = ""
Me.statusUsuario.Text = "Usuario Actual :" & UsuarioActual.ToUpper
Me.statusFecha.Text = Now()

Dim cn As New OleDb.OleDbConnection(Origen)
Dim da As New OleDb.OleDbDataAdapter("Select * from Clientes", cn)
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")
Me.txtPoblacion.DataBindings.Add("Text", ds, "Clientes.Ciudad")
Me.txtCP.DataBindings.Add("Text", ds, "Clientes.CP")
Me.txtTelefono1.DataBindings.Add("Text", ds, "Clientes.Telefono1")
Me.txtTelefono2.DataBindings.Add("Text", ds, "Clientes.Telefono2")
Me.txtMovil.DataBindings.Add("Text", ds, "Clientes.Movil")
Me.txtFax.DataBindings.Add("Text", ds, "Clientes.Fax")
Me.txtEmail.DataBindings.Add("Text", ds, "Clientes.Email")
Me.txtPagWeb.DataBindings.Add("Text", ds, "Clientes.PAGWEB")
Me.ckAlmacenaje.DataBindings.Add("Checked", ds, "Clientes.Almacenaje")
Me.txtNif.DataBindings.Add("Text", ds, "Clientes.NIF")
Me.txtTipoTarifa.DataBindings.Add("Text", ds, "Clientes.TipoTarifa")

'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
da.Update(ds.Tables("Clientes"))
End Sub


Private Sub bmb_PositionChanged(ByVal sender As Object, ByVal e As EventArgs) Handles bmb.PositionChanged
Me.txtSituacion.Text = String.Format("{0} de {1}", bmb.Position + 1, bmb.Count)
End Sub

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 Fila As DataRow
Fila = ds.Tables("Clientes").NewRow()

Me.txtSituacion.Text = String.Format("{0} de {1}", bmb.Position + 1, bmb.Count)
Me.statusAviso.Text = "Insertado nuevo Registro"
Try
Fila.Item("IDCLIENTE") = Me.txtIdCliente.Text
Fila.Item("NOMBRE") = Me.txtNombre.Text
Fila.Item("DIRECCION") = Me.txtDomicilio.Text
Fila.Item("CIUDAD") = Me.txtPoblacion.Text
Fila.Item("CP") = Me.txtCP.Text
Fila.Item("TELEFONO1") = Me.txtTelefono1.Text
Fila.Item("TELEFONO2") = Me.txtTelefono2.Text
Fila.Item("MOVIL") = Me.txtMovil.Text
Fila.Item("FAX") = Me.txtFax.Text
Fila.Item("EMAIL") = Me.txtEmail.Text
Fila.Item("PAGWEB") = Me.txtPagWeb.Text
Fila.Item("ALMACENAJE") = Me.ckAlmacenaje.CheckState
Fila.Item("NIF") = Me.txtNif.Text
Fila.Item("HORARIO") = Me.txtHorario.Text
Fila.Item("OBSERVACIONES") = Me.txtObservaciones.Text
ds.Tables.Add("Clientes").Rows.Add(Fila)
da.Update(ds.Tables("Clientes"))
Me.statusAviso.Text = "Registro Añadido Correctamente"
Me.txtSituacion.Text = Me.bmb.Position

Catch ex As Exception
Me.statusAviso.Text = ex.Message
End Try
End If
Case Else
ds.Tables("Clientes").Rows(FilaActual).BeginEdit()
ds.Tables("Clientes").Rows(FilaActual).Item("IDCLI ENTE") = Me.txtIdCliente.Text
ds.Tables("Clientes").Rows(FilaActual).Item("NOMBR E") = Me.txtNombre.Text
ds.Tables("Clientes").Rows(FilaActual).Item("DIREC CION") = Me.txtDomicilio.Text
ds.Tables("Clientes").Rows(FilaActual).Item("CIUDA D") = Me.txtPoblacion.Text
ds.Tables("Clientes").Rows(FilaActual).Item("CP") = Me.txtCP.Text
ds.Tables("Clientes").Rows(FilaActual).Item("TELEF ONO1") = Me.txtTelefono1.Text
ds.Tables("Clientes").Rows(FilaActual).Item("TELEF ONO2") = Me.txtTelefono2.Text
ds.Tables("Clientes").Rows(FilaActual).Item("MOVIL ") = Me.txtMovil.Text
ds.Tables("Clientes").Rows(FilaActual).Item("FAX") = Me.txtFax.Text
ds.Tables("Clientes").Rows(FilaActual).Item("EMAIL ") = Me.txtEmail.Text
ds.Tables("Clientes").Rows(FilaActual).Item("PAGWE B") = Me.txtPagWeb.Text
ds.Tables("Clientes").Rows(FilaActual).Item("NIF") = Me.txtNif.Text
ds.Tables("Clientes").Rows(FilaActual).Item("TIPOT ARIFA") = Me.txtTipoTarifa.Text
ds.Tables("Clientes").Rows(FilaActual).Item("HORAR IO") = Me.txtHorario.Text
ds.Tables("Clientes").Rows(FilaActual).Item("OBSER VACIONES") = Me.txtObservaciones.Text
ds.Tables("Clientes").Rows(FilaActual).Item("ALMAC ENAJE") = Me.ckAlmacenaje.CheckState
ds.Tables("Clientes").Rows(FilaActual).EndEdit()

If ds.HasChanges Then
da.Update(ds.Tables("Clientes"))
ds.AcceptChanges()
Me.statusAviso.Text = "Datos Modificados Correctamente"
Else
Me.statusAviso.Text = "No hay cambios pendientes de Actualizar"
End If
End Select

End Sub

Private Sub cmdAñadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAñadir.Click
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
End Sub

End Class
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Como hacer referencia a un text de un Label jcpinto Visual Basic 6.00 7 18-12-2007 13:11:26
Como se destruye un Objeto waku_hu Visual Basic.NET 2003 & 2005 7 17-01-2007 00:18:40
Instancia de un formulario yim_2003 Visual Basic 6.00 1 24-06-2005 17:42:56
Como creo desde Setup Factory una referencia ODBC imported_chiaravel Empaquetador Default de Visual Basic 5 17-09-2004 01:00:00
Como se añade una referencia a word, por ejemplo? twenty Visual Basic 6.00 2 14-03-1970 23:23:49


La franja horaria es GMT. Ahora son las 20:26:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right