Problema con iif

di il
4 risposte

Problema con iif

If cess_conv = "  /  /" Then
	cmd.Parameters.Add(New OleDbParameter("@cess_conv", OleDbType.Date)).Value = DBNull.Value
Else
	cmd.Parameters.Add(New OleDbParameter("@cess_conv", OleDbType.Date)).Value = CDate(cess_conv)
End If
cmd.Parameters.Add(New OleDbParameter("@cess_conv", OleDbType.Date)).Value = iif(cess_conv="  /  /",DBNull.Value,cdate(cess_conv))

Il mio non è un vero problema, ma vorrei capire perchè con IIF mi viene segnalato un errore (non è possibile convertire un text in date) ,mentre il dbnull funziona con un normale IF.

Grazie. 

4 Risposte

  • Re: Problema con iif

    Perché la IIF è una funzione e quindi TUTTI gli argomenti vengono valutati prima di chiamare la funzione.

    La IF è una istruzione che permette di eseguire SOLO la parte vera o falsa, evitando così l'errore.

  • Re: Problema con iif

    La cosa che non capisco è questa espressione 

    cess_conv = "  /  /"

    Mi sfugge la logica… .me la spieghi? 

  • Re: Problema con iif

    Come ovviamente Oregon ti ha dato la soluzione corretta, ecco come devi fare:

    cmd.Parameters.Add(New OleDbParameter("@cess_conv", OleDbType.Date)).Value = If(cess_conv="  /  /",DBNull.Value,cdate(cess_conv))
  • Re: Problema con iif

    25/05/2023 - By65Franco ha scritto:


    La cosa che non capisco è questa espressione 

    cess_conv = "  /  /"

    Mi sfugge la logica… .me la spieghi? 

    E' l'esito di una maskedTextBox-data lasciata vuota.

    Grazie a tutti per l'esauriente spiegazione.

Devi accedere o registrarti per scrivere nel forum
4 risposte