Insertar valor nulo en un campo fecha con SqlServer 2005

19/04/2010 - 15:00 por David Varez | Informe spam
Hola buenas, estoy trabajando con Visual Studio 2008 contra SqlServer 2005.
Hay un punto de la aplicación que tengo que insertar un valor en un campo de
tipo fecha. Los valores que se pueden insertar en ese campo son una fecha o
un nulo, pero cuando intento guardar un nulo me da error, y si guardo un
espacio en blanco, me guarda '01/01/1900', lo cual tampoco quiero.
El campo en la base de datos permite valores numéricos.

Muchas gracias por todo.

Preguntas similare

Leer las respuestas

#1 Leandro Tuttini
19/04/2010 - 15:10 | Informe spam
hola

has definido que el campo en tu tabla en el sql server permita nulos ?

si es asi podrias usar parameto en tu insert y pasarse un DbNull.Value

algo como esto

Using cnn As New OleDbConnection( "connection string")

Try
cnn.Open()

Dim sql As String = "INSERT INTO <tabla> (idCode, nombres, apells,
lugnac, fecnac) " & _
"Values (@id, @nombre, @apellido, @fecnac)"

Dim cmd As New OleDbCommand(sql, cnn)

cmd.Parameters.AddWithValue("@id", 444195)
cmd.Parameters.AddWithValue("@id", "PEDRO")
cmd.Parameters.AddWithValue("@apellido", "PEREZ")

Dim fecha As DateTime
If DateTime.TryParse(txtFecha.Text, fecha)
cmd.Parameters.AddWithValue("@fecnac", fecha)
Else
cmd.Parameters.AddWithValue("@fecnac", DbNull.Value)
End If

cmd.ExecuteNonQuery

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Using

como veras es solo un ejemplo, pero alli se la fecha no se peude
convertir al tipo, pone en la db un null

saludos
Respuesta Responder a este mensaje
#2 David Varez
19/04/2010 - 16:53 | Informe spam
Buenas tardes Leandor. Primero gracias por responder, per te cuento lo que
pienso.

El campo de la tabla al estar definido que permita valores nulos, en el
insert, si detecto que tiene que ir un nulo, no lo incluyo en la Sql, por lo
que a la hora de hacer el insert, no se graba nada en ese campo, y pone un
nulo que es el valor por defecto. El problema lo tengo a la hora de
actualizar. Mira mas o menos como lo tengo echo:

Sql = "UPDATE NombreTabla SET "
Sql = Sql & "Codigo='5'"
If Trim(CampoFecha.Text) = "" Then
Sql = Sql & "Fecha=" & DBNull.Value & ","
Else
Sql = Sql & "Fecha='" & DateValue(CampoFecha.Text) & "',"
End If
sql=sql & "WHERE ..."
...

Al ajecutar esta instrucción me da error, por que dice que esperaba algo
despues del =, ya que la Sql resultante la deja: "UPDATE NombreTabla SET
Codigo='5', Fecha= WHERE ...

Sacame de este mar de dudas.

Gracias por tu tiempo.


"Leandro Tuttini" wrote:

hola

has definido que el campo en tu tabla en el sql server permita nulos ?

si es asi podrias usar parameto en tu insert y pasarse un DbNull.Value

algo como esto

Using cnn As New OleDbConnection( "connection string")

Try
cnn.Open()

Dim sql As String = "INSERT INTO <tabla> (idCode, nombres, apells,
lugnac, fecnac) " & _
"Values (@id, @nombre, @apellido, @fecnac)"

Dim cmd As New OleDbCommand(sql, cnn)

cmd.Parameters.AddWithValue("@id", 444195)
cmd.Parameters.AddWithValue("@id", "PEDRO")
cmd.Parameters.AddWithValue("@apellido", "PEREZ")

