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

Valores nulos en variables no inicializadas

Estas en el tema de Valores nulos en variables no inicializadas en el foro de .NET en Foros del Web. Hola a tod@s!! Os cuento, tengo una clase que tiene varios atributos de tipo entero y real que no tienen porque estar inicializados a ningún ...
  #1 (permalink)  
Antiguo 15/06/2004, 11:04
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 8 meses
Puntos: 1
Valores nulos en variables no inicializadas

Hola a tod@s!!
Os cuento, tengo una clase que tiene varios atributos de tipo entero y real que no tienen porque estar inicializados a ningún valor; el problema es que si a alguno no le asigno nada siempre valdrá 0. Hay alguna forma de asignar un valor nulo a un atributo entero? sino se puede cómo podría distinguir si ese valor es realmente 0 o no está inicializado?
Como me explico fatal os pongo un ejemplo aunque no sé si será peor


Si tengo una clase y hago lo siguiente:

Código:
Public Class Examen
        Private NotaPrimerParcial As integer
        Private NotaSegundoParcial As integer
	...
...

private sub insertar(conexion As SqlConnection)
' Este método añadiría una nueva fila a una tabla de la base de datos con los valores de los atributos del objeto.
End Sub

End Class


Dim objeto As New Examen()
objeto.primerParcial = 0
Si ahora hiciera "objeto.insertar()" en la base de datos tendría 0 tanto en el primer parcial como en el segundo, pero el segundo debería ser nulo, no presentado, qué podría hacer?
Espero que me hayais entendido mejor así, un saludo.
  #2 (permalink)  
Antiguo 15/06/2004, 11:19
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 8 meses
Puntos: 2
Hola Scho!
La verdad nunca se me había planteado la duda de si puedo insertar un NULL en una BD desde una aplicación......

Se me ocurren dos cosas:

1) Prueba a inicializar las variables en "el constructor" de la clase a "Null". Tendrás que declarar esas variables de tipo string por tanto. (Es bueno realizar un método constructor en la clase, ya que no lo veo en tu ejemplo).
Esta sería una forma así a bote pronto que se me ocurre.

2) Otra forma, más cómoda, sería inicializar en el constructor de la clase las variables a -1, y saber en la BD que este valor indica "No presentado".

Saludos, y suerte!!!
(Espero haberte ayudado un pelin)

__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #3 (permalink)  
Antiguo 15/06/2004, 11:24
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Otra forma es que cheques tus variables, si estás valen 0 insertas la cadena NULL..

Ejemplo..

Cita:
If NotaPrimerParcial = 0 Then

s = "INSERT INTO TABLE1 values(NULL,campo2,campo3..etc.....)"
else
s = "INSERT INTO TABLE1 values(NotaPrimerParcial ,campo2,campo3..etc.....)"


End If

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 15/06/2004, 11:48
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 8 meses
Puntos: 1
Hola otra vez y gracias por vuestras respuestas.

GeRuNdIo, la clase sí tiene constructor ese era sólo un ejemplo, lo que pasa es que no puedo inicializar esas variables a Null siendo integer y no quería cambiarle el tipo a String, lo de darle valor -1 sí me puede servir si no se puede darle el valor null de ninguna forma, gracias

RootK, el problema era que no es lo mismo nulo que 0, pero cambiando ese 0 de tu ejemplo por un -1 como dice GeRuNdIo también me sirve lo que has puesto

Muchas gracias a ambos!! Saludos
  #5 (permalink)  
Antiguo 15/06/2004, 11:59
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Cita:
el problema era que no es lo mismo nulo que 0,
Estoy de acuerdo.. de hecho tampoco es lo mismo un valor vacío a un valor nulo...

Me da gusto que te haya funcionado..

Salu2
  #6 (permalink)  
Antiguo 15/06/2004, 12:14
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 8 meses
Puntos: 1
Me refería a que sí que se le debía poder asignar el valor 0, pero es que si no le asignaba ningún valor toma el 0 por defecto aunque, en ese caso, ese 0 realmente debería ser nulo.

ARG!! entre tanto 0 y nulo ya no entiendo nada el que caso es que lo que me habéis dicho me puede funcionar y me vale gracias otra vez
  #7 (permalink)  
Antiguo 15/06/2004, 12:38
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 8 meses
Puntos: 2
jejejeje!!!
(Vaya lio eh!!)
Suerte y por aqui andamoss!!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
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 13:44.