Access - Insertar NULL en una tabla

 
Vista:

Insertar NULL en una tabla

Publicado por Betty (1 intervención) el 13/06/2008 10:03:44
Hola,

al hilo de mi pregunta anterior se me plantea esta duda: es posible insertar un valor NULL en un campo de una tabla cuando hacemos una insercion mediante codigo? Supongo que la propiedad Required del campo es False

Cuando el campo es una cadena se puede utilizar vbNullString, vbNullChar, o asignar la cadena vacia como valor haciendo campo="".

?Pero qué pasa si no es una cadena? Si tengo un campo numerico que debo dejar vacio ?como hago la insercion?

Por ejemplo para una tabla ejemplo con dos campos numericos el siguiente codigo da error:

tablaTest(clave:numerico, num:numerico)

Dim bd As DAO.Database
Dim sql As String
Dim c, n As Integer

c=3
n= Null
Set bd = CurrentDb
rqt = "INSERT INTO tablaTest VALUES (" & i & "," & t & ");"
bd.Execute rqt, dbFailOnError

Como se puede solucionar esto?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar NULL en una tabla

Publicado por pacopaz (50 intervenciones) el 13/06/2008 17:25:09
Bety,
No confundas vbNullString con Null. El vbNullString, es, en si, una cadena de caracteres terminados en nulo, sin caracteres antes del nulo, por lo que si evaluas en el campo un método para saber si el campo tiene un valor nulo, probablemente la respuesta sea incorrecta. Lo mismo pasa con una cadena "".
Es decir, no es lo mismo un nulo que una cadena de longitud 0.
Lo que puedes hacer, para cualquier campo es evaluar el contenido de lo que estás pasando y si no existe el valor, entonces pasar la cadena "Null" para que efectivamente no se grabe nada en el registro. Ai así:

srtQry = "Insert Into Tabla Values(" & iif(IsNull([Valor]),"Null",CStr([Valor])) & ... & ")"

Donde

[Valor] es la variable que estás suponiendo que es nula.

La función IsNull funciona para variables Variant que tengan un valor numérico o de caracteres.
Null se pasa como cadena, no por que sea representada como texto en la base de datos, sino por que el query es una cadena.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar