Foros del Web » Programación para mayores de 30 ;) » .NET »

Vb.net 2008 expres nullrefennceexepcion

Estas en el tema de Vb.net 2008 expres nullrefennceexepcion en el foro de .NET en Foros del Web. Primero que nada hola XD aclaro que soy un novato con esto mas que nada es para un proyecto de la universidad entonces les muestro ...
  #1 (permalink)  
Antiguo 19/07/2012, 11:44
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Vb.net 2008 expres nullrefennceexepcion

Primero que nada hola XD aclaro que soy un novato con esto mas que nada es para un proyecto de la universidad entonces les muestro mi código fuente y me dicen


Cita:
Public Class Form2
Public accion As String
Public sql As String

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

End Sub

Private Sub NuevoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevoToolStripMenuItem.Click
txt_id.Text = ""
txt_id.Enabled = True
Txt_Cedula.Text = ""
Txt_Cedula.Enabled = True
Txt_Nombre.Text = ""
Txt_Nombre.Enabled = True
txt_Apellido.Text = ""
txt_Apellido.Enabled = True
txt_Edad.Text = ""
txt_Edad.Enabled = True
txt_Ciudad.Text = ""
txt_Ciudad.Enabled = True
txt_Direccion.Text = ""
txt_Direccion.Enabled = True
txt_Diagnostico.Text = ""
txt_Diagnostico.Enabled = True
txt_Tratamiento.Text = ""
txt_Tratamiento.Enabled = True
txt_Observacion.Text = ""
txt_Observacion.Enabled = True
txt_Nombre_Acompañante.Text = ""
txt_Nombre_Acompañante.Enabled = True
txt_Apellido_Acompañante.Text = ""
txt_Apellido_Acompañante.Enabled = True
txt_Cedula_Acompañante.Text = ""
txt_Cedula_Acompañante.Enabled = True
txt_Telefono_de_Acompañante.Text = ""
txt_Telefono_de_Acompañante.Enabled = True
accion = "Nuevo"
End Sub

Private Sub EditarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditarToolStripMenuItem.Click
Txt_Cedula.Enabled = True
Txt_Nombre.Enabled = True
txt_Apellido.Enabled = True
txt_Edad.Enabled = True
txt_Ciudad.Enabled = True
txt_Direccion.Enabled = True
txt_Diagnostico.Enabled = True
txt_Tratamiento.Enabled = True
txt_Observacion.Enabled = True
txt_Cedula_Acompañante.Enabled = True
txt_Nombre_Acompañante.Enabled = True
txt_Apellido_Acompañante.Enabled = True
txt_Telefono_de_Acompañante.Enabled = True
accion = "Editar"
End Sub

Private Sub BuscarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuscarToolStripMenuItem.Click
Dim numero As String
Dim rs As ADODB.Recordset
numero = InputBox("Digite El numero de Cedula a Buscar")
sql = "Select *from datos where Cedula='" & numero & "'"
rs = conexion.Execute(sql)

If rs.BOF <> True Then
rs.MoveFirst()
txt_id.Enabled = rs.Fields(0).Value
Txt_Cedula.Enabled = rs.Fields(1).Value
Txt_Nombre.Enabled = rs.Fields(2).Value
txt_Apellido.Enabled = rs.Fields(3).Value
txt_Edad.Enabled = rs.Fields(4).Value
txt_Ciudad.Enabled = rs.Fields(5).Value
txt_Direccion.Enabled = rs.Fields(6).Value
txt_Diagnostico.Enabled = rs.Fields(7).Value
txt_Tratamiento.Enabled = rs.Fields(8).Value
txt_Observacion.Enabled = rs.Fields(9).Value
txt_Cedula_Acompañante.Enabled = rs.Fields(10).Value
txt_Nombre_Acompañante.Enabled = rs.Fields(11).Value
txt_Apellido_Acompañante.Enabled = rs.Fields(12).Value
txt_Telefono_de_Acompañante.Enabled = rs.Fields(13).Value
Else
MsgBox("El Numero de cedula: " & numero & "no existe", MsgBoxStyle.Exclamation, "Busqueda de Registro")

