¿Cómo puedo asignar Nulo a una Variable de tipo Date?

Ya intente

mivariable = null

mivariable = ""

Me da error y imprimir mivariable sin asignarle nada me imprime 12:00:00 a.m.

1 respuesta

Respuesta
1

Antonio: Independientemente de que en mi opinión no sea necesario forzar un Null en ese proceso, no quiere decir que como ejercicio y para tener un poco más de soltura, no pueda hacerse.

Partiendo de la BD que tu facilitaste como ejemplo y comenzando en la línea del

Else
Me.FechaInicio = Now()

'Aquí sustituye el código que tienes por el Siguiente:

Else
    Me.FechaInicio = Now() 'Esta línea ya la tienes
    If Nz("#" & Format(Me.FechaFin, "mm/dd/yyyy hh:nn:ss") & "#", Null) = "##" Then
        Me.FechaFin = "Null"
    End If
    Dim StrSQL As String
    StrSQL = "INSERT INTO OrdenServicio(IdOrden, FechaInicio, FechaFin, Proveedor, Trabajador, Descripcion) "
    StrSQL = StrSQL & "VALUES ( " & Me.Folio & " ,  #" & Format(Me.FechaInicio, "mm/dd/yyyy hh:nn:ss") & "#"
    StrSQL = StrSQL & ", " & Me.FechaFin & " "   
    StrSQL = StrSQL & ", '" & Me.CmbProveedores & "' , '" & Me.Ayudante & "', " & IIf(IsNull(Me.Descripcion), "NULL", "'" & Me.Descripcion & "'") & ")"
    CurrentDb.Execute StrSQL, dbFailOnError
    'Este es el código que tu tenías
    'CurrentDb.Execute "INSERT INTO OrdenServicio(IdOrden,FechaInicio,FechaFin,Proveedor,Trabajador,Descripcion) VALUES ( " & Me.Folio & " , #" _
                                              & Format(Me.FechaInicio, "MM/dd/yyyy hh:mm:ss ") & "# ,  #" & Format(Me.FechaFin, "MM/dd/yyyy hh:mm:ss ") & "#  , '" & Me.CmbProveedores & "' , '" _
                                              & Me.Ayudante & "', " & IIf(IsNull(Me.Descripcion), "NULL", "'" & Me.Descripcion & "'") & ")", dbFailOnError

Ya me contarás. Saludos >> Jacinto

Antonio: Hay una Falta de Formato en el If... de la FechaFin >> Debe ser >>

If Nz("#" & Format(Me.FechaFin, "mm/dd/yyyy hh:nn:ss") & "#", Null) = "##" Then
            Me.FechaFin = "Null"
    Else 'Faltaba éste Else y la línea que sigue
            Me.FechaFin = "#" & Format(Me.FechaFin, "mm/dd/yyyy hh:nn:ss") & "#"
    End If

Saludos >> Jacinto

¡Gracias! Si funciona gracias 

Me podrías explicar la línea del if no comprendo muy bien

Saludos

Antonio: Lo que hago es darle Formato de Fecha a lo que haya.

Si ese "Lo que haya" Formateado devuelve solo las "almohadillas", hago el valor Nulo, y si lo que hay es una Fecha, la formateo y la llamo en la StrSQL. Saludos >> Jacinto

¡Gracias! 

Muchas Gracias ya lo termine lo modifique un poco 

Private Sub insertar()
    If IsNull(Me.FechaFin) Then
         Me.FechaInicio = Now()
    Else
         CurrentDb.Execute "DELETE * FROM OrdenServicio WHERE OrdenServicio.IdOrden = " & Me.Folio & "", dbFailOnError
         Me.FechaFin = Now()
    End If
    CurrentDb.Execute "INSERT INTO OrdenServicio(IdOrden, FechaInicio, FechaFin, Proveedor, Trabajador, Descripcion)VALUES(" _
                      & Me.Folio & " ,#" & Format(Me.FechaInicio, "mm/dd/yyyy hh:mm:ss") & "# , " & IIf(IsNull(Me.FechaFin), "Null", "#" & Format(Me.FechaFin, "mm/dd/yyyy hh:mm:ss") & "#") & " , '" _
                      & Me.CmbProveedores & "', '" & Me.Ayudante & "' , " & IIf(IsNull(Me.Descripcion), "NULL", "'" & Me.Descripcion & "'") & ")", dbFailOnError
End Sub

y asi quedo el boton de guardar

Private Sub Guardar_Click()
If IsNull(Me.CmbProveedores) And IsNull(Me.Ayudante) Then
    MsgBox "PROVEEDOR Y ATIENDE SERVICIO ES REQUERIDO" & vbCrLf & vbCrLf & "VERIFIQUE.", vbInformation, "AVISO"
    Me.CmbProveedores.SetFocus
    Exit Sub
ElseIf IsNull(Me.CmbProveedores) Then
    MsgBox "PROVEEDOR ES REQUERIDO" & vbCrLf & vbCrLf & "VERIFIQUE.", vbInformation, "AVISO"
    Me.CmbProveedores.SetFocus
    Exit Sub
ElseIf IsNull(Me.Ayudante) Then
    MsgBox "ATIENDE SERVICIO ES REQUERIDO" & vbCrLf & vbCrLf & "VERIFIQUE.", vbInformation, "AVISO"
    Me.Ayudante.SetFocus
    Exit Sub
ElseIf DCount("[IdOrden]", "OrdenServicio", "[IdOrden] =" & Me.Folio) = 1 Then
    If IsNull(Me.Descripcion) Then
        MsgBox "DESCRIPCION REQUERIDA PARA GUARDAR", vbInformation, "AVISO"
        Me.Descripcion.SetFocus
        Exit Sub
    Else
        Call insertar
        Call limpiar
    End If
Else
    Call insertar
    If MsgBox("DATOS GUARDADOS" & vbCrLf & vbCrLf & "¿QUIERES AGREGAR OTRO REGISTRO?", vbYesNo + vbInformation, "AVISO") = vbYes Then
        Call limpiar
    Else
        DoCmd.Close
    End If
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas