Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Insertar Fecha con valor nulo

Estas en el tema de Insertar Fecha con valor nulo en el foro de Bases de Datos General en Foros del Web. Hola, Estoy desarrollando una consulta UPDATE desde un formulario de Frontpage que inserta fechas en una tabla de la base de datos Access. El problema ...
  #1 (permalink)  
Antiguo 29/05/2008, 15:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Insertar Fecha con valor nulo

Hola,
Estoy desarrollando una consulta UPDATE desde un formulario de Frontpage que inserta fechas en una tabla de la base de datos Access.
El problema que tengo es cuando las fechas son nulas, o mejor dicho cuando el campo del formulario no contiene datos, o se borra la fecha, mi consulta UPDATE falla.
¿Hay alguna solucción para esto?
  #2 (permalink)  
Antiguo 29/05/2008, 16:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Pregunta Respuesta: Insertar Fecha con valor nulo

La solucion que he buscado ha sido convertir mis campos de fecha a texto y todo funciona bien, pero por que no puede manejar bien los campos fecha las consultas UPDATE ? Me sería de gran ayuda el poder contar con esta información, gracias de antemano por la cooperación.
  #3 (permalink)  
Antiguo 02/06/2008, 02:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Insertar Fecha con valor nulo

si insertas una fecha nula, debes pasarle null y no hay ningun problema. Si no muestras nada de codigo ni el error que te devuelve, va a ser realmente dificil que te podamos ayudar.

ah, convertir fechas a texto no es muy buena practica.

Salu2
  #4 (permalink)  
Antiguo 04/06/2008, 14:55
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

seyko, gracias por tu respuesta.

El codigo que quieres que ponga es el generado automaticamente por el asistente de base de datos de frontpage, como tal el codigo es correcto y puedo decirte que funciona bien cuando la fecha tiene un determinado valor, pero que falla cuando el valor es nulo.

La consulta update es llamada desde un formulario estandar generado por el asistente.

UPDATE Campos SET CampoTexto = '::CampoTexto::' , CampoNumero = ::CampoNumero:: , CampoFecha = '::CampoFecha::' WHERE (CampoID = ::CampoID::)

el error que me arroja es :

Error del Asistente para resultados de base de datos
Error en la operación. Si se vuelve a producir, póngase en contacto con el administrador del servidor.

El ejemplo de arriba usa el campo fecha como fecha.

(creo que aunque no hay mucho codigo el problema se sobreentiende)
__________________

Estoy de acuerdo contigo que no es muy buena practica la solucion que he encontrado pero es la unica que tengo por el momento.

Uso una rutina en javascript para comprobar que el campo de la fecha es correcto y cuando interrogo a la base de datos para una clasificacion por fecha, por ejemplo, uso una consulta con un campo que transforma el texto a fecha; pero como digo, uso el campo de entrada como un texto.

No logro hacer pasar por javascript un valor null al campo que contiene la fecha cuando este está vacío, ya que javascript no entiende el valor null.

¿Alguna solución para esto?
  #5 (permalink)  
Antiguo 05/06/2008, 01:45
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Insertar Fecha con valor nulo

Javascript no entiende null? --> FALSE

UPDATE Campos SET CampoTexto = '::CampoTexto::' , CampoNumero = ::CampoNumero:: , CampoFecha = '::CampoFecha::' WHERE (CampoID = ::CampoID::)

Si ::CampoFecha:: es null --> CampoFecha = 'null' intentas guardar texto en un campo fecha.


Salu2
  #6 (permalink)  
Antiguo 05/06/2008, 16:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

Esta bien seyko,

Java entiende null (para asignar el valor null a una variable y para comprobar si esta es nula, pero no asigna null a un campo). Soy yo el que no me he explicado bien.