Dim fecha As DateTime
If DateTime.TryParse(txtFecha.Text, fecha)
cmd.Parameters.AddWithValue("@fecnac", fecha)
Else
cmd.Parameters.AddWithValue("@fecnac", DbNull.Value)
End If

cmd.ExecuteNonQuery

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Using

como veras es solo un ejemplo, pero alli se la fecha no se peude
convertir al tipo, pone en la db un null

saludos
.

Respuesta Responder a este mensaje
#3 Alberto Poblacion
19/04/2010 - 17:32 | Informe spam
"David Varez" wrote in message
news:
[...]
Sql = "UPDATE NombreTabla SET "
Sql = Sql & "Codigo='5', "
If Trim(CampoFecha.Text) = "" Then


Sql = Sql & ",echa=NULL,"
Else
Sql = Sql & "Fecha='" & DateValue(CampoFecha.Text) & "',"
End If
sql=sql & "WHERE ..."



Arriba tienes la forma de grabar un NULL. Simplemente se pone
"UPDATE...SET Fecha=NULL", y con eso el servidor interpreta correctamente lo
que debe hacer.
Respuesta Responder a este mensaje
#4 Gustavo Andrés Arriola O.
19/04/2010 - 17:38 | Informe spam
Simplemente asigna un NULL a tu cadena.

Sql = "UPDATE NombreTabla SET "
Sql = Sql & "Codigo='5'"
If Trim(CampoFecha.Text) = "" Then
Sql = Sql & "Fecha=NULL "
Else
Sql = Sql & "Fecha='" & DateValue(CampoFecha.Text) & "',"
End If
sql=sql & "WHERE ..."
...

Saludos cordiales,
Gustavo Arriola


"David Varez" escribió en el mensaje
news:
Buenas tardes Leandor. Primero gracias por responder, per te cuento lo que
pienso.

El campo de la tabla al estar definido que permita valores nulos, en el
insert, si detecto que tiene que ir un nulo, no lo incluyo en la Sql, por
lo
que a la hora de hacer el insert, no se graba nada en ese campo, y pone un
nulo que es el valor por defecto. El problema lo tengo a la hora de
actualizar. Mira mas o menos como lo tengo echo:

Sql = "UPDATE NombreTabla SET "
Sql = Sql & "Codigo='5'"
If Trim(CampoFecha.Text) = "" Then
Sql = Sql & "Fecha=" & DBNull.Value & ","
Else
Sql = Sql & "Fecha='" & DateValue(CampoFecha.Text) & "',"
End If
sql=sql & "WHERE ..."
...

Al ajecutar esta instrucción me da error, por que dice que esperaba algo
despues del =, ya que la Sql resultante la deja: "UPDATE NombreTabla SET
Codigo='5', Fecha= WHERE ...

Sacame de este mar de dudas.

Gracias por tu tiempo.


"Leandro Tuttini" wrote:

hola

has definido que el campo en tu tabla en el sql server permita nulos ?

si es asi podrias usar parameto en tu insert y pasarse un DbNull.Value

algo como esto

Using cnn As New OleDbConnection( "connection string")

Try
cnn.Open()

Dim sql As String = "INSERT INTO <tabla> (idCode, nombres, apells,
lugnac, fecnac) " & _
"Values (@id, @nombre, @apellido, @fecnac)"

Dim cmd As New OleDbCommand(sql, cnn)

cmd.Parameters.AddWithValue("@id", 444195)
cmd.Parameters.AddWithValue("@id", "PEDRO")
cmd.Parameters.AddWithValue("@apellido", "PEREZ")

Dim fecha As DateTime
If DateTime.TryParse(txtFecha.Text, fecha)
cmd.Parameters.AddWithValue("@fecnac", fecha)
Else
cmd.Parameters.AddWithValue("@fecnac", DbNull.Value)
End If

cmd.ExecuteNonQuery

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Using

como veras es solo un ejemplo, pero alli se la fecha no se peude
convertir al tipo, pone en la db un null

saludos
.




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida