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

porque no puedo insertar variables sin valor

Estas en el tema de porque no puedo insertar variables sin valor en el foro de .NET en Foros del Web. hola resulta que me he topado con otro problema cuando trato de insertar variables que no tienen ningun valor, bueno esto lo suluciono validando la ...
  #1 (permalink)  
Antiguo 22/06/2004, 18:32
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
porque no puedo insertar variables sin valor

hola resulta que me he topado con otro problema cuando trato de insertar variables que no tienen ningun valor, bueno esto lo suluciono validando la variable que cuando no tenga nada me diga que es vacia (variable=""), pero no se si este mal o bien, bueno el caso es que deberia de insertar variables sin valor o campos null, alguien conoce algun truco para poder insertar variables sin valor sin que marque error

bueno este es el codigo que me marca error

Dim MySQL as string = "Insert into noticias values (@titulo, @fecha, @noticia, @foto)"
Dim myConn As SqlConnection = New SqlConnection("cadinita_de conexion_a_tu_servidor")
Dim Cmd as New SQLCommand(MySQL, MyConn)
cmd.Parameters.Add(New SQLParameter("@titulo", ftitlo.text))
cmd.Parameters.Add(New SQLParameter("@fecha", ffecha.text))
cmd.Parameters.Add(New SQLParameter("@noticia", fnoticia.text))
cmd.Parameters.Add(New SQLParameter("@foto", c))
MyConn.Open()
cmd.ExecuteNonQuery

aqui el problema es que si no inserto la variable @foto me marca este error cuando trato de insertar
Prepared statement '(@titulo nvarchar(4000),@fecha nvarchar(4000),@noticia nvarchar(' expects parameter @foto, which was not supplied

y esto es porque no lleva nada mi variable c, pero a mi punto de vista me deberia de inssertar deperdida un valor en blanco o un valor null, pero me marca error..

si me entienden verdad?
__________________
solo firma
  #2 (permalink)  
Antiguo 22/06/2004, 23:42
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
Creo que te entiendo,mi pregunta es,en la base de datos has puesto que el campo foto puede aceptar valores nulos?mira ver,un saludo
  #3 (permalink)  
Antiguo 23/06/2004, 03:01
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Prueba una cosa: Intenta guardar esa variable 'c' en un web control (por ejemplo en un label que tenga el visible en false, para que no te aparezca en pantalla), y cambia tu inserción de parámetro por esto:

cmd.Parameters.Add(New SQLParameter("@foto", loquesea.text))

Un saludo. Ya nos dirás!.
__________________
Pide lo que quieras...y luego paga por ello
  #4 (permalink)  
Antiguo 23/06/2004, 03:03
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Ojo: Primero prueba lo que te dice SunD, porque es la respuesta más probable. Yo sólo te doy mi respuesta por si tienes los campos bien definidos en la base de datos
__________________
Pide lo que quieras...y luego paga por ello
  #5 (permalink)  
Antiguo 23/06/2004, 04:09
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola!
También pudes probar a comprobar si esa variable no tiene valor asignado y simplemente en la sentencia de inserción no incluyes ese campo, así se te almacenará el valor NULL en la tabla.
Suerte!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #6 (permalink)  
Antiguo 23/06/2004, 05:22
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Tienes razón, GerunD. Otra opción, ya que por lo visto unas veces vas a tener foto, y otras no, es utilizar 2 insert, en función de si el campo 'c' está vacío o no.

If c <> "" Then

Dim MySQL as string = "Insert into noticias values (@titulo, @fecha, @noticia, @foto)"
Dim myConn As SqlConnection = New SqlConnection("cadinita_de conexion_a_tu_servidor")
Dim Cmd as New SQLCommand(MySQL, MyConn)
cmd.Parameters.Add(New SQLParameter("@titulo", ftitlo.text))
cmd.Parameters.Add(New SQLParameter("@fecha", ffecha.text))
cmd.Parameters.Add(New SQLParameter("@noticia", fnoticia.text))
cmd.Parameters.Add(New SQLParameter("@foto", c))
MyConn.Open()
cmd.ExecuteNonQuery
Else
Dim MySQL as string = "Insert into noticias values (@titulo, @fecha, @noticia)"
Dim myConn As SqlConnection = New SqlConnection("cadinita_de conexion_a_tu_servidor")
Dim Cmd as New SQLCommand(MySQL, MyConn)
cmd.Parameters.Add(New SQLParameter("@titulo", ftitlo.text))
cmd.Parameters.Add(New SQLParameter("@fecha", ffecha.text))
cmd.Parameters.Add(New SQLParameter("@noticia", fnoticia.text))
'aquí nos hemos ventilao el parametro, y tampoco lo utilizamos en el insert
MyConn.Open()
cmd.ExecuteNonQuery
End if

Evidentemente se puede dejar más fino, pero esto te tiene que funcionar. A veces lo más cutre y lo más sencillo es la mejor solución (eso sí: No podré llevar nunca los proyectos a un concurso de programación, jejeje...pero mientras siga cobrando a final de mes...)

Un saludo. Espero que te hayamos servido de ayuda.
__________________
Pide lo que quieras...y luego paga por ello
  #7 (permalink)  
Antiguo 23/06/2004, 05:26
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Hey!!
Gracias por la aclaración a mi respuesta luiscl......(que haría yo sin ti.....jajajaja)!!
(Aunque se puede optimizar ese código reduciendolo un poquillo....)

Venga, saludos amigos!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #8 (permalink)  
Antiguo 23/06/2004, 05:26
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
De todas formas, con las soluciones que te hemos presentado antes (o la orientación para encontrarlas, vamos), tendrías que haber podido solucionar el tema. Mi solución última es la más cutre y típica de novato, que es lo que soy...pero como decía Sherlock Holmes, <<cuando las deducciones lógicas no resuelven el asesinato, la deducción más ilógica es la acertada>>...más o menos (yo no estaba allí pa apuntar)

Por cierto: Que mi anterior mensaje era el número 100. ¡¡¡Vinitos virtuales del Somontano pa todo el chat, que invita el menda!!!
__________________
Pide lo que quieras...y luego paga por ello
  #9 (permalink)  
Antiguo 23/06/2004, 05:29
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Jejeejej, gracias!!!, estaba muy bueno el vinito!!


PD: Novatos...... el que no lo sea al menos un poco que tire la primera piedra!
(Para qué estamos aqui entonces???)
Saludos de nuevo y enhorawena por esos 100 post..... tendre que espavilarme para que no me alcances.....
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #10 (permalink)  
Antiguo 23/06/2004, 05:31
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
Felicidades por los 100 post!!!,y espero que pronto leamos los 10000

PD: Novato es una condición que nunca se pierde,y mas cuando estás programando
  #11 (permalink)  
Antiguo 23/06/2004, 08:04
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
QUE BIEN....

mi pregunta si ha causado polemica y es que en verdad si nos hemos tomapado esa tipo de errores y mas la gente que somos novatos en esto, en cuanto a mi base de datos si tiene en el campo foto, poner null en caso de que no se inserte nada... he visto la respuesta de luiscl y se me hace buena, haber que pasa..
__________________
solo firma
  #12 (permalink)  
Antiguo 23/06/2004, 08:18
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Hola a todos solo 3 cosas...

1.- Personalmente prefiero guardar un valor vació en la BD que un valor NULL

Cita:
Vinitos virtuales del Somontano pa todo el chat
2.- Y a mi no me invitan a la celebración..??

Cita:
PD: Novatos...... el que no lo sea al menos un poco que tire la primera piedra!
3.- En donde echo la piedra GeRuNdIo ? ..(jeje)

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

Exentrit - Soluciones SharePoint & Net
  #13 (permalink)  
Antiguo 23/06/2004, 08:37
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Al jefe Rootk le regalo la caja entera, hombre. Marchando una cajita de Viñas del Vero para RootK, cosecha del 96!!!!

Ojo con las piedras, que no tengo edad ya para esquivar, jejeje
__________________
Pide lo que quieras...y luego paga por ello
  #14 (permalink)  
Antiguo 23/06/2004, 09:43
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Marchando una cajita de Viñas del Vero para RootK
Con mucho gusto las recibiré y si de paso tambien incluyes un Waltraud...sería mejor...
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 15:13.