En la consulta update que es el tema que me trae aqui, el tipo del campo CampoFecha es el de fecha y la consulta funciona bien cuando se le pasa una valor de fecha, actualiza la base de datos sin problema, aun cuando está entre ' '
comillas simples, y parezca un valor texto. (Esta es una consulta de frontpage y es como el include de frontpage las maneja, el codigo y la consulta son automaticamente generadas por el asistente).

Siguiendo su razonamiento

Si ::CampoFecha:: es null --> CampoFecha = 'null' intentas guardar texto en un campo fecha

entonces

Si ::CampoTexto:: es null --> CampoTexto = 'null' ...Por que no me muestra la base de datos "null" en este campo???

Digame usted que solución puede aportar a este tema, que es lo que pido...
(si se me ha entendido lo que busco ), y ya que es tan amante del codigo por que no me muestra algo de codigo para ilustrarnos.

Gracias y saludos.
  #7 (permalink)  
Antiguo 06/06/2008, 02:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Insertar Fecha con valor nulo

Primero hablabas de javascript y ahora de java, creo que tenemos conceptos distintos de null.
No obstante, esto es BD y tu problema es de programacion.

Un saludo
  #8 (permalink)  
Antiguo 06/06/2008, 07:53
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

rectifico de nuevo, cuando cito java quise decir javascript.

creo que menos dar una solucion que no tienes me mandas a otro sitio, esta bien, gracias por nada, no pense que este foro fuera tan obstinante.
  #9 (permalink)  
Antiguo 06/06/2008, 08:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Insertar Fecha con valor nulo

Sólo por tirar "una bala al aire", diré que he leído que en estos casos, si no se escribe nada en el formulario, es preferible que ese campo no se toque.

Si controlas con javascript cuándo ese campo está vacío, ¿por qué no tener una consulta distinta en la que el campo de fecha no aparezca actualizado?
si campoformulario no está vacío, la consulta sería:
UPDATE Campos SET CampoTexto = '::CampoTexto::' , CampoNumero = ::CampoNumero:: , CampoFecha = '::CampoFecha::' WHERE (CampoID = ::CampoID::)

si está realmente vacío, es decir, si es nulo,
UPDATE Campos SET CampoTexto = '::CampoTexto::' , CampoNumero = ::CampoNumero:: ' WHERE (CampoID = ::CampoID::)


No he probado nada, y probablemente tampoco aporte nada, pero sí deseo que cambie la dirección que parece tomar este hilo, amigos.

Última edición por jurena; 06/06/2008 a las 11:58
  #10 (permalink)  
Antiguo 06/06/2008, 13:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

gracias jurena,

si he pensado ya en esa solución, por eso hablaba de javascript que no puedo asignar el valor null al campo, que es como deberia ser. Se podria resolver como dices usando un condicional que averigue el estado de ese campo y en el caso de ser nulo entonces cambiar el post del formulario a otra pagina asp donde la consulta update no tenga en cuenta el campo fecha en cuestion.

Tan solo un pequeño e importante detalle, si la consulta de selección que tengo ya tiene un valor de fecha y el usuario introduce el campo a nulo, borra la fecha, entonces ¿como puedo poner ese campo a nulo?. Es donde estoy ahora.

(por lo que respecta a mi comentario anterior, disculpo a tu amigo, pero que por favor si intenta ayudar que sea de verdad y no por el afan de protagonismo o lucirse... eso lleva a malinterpretar todas las cuestiones) Tu actitud es la correcta jurena , por eso te lo agradezco ya.
  #11 (permalink)  
Antiguo 06/06/2008, 23:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Insertar Fecha con valor nulo

Código:
Tan solo un pequeño e importante detalle, si la consulta de selección que tengo ya tiene un valor de fecha y el usuario introduce el campo a nulo, borra la fecha, entonces ¿como puedo poner ese campo a nulo?. Es donde estoy ahora.
Yo no trabajo con ASP y sólo utilizo Access en una versión antigua (2002) y no en la red, pero te diré que a mí me ha aceptado la sintaxis que parece lógica en estos casos:
UPDATE... SET campofecha = NULL

Me ha borrado la fecha y ha dejado como Null el campo. Pero cuando digo que deja null, tú no ves null escrito, sino que es un campo null, es decir, si yo no me equivoco, que no tiene asignada ninguna parte de memoria, que es algo distinto a vacío. Como no soy técnico, para comprobarlo, una vez actualizado el campo, he llevado a cabo una consulta de selección para buscarlo como NULL con ... WHERE campofecha IS NULL, y lo ha encontrado como tal.

Imagino que ya lo habrás probado (habrá sido lo primero). O tal vez es esta la confusión.
Si fuera así: sólo tendrías que hacer la consulta de actualización con una condición dependiendo de que ese campo del formulario esté o no vacío; si no está vacío, lanzas una y si lo está, lanzas la otra.

Última edición por jurena; 06/06/2008 a las 23:48
  #12 (permalink)  
Antiguo 07/06/2008, 11:16
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

Gracias jurena por tu aporte,

Cuando dices que no deja el null lo entiendo, soy programador que puedo desconocer cosas pero llevo 24 años en la profesion y tengo algunos conceptos ya bien claros.

Tu ayuda me ha sido vital a la hora de enfrentar el problema. Me explico.

He conseguido solventarlo no usando una consulta update de Front Page sino una conexion definida por mi. Como bien dices el valor null se puede pasar no en este caso por Javascript sino por ASP.

En el VBscript pongo la condicion para valorar si el valor de la fecha es nulo o vacio. Despues se usa una consulta UPDATE normal que si actuliza el recordset.

Muchas gracias de nuevo.

Pongo el codigo de la consulta update por si alguien la necesita

Código:
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->

<%
	CampoID=Request("CampoID")
	CampoTexto=Request("CampoTexto")
	CampoNumero=Request("CampoNumero")
	CampoFecha=Request("CampoFecha")
	
	if CampoFecha=Null or CampoFecha="" then
		sql = "UPDATE Campos SET CampoTexto = '" & CampoTexto &"', CampoNumero = " & CampoNumero & " , CampoFecha = NULL WHERE (CampoID = "& CampoID &")"
	else
		sql = "UPDATE Campos SET CampoTexto = '" & CampoTexto &"', CampoNumero = " & CampoNumero & " , CampoFecha = '" & CampoFecha & "' WHERE (CampoID = "& CampoID &")"	
	end if
	strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwtwe\webtest\fpdb\bdtest.mdb"
	Set cn = Server.CreateObject("ADODB.Connection")
	cn.Open strConnectionString
	cn.Execute sql,,adCmdText + adExecuteNoRecords
%>
  #13 (permalink)  
Antiguo 07/06/2008, 12:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Insertar Fecha con valor nulo

Mis disculpas a Seyko si aparenté ser descortés con su ayuda, la valoro igualmente.
  #14 (permalink)  
Antiguo 09/06/2008, 03:24
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Insertar Fecha con valor nulo

Cita:
Iniciado por soft27 Ver Mensaje
rectifico de nuevo, cuando cito java quise decir javascript.

creo que menos dar una solucion que no tienes me mandas a otro sitio, esta bien, gracias por nada, no pense que este foro fuera tan obstinante.
Si no sabes programar no esperes que te lo hagan los demas, primero adquiere una buena base teorica (que buena falta te hace) y despues empieza a programar.
  #15 (permalink)  
Antiguo 09/06/2008, 03:26
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Insertar Fecha con valor nulo

Cita:
Iniciado por soft27 Ver Mensaje
Mis disculpas a Seyko si aparenté ser descortés con su ayuda, la valoro igualmente.
No lo aparentaste, lo fuiste.
Al parecer olvidaste que aqui la gente ayuda porque quiere, no obtiene más beneficio que la satisfación de ayudar.

Acepto tus disculpas, pero dudo que intente volver a ayudarte.
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 10:14.