Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Insertar valor nulo en un campo fecha con SqlServer 2005

947 views
Skip to first unread message

David Varez

unread,
Apr 19, 2010, 9:00:01 AM4/19/10
to
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.

Leandro Tuttini

unread,
Apr 19, 2010, 9:10:50 AM4/19/10
to
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

David Varez

unread,
Apr 19, 2010, 10:53:02 AM4/19/10
to
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:

> .
>

Alberto Poblacion

unread,
Apr 19, 2010, 11:32:08 AM4/19/10
to
"David Varez" <David...@discussions.microsoft.com> wrote in message
news:84128345-F16E-4E9F...@microsoft.com...
> [...]

> 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.

Gustavo Andrés Arriola O.

unread,
Apr 19, 2010, 11:38:31 AM4/19/10
to
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" <David...@discussions.microsoft.com> escribió en el mensaje
news:84128345-F16E-4E9F...@microsoft.com...

0 new messages