End If
End Sub

Private Sub GuardarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GuardarToolStripMenuItem.Click
If accion = "Nuevo" Then
sql = "insert into datos(ID_Refugiado,Cedula,Nombre,Apellido,Edad,Ciu dad,Direccion,Diagnostico,Tratamiento,Observacion, Cedula_Acompañante,Nombre_Acompañante,Apellido_Aco mpañante,Telefono_de_contacto)" & "values('" & txt_id.Text & "','" & Txt_Cedula.Text & "','" & Txt_Nombre.Text & "','" & txt_Apellido.Text & "','" & txt_Edad.Text & "','" & txt_Ciudad.Text & "','" & txt_Direccion.Text & "','" & txt_Diagnostico.Text & "','" & txt_Tratamiento.Text & "','" & txt_Observacion.Text & "','" & txt_Cedula_Acompañante.Text & "','" & txt_Nombre_Acompañante.Text & "','" & txt_Apellido_Acompañante.Text & "','" & txt_Telefono_de_Acompañante.Text & "')"
conexion.Execute(sql)
MsgBox("El Registro se Guardo Correctamente", MsgBoxStyle.Information, " Registro de Refugiado")
End If

If accion = "Editar" Then
sql = "update datos set Cedula='" & Txt_Cedula.Text & "'," & "Nombre='" & Txt_Nombre.Text & "'," & "Apellido='" & txt_Apellido.Text & "'," & "Edad='" & txt_Edad.Text & "'," & "Ciudad='" & txt_Ciudad.Text & "'," & "Direccion='" & txt_Direccion.Text & "'," & "Diagnostico='" & txt_Diagnostico.Text & "'," & "Tratamiento='" & txt_Tratamiento.Text & "'," & "Observacion='" & txt_Observacion.Text & "'," & "Cedula_Acompañante='" & txt_Cedula_Acompañante.Text & "'," & "Nombre_Acompañante='" & txt_Nombre_Acompañante.Text & "'," & "Apellido_Acompañante='" & txt_Apellido_Acompañante.Text & "'," & "Telefono_de_contacto='" & txt_Telefono_de_Acompañante.Text & "'" & " where ID_Refugiado='" & txt_id.Text & "'"
Debug.Print(sql)
conexion.Execute(sql)
MsgBox("La Edicion del Registro se Realizo con Extito!", MsgBoxStyle.Information, "Edicion del Registro")
End If

End Sub

End Class
y esto otro para conexión

Cita:
Module Module1
Public conexion As ADODB.Connection
Public Sub conectar()
conexion = New ADODB.Connection
conexion.ConnectionString = "Provider-microsoft.ace.oledb.32.0;data source=C:\refugiovb2008\bdrefugio.accdb"
conexion.Open()
End Sub
End Module
ahora esto lo hice usando una guia de este link [URL="http://www.slideshare.net/luansarey/access-2007-y-visual-2008"]http://www.slideshare.net/luansarey/access-2007-y-visual-2008[/URL]

ahora me sale este error

cuando corro el programa intento buscar o registra algo en la bd

Cita:
rs = conexion.Execute(sql)-------------No se encontro nullreferenceexteption
oviamente esto sale con con grafico en amarillo con una flecha q me dice eso que les escribe

¿como puedo resolver esto?

Última edición por jesus_lodor; 19/07/2012 a las 11:50
  #2 (permalink)  
Antiguo 19/07/2012, 11:59
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

Buenas,

Te da un error de NullReference porque no has creado el objeto de la conexión.

Por lo que veo tienes un procedimiento conectar al que tendrías que llamar antes de realizar la llamada a conexion.Execute.

Aun así, no sé porque utilizas clases que son de versiones antiguas de Visual Basic 6, habiendo nuevas clases en .NET específicas y mejores como OleDbConnection.

Saludos.
  #3 (permalink)  
Antiguo 19/07/2012, 12:13
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

perdón pero como seria tu respuesta como hago el llamado del procedimiento conectar

Última edición por jesus_lodor; 19/07/2012 a las 12:18
  #4 (permalink)  
Antiguo 19/07/2012, 12:26
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

En el ejemplo de la página de donde los has sacado realiza la llamada al método conectar en el evento load de la página, aunque no es una forma demasiado correcta para mi gusto.

Lo que tienes que hacer es crear la conexión antes de llamar a Execute.

Código vb:
Ver original
  1. conectar()
  2. conexion.Execute(....)
  3.  
  4. 'Realizas lo que quieras con la conexion
  5.  
  6. conexion.Close() 'Cierras la conexión

Aun así, te recomiendo que mires sobre lo que te he dicho (ADO .NET)

Te dejo un enlace: http://msdn.microsoft.com/es-es/libr...(v=vs.80).aspx

Saludos
  #5 (permalink)  
Antiguo 19/07/2012, 13:00
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

OK ALEXG88 gracias por tu ayuda ahora me da otro error_!

Cita:
me dice esto
Module Module1
Public conexion As ADODB.Connection
Public Sub conectar()
conexion = New ADODB.Connection
conexion.ConnectionString = "Provider-Microsoft.ACE.OLEDB.32.0;Data Source=C:\refugiovb2008\bdrefugio.accdb"
conexion.Open() --->>aqui me sale el error me dice esto "NO se comtrolo COMexeption""no se encuentra el nombre del origen de datos y no se especifico ningún controlador predeterminado"
End Sub
End Module
ok creo q la cadena de conexion esta mala por q la verdad no veo bien hay en la presentacion de donde me la compie pero la parte de la ubicacion en C si es correcta..


y no trabado con el oledb ese me recomienda por q la verdad hasta ahora esto es lo he podido entender
  #6 (permalink)  
Antiguo 19/07/2012, 13:06
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

La cadena de conexión está mal, pero la ruta del archivo access dependerá de donde lo tengas tú.

Así debería ser la parte del Provider:

Código vb:
Ver original
  1. conexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\refugiovb2008\bdrefugio.accdb"
  #7 (permalink)  
Antiguo 19/07/2012, 13:32
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

OK alexg 88 se realizo la conexion magnificamente

pero_!! jeje te tengo otra preguntita jaja ya tengo es problema de sintaxis me sale esto por ejemplo para realizar una busqueda

Cita:
Private Sub BuscarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuscarToolStripMenuItem.Click
Dim numero As String
Dim rs As ADODB.Recordset
numero = InputBox("Digite El numero de Cedula a Buscar")
conectar()
sql = "Select *from datos where Cedula='" & numero & "'"
rs = conexion.Execute(sql)


If rs.BOF <> True Then
rs.MoveFirst()
txt_id.Enabled = rs.Fields(0).Value
Txt_Cedula.Enabled = rs.Fields(1).Value
Txt_Nombre.Enabled = rs.Fields(2).Value----> aqui me sale esto " no se controlo invalidcastexeption "la conversion de la cadena "jesus" en el tipo "boolean" no es valida.
txt_Apellido.Enabled = rs.Fields(3).Value
txt_Edad.Enabled = rs.Fields(4).Value
txt_Ciudad.Enabled = rs.Fields(5).Value
txt_Direccion.Enabled = rs.Fields(6).Value
txt_Diagnostico.Enabled = rs.Fields(7).Value
txt_Tratamiento.Enabled = rs.Fields(8).Value
txt_Observacion.Enabled = rs.Fields(9).Value
txt_Cedula_Acompañante.Enabled = rs.Fields(10).Value
txt_Nombre_Acompañante.Enabled = rs.Fields(11).Value
txt_Apellido_Acompañante.Enabled = rs.Fields(12).Value
txt_Telefono_de_Acompañante.Enabled = rs.Fields(13).Value
Else
MsgBox("El Numero de cedula: " & numero & "no existe", MsgBoxStyle.Exclamation, "Busqueda de Registro")

