Enviar valor nulo a base de datos access

Primeramente quiero agradecer tu lectura independientemente a que me puedas ayudar o no.
La cuestión es la siguiente:
Estoy trabajando en un programa de gestión con Visual basic.Net 2005 y una base de datos en Access 2007
En un momento del programa hay un formulario que entre otros controles tiene un checkbox y un monthCalendar.
Quiero que si el checkbox está activado introduzca en la tabla correspondiente de la base de datos el valor 'true' en su campo respectivo y la fecha señalada en el monthCalendar en el campo Fecha de la tabla. Hasta aquí todo bien.
El problema viene ahora.
Si la casilla del checkbox está desactivada, quiero que meta el valor 'false' en el campo respectivo de la tabla... Hasta aquí todo bien... Pero quiero que el dato del campo Fecha de la tabla de ese registro, quede vacío, como si fuera nulo... Y ahí es donde me da el error, porque no sé cómo hacer para que quede vacío y no me dé error, porque lo toma como una cadena vacía y no como nulo...
Citar que en realidad las consultas que hago no son de inserción sino de actualización
La sentencia que puse para que me actualice los datos siempre que esté realizada y por lo tanto meta una fecha, sería:
"UPDATE Protesis SET Realizada=" & chRealizada.Checked & ",FechaRealizacion='" & mtFechaRealizacion.SelectionStart & "'"
Y hasta ahí bien, pero el problema es qué sentencia pongo para que vuelva a meter valor nulo en la Fecha de la tabla. Porque pudiere ocurrir que ese registro tenga una fecha ya introducida y, porque el cliente se confundió, vuelva a modificar el registro y eliminar esa fecha.
Decir también que el campo Fecha en la tabla de Access lo tengo con atributo de "no requerido" para que pueda admitir valores nulos y que naturalmente en el tipo de dato puse "fecha/hora"
Respuesta
1
No se puede enviar datos NULL en una sentencia de inserción y actualización, pues el dato NULL, es propio de cada base de datos, que quiere decir esto el NULL de access no es el null de paradox o ORACLE; Null es colocado por cada Driver o applicance maker; la solución es cuando el valor requerido como null sea en efecto este usar una clausula especifica de SQL que no toque el campo que usted requiera continué así, recuerde una vez cambiado un registro a un valor ya no es null, y para volver a ver otros campos no null, deberías borrarlo y luego insert los campos en forma parcial.

2 respuestas más de otros expertos

Respuesta
1
Sería algo como:
"UPDATE Protesis SET Realizada=" & chRealizada.Checked &
",FechaRealizacion=NULL"
Todo depende de la forma en que valides tu código para que tomes la alternativa que te pongo...
Muchas gracias... La verdad es que es para darme con un martillo en la cabeza... Llevo horas matándome con ese problema y resulta que yo mismo había dado con la solución "entre comillas"... Yo en vez de poner el NULL dentro de la cadena, lo ponía fuera de este modo:
(...) Realizada=" & chRealizada.Checked & ",FechaRealizacion=" & NULL
Muchas gracias, ya está resuelto el problema. Un saludo.
Respuesta
1
Creo que el valor null solo puede asignarse a un "variant"
Y si guardas el registro en una variable, ¿lo eliminas y lo vuelves
a insertar sin ningún valor en fecha? fecha quedará null.
"UPDATE Protesis SET Realizada=" & chRealizada.Checked 
"UPDATE Protesis SET Realizada=" & chRealizada.Checked & ",FechaRealizacion=NULL"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas