Visual Basic.NET - Parámetro tipo date NULL

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Ana (11 intervenciones) el 13/11/2018 17:26:22
Hola chic@s,

Tengo un pequeño problemilla.

En vb.net, tengo una función que pasa el parámetro fecha de tipo Date. Al llevar ese campo a nulo me da error.

¿Como lo puedo controlar?

Muchas gracias de antemano.

Un saludo

Ana
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 13/11/2018 22:00:52
Declara la propiedad o variable que sea nulable y con eso no tendrás problemas, aunque sería mejor si establecieras un fecha predeterminada para ese parámetro.

Saludos cordiales,
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
sin imagen de perfil
Val: 18
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Ana (11 intervenciones) el 15/11/2018 16:31:01
Hola Wilfredo,

Muchas gracias por la respuesta.

He probado lo que me has comentado y me sigue dando error.

No puedo establecer una fecha predeterminada.

Tengo la función:

1
2
3
4
5
6
7
8
9
Public Sub modifica()
     Dim fila As DataGridViewRow = dataGrid.CurrentRow()
 
     modifica(fila.cells(5).value)
End Sub
 
Public Function modifica(fecha as Date)  --> Es aquí donde me da el error.
 
End Function

Muchas gracias.

Un saludo

Ana
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 15/11/2018 17:06:31
Es que no estás haciendo lo que te dije. Yo te dije que declares nulable el parámetro o propiedad.

Pruébalo tu función así:

1
2
3
4
5
Public Function modifica(fecha as Date?)
 
  MessageBox.Show(fecha)
 
End Function

Luego nos cuentas.

Saludos cordiales,
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
sin imagen de perfil
Val: 18
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Ana (11 intervenciones) el 16/11/2018 17:03:22
Hola,

Lo he probado y me da el error que adjunto.
error

Muchas gracias.

Un saludo

Ana
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 17/11/2018 02:36:57
Pues hubiera sido mejor que desplegaras el boton detalles.

Además, sería bueno echarle una mirada como están definidos los campos del datagridview y como es que estás cargando los datos, ya que de eso depende mucho.

Saludos cordiales,
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
sin imagen de perfil
Val: 18
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Ana (11 intervenciones) el 19/11/2018 16:43:58
Perdona, llevas razón.

Esto es lo que pone cuando despliegas el botón detalles:

Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
System.InvalidCastException: La conversión especificada no es válida.
en diarioCoches.dgDiarioCoche_RowValidating(Object sender, DataGridViewCellCancelEventArgs e)
en System.Windows.Forms.DataGridView.OnRowValidating(DataGridViewCellCancelEventArgs e)
en System.Windows.Forms.DataGridView.OnRowValidating(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex)
en System.Windows.Forms.DataGridView.CommitEdit(DataGridViewDataErrorContexts context, Boolean forCurrentCellChange, Boolean forCurrentRowChange)
en System.Windows.Forms.DataGridView.OnCellMouseDown(HitTestInfo hti, Boolean isShiftDown, Boolean isControlDown)
en System.Windows.Forms.DataGridView.OnCellMouseDown(DataGridViewCellMouseEventArgs e)
en System.Windows.Forms.DataGridView.OnMouseDown(MouseEventArgs e)
en System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
en System.Windows.Forms.Control.WndProc(Message& m)
en System.Windows.Forms.DataGridView.WndProc(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Ensamblados cargados **************
mscorlib
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3221.0 built by: NET472REL1LAST_C
Código base: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
acceso
Versión del ensamblado: 1.0.0.0
Versión Win32: 1.0.0.0
Código base: file:///C:/_ejecutables/AGF/Debug/acceso_01.exe
----------------------------------------
System.Windows.Forms
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3221.0 built by: NET472REL1LAST_C
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3190.0 built by: NET472REL1LAST_C
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.VisualBasic
Versión del ensamblado: 10.0.0.0
Versión Win32: 14.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Core
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3221.0 built by: NET472REL1LAST_C
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3160.0 built by: NET472REL1LAST_C
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Windows.Forms.resources
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_es_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
System.Data.resources
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_es_b77a5c561934e089/System.Data.resources.dll
----------------------------------------
System.Transactions
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3221.0 built by: NET472REL1LAST_C
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Numerics
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
mscorlib.resources
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.7.3056.0 built by: NET472REL1
Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_es_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

************** Depuración JIT **************
Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
aplicación o equipo (machine.config) debe tener el
valor jitDebugging establecido en la sección system.windows.forms.
La aplicación también se debe compilar con la depuración
habilitada

Por ejemplo:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
se enviará al depurador JIT registrado en el equipo
en lugar de controlarlo mediante el cuadro de diálogo.

Muchas gracias.

Un saludo

Ana
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 19/11/2018 20:53:12
Fíjate que el error es claro, dice que no puede hacer una conversión, posiblemente tengas algún formato que estés metiendo, en cualquier caso te envío un formulario con un datagridview en el cual, en la columna 5 le puede meter una fecha de esta manera :19-11-2018 y dar click en el botón, y te dirá que la fecha es válida, si das click sin poner nada te dirá que va vacío.

Espero que sea como lo estás manejando, ya que no das mucha explicación al respecto

Saludos cordiales,
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
sin imagen de perfil
Val: 18
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Ana (11 intervenciones) el 20/11/2018 17:50:39
Hola,

He visto el ejemplo que me has facilitado.

Lo tengo igual, y me da este error: "No se puede convertir un objeto DBNull en otros tipos"

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub modificaRegistro()
 
    Dim resultado As Integer
    Dim fila As DataGridViewRow = dgDiarioCoche.CurrentRow()
    MessageBox.Show("entra en funcion", "modiifca")
 
    modificaRegistro(Convert.ToDateTime(fila.Cells(14).Value))   --> Aquí es donde me da el error, y si le pongo Convert.ToDateTime(fila.Cells(14).Value) también me da error.
 
End Sub
 
Private Function modificaRegistro(fecha As Date?)
    MessageBox.Show(fecha)
End Function

No sé como puedo hacerlo.

Muchas gracias.

Un saludo

Ana
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Parámetro tipo date NULL

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 21/11/2018 07:51:24
Si has ejecutado el ejemplo que te he enviado, verás que no tiene ese problema.

Ahora para evitar el error, lo que puedes hacer es verificar si está nulo el valor en la celda, no hagas la conversión, solo si contiene algo, lo convierte, sino pues siempre te va a dar error porque estás tratando de convertir a fecha un valor nulo.

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