End If
conexion.Close()
End Sub
ok un detalle de este error
[QUOTE]"La conversión de la cadena "jesus" en el tipo 'Boolean' no es válida."[/QUOTE

debe ser algo con el value que podria hacer solo id_registro es numero el resto es de tipo texto en la base de datos
  #8 (permalink)  
Antiguo 19/07/2012, 13:37
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

El problema es que estás usando la propiedad Enabled y no la propiedad Text que supongo que será la que te interesa.

Código vb:
Ver original
  1. txt_id.Enabled = rs.Fields(0).Value
  2. Txt_Cedula.Text= rs.Fields(1).Value
  3. Txt_Nombre.Text= rs.Fields(2).Value.toString()
  4. txt_Apellido.Text= rs.Fields(3).Value
  5. txt_Edad.Text= rs.Fields(4).Value
  6. ....
  #9 (permalink)  
Antiguo 19/07/2012, 13:55
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

Amigo me salvaste la vida bueno al menos ya muestra registro y si habia q utilizar text me quedo asi y me funciono por que donde dice tostring no me corria

Cita:
txt_id.Text = rs.Fields(0).Value
Txt_Cedula.Text = rs.Fields(1).Value
Txt_Nombre.Text = rs.Fields(2).Value
txt_Apellido.Text = rs.Fields(3).Value
txt_Edad.Text = rs.Fields(4).Value
txt_Ciudad.Text = rs.Fields(5).Value
txt_Direccion.Text = rs.Fields(6).Value
txt_Diagnostico.Text = rs.Fields(7).Value
txt_Tratamiento.Text = rs.Fields(8).Value
txt_Observacion.Text = rs.Fields(9).Value
txt_Cedula_Acompañante.Text = rs.Fields(10).Value
txt_Nombre_Acompañante.Text = rs.Fields(11).Value
txt_Apellido_Acompañante.Text = rs.Fields(12).Value
txt_Telefono_de_Acompañante.Text = rs.Fields(13).Value
  #10 (permalink)  
Antiguo 19/07/2012, 14:14
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

bueno espero que todavia estes por hay jeje
por que el programa de guarda y muestra los archivo de la base de dato pero a la hora de editarlo me da error hay te va el codigo

Cita:
Private Sub GuardarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GuardarToolStripMenuItem.Click
conectar()
If accion = "Nuevo" Then
sql = "insert into datos(ID_Refugiado,Cedula,Nombre,Apellido,Edad,Ciu dad,Direccion,Diagnostico,Tratamiento,Observacion, Cedula_Acompañante,Nombre_Acompañante,Apellido_Aco mpañante,Telefono_de_contacto)" & "values('" & txt_id.Text & "','" & Txt_Cedula.Text & "','" & Txt_Nombre.Text & "','" & txt_Apellido.Text & "','" & txt_Edad.Text & "','" & txt_Ciudad.Text & "','" & txt_Direccion.Text & "','" & txt_Diagnostico.Text & "','" & txt_Tratamiento.Text & "','" & txt_Observacion.Text & "','" & txt_Cedula_Acompañante.Text & "','" & txt_Nombre_Acompañante.Text & "','" & txt_Apellido_Acompañante.Text & "','" & txt_Telefono_de_Acompañante.Text & "')"
conexion.Execute(sql)
MsgBox("El Registro se Guardo Correctamente", MsgBoxStyle.Information, " Registro de Refugiado")
End If

If accion = "Editar" Then
sql = "update datos set Cedula='" & Txt_Cedula.Text & "'," & "Nombre='" & Txt_Nombre.Text & "'," & "Apellido='" & txt_Apellido.Text & "'," & "Edad='" & txt_Edad.Text & "'," & "Ciudad='" & txt_Ciudad.Text & "'," & "Direccion='" & txt_Direccion.Text & "'," & "Diagnostico='" & txt_Diagnostico.Text & "'," & "Tratamiento='" & txt_Tratamiento.Text & "'," & "Observacion='" & txt_Observacion.Text & "'," & "Cedula_Acompañante='" & txt_Cedula_Acompañante.Text & "'," & "Nombre_Acompañante='" & txt_Nombre_Acompañante.Text & "'," & "Apellido_Acompañante='" & txt_Apellido_Acompañante.Text & "'," & "Telefono_de_contacto='" & txt_Telefono_de_Acompañante.Text & "'" & " where ID_Refugiado='" & txt_id.Text & "'"
Debug.Print(sql)
conexion.Execute(sql)----> dice esto "No coinciden los tipos de datos en la expresión de criterios."
MsgBox("La Edicion del Registro se Realizo con Extito!", MsgBoxStyle.Information, "Edicion del Registro")
End If
conexion.Close()
End Sub
  #11 (permalink)  
Antiguo 19/07/2012, 14:30
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

Si hay alguna de las columnas que no sea de tipo cadena, tienes que quitar las comillas simples al realizar el update.

Ejemplo:

Supongamos que la Edad es un tipo númerico en la base de datos

Código SQL:
Ver original
  1. INSERT INTO datos(ID_Refugiado,Edad) VALUES('1',15);

Si te fijas, tienes que quitar las comillas porque es un tipo numérico.
  #12 (permalink)  
Antiguo 20/07/2012, 08:01
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Vb.net 2008 expres nullrefennceexepcion

hola espero que aun andes por hay bueno ayer me canse y me retire pero hoy ando con nuevas fuerzas... tal ves ya me este saliendo de los limites del post y desvirtuando el tema pero esta pagina y tu ayuda son la unica opcion que tengo a la mano espero q lees mi pregunta...

bueno trate de entender tu mensaje anterior.. y si le hice los cambios que me dijiste al menos ya no me tira el error de antes si no que me dice que tengo un error en la sintaxis update

Cita:
sql = "update datos set Cedula=' & Txt_Cedula.Text & '," & "Nombre='" & Txt_Nombre.Text & "'," & "Apellido='" & txt_Apellido.Text & "'," & "Edad='& txt_Edad.Text & '," & "Ciudad='" & txt_Ciudad.Text & "'," & "Direccion='" & txt_Direccion.Text & "'," & "Diagnostico='" & txt_Diagnostico.Text & "'," & "Tratamiento='" & txt_Tratamiento.Text & "'," & "Observacion='" & txt_Observacion.Text & "'," & "Cedula_Acompañante=' & txt_Cedula_Acompañante.Text & '," & "Nombre_Acompañante='" & txt_Nombre_Acompañante.Text & "'," & "Apellido_Acompañante='" & txt_Apellido_Acompañante.Text & "'," & "Telefono_de_contacto=' & txt_Telefono_de_Acompañante.Text& ', " & " where ID_Refugiado='" & txt_id.Text & "'"
como podria arreglarla me la podrias arreglar_!! por favor?:)
  #13 (permalink)  
Antiguo 20/07/2012, 08:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vb.net 2008 expres nullrefennceexepcion

Tienes que quitar las comillas para el campo ID y todos los campos que no sean cadenas o de tipo fecha (DateTime)

Código SQL:
Ver original
  1. SQL = "update datos set Cedula=' & Txt_Cedula.Text & '," & "Nombre='" & Txt_Nombre.Text & "'," & "Apellido='" & txt_Apellido.Text & "'," & "Edad='& txt_Edad.Text & '," & "Ciudad='" & txt_Ciudad.Text & "'," & "Direccion='" & txt_Direccion.Text & "'," & "Diagnostico='" & txt_Diagnostico.Text & "'," & "Tratamiento='" & txt_Tratamiento.Text & "'," & "Observacion='" & txt_Observacion.Text & "'," & "Cedula_Acompañante=' & txt_Cedula_Acompañante.Text & '," & "Nombre_Acompañante='" & txt_Nombre_Acompañante.Text & "'," & "Apellido_Acompañante='" & txt_Apellido_Acompañante.Text & "'," & "Telefono_de_contacto=' & txt_Telefono_de_Acompañante.Text& ', " & " where ID_Refugiado=" & txt_id.Text

Etiquetas: net, sql, vb, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:31.