none
Property - Valores Nulos RRS feed

  • Pergunta

  • Criei a property C_DataTermino para aceitar valores nulo que vem do banco de dados, no entanto continuando dando erro. Fiz algumas coisa errrada?

     

    Public Property C_DataTermino() As Nullable(Of Date)

    Get

    Return _DataTermino.Conteudo

    End Get

    Set(ByVal value As Nullable(Of Date))

    _DataTermino.Conteudo = CType(value, Nullable(Of Date))

    End Set

    End Property

    quinta-feira, 18 de dezembro de 2008 18:43

Respostas

  • Olá Venildo,

     

    Se você leu o tópico acima, então você viu que quando um valor é nulo no banco de dados, não dá para atribuir diretamente, porque o nulo do banco de dados não é o Nothing... É o DbNull.Value.

     

    Então, você tem que ajustar o seu código para fazer a atribuição correta.

     

    Algo como:

    Code Snippet

     

     If row("dtVigencia") = DBNull.Value Then

    p_objApolice.C_DataVigencia = CType(row("dtVigencia"), Nullable(Of Date))

     Else

    p_objApolice.C_DataVigencia = Nothing

     End If

     

    Abraços,
    Caio Proiete

     

    PS: Habitue-se a informar mais detalhes sobre o seu problema, de preferência com trechos de código. Se houver mensagem de erro, informe exatamente qual é essa mensagem... É muito mais fácil ajudar assim.




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 18 de dezembro de 2008 19:26
    Moderador

Todas as Respostas

  • Olá Venildo,

     

    Qual é exatamente o erro que está acontecendo? Existe alguma mensagem de erro?

    Você pode mostrar o trecho de código onde acontece o erro?

     

    Esse cast que você faz no "Set" da sua propriedade é desnecessário, já que a variável value já é do tipo Nullable(Of Date), mas creio que esse não seja o problema que você está se referindo.

     

    Vale lembrar que uma coisa é o null do VB.NET (nothing) e outra coisa é o null do banco de dados (DbNull.Value).

    Sugiro que você dê uma olhada no artigo abaixo para ver se ajuda:

     

    Operator '=' is not defined for type 'DBNull' and type 'Integer'
    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=4085126&SiteID=21

     

    Armazenar data inválida?
    http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=4201645&SiteID=21

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 18 de dezembro de 2008 19:00
    Moderador
  • Olá Caio,

     

    Li os dois post, o primeiro esta melhor explicado.

     

    O erro acontece quando atribuo o valor nul para a propriedade

     

    p_objApolice.C_DataVigencia = row("dtVigencia")

     

    O erro acontece aqui, quando a dtVigencia tem o valor nulo no banco de dados

    quinta-feira, 18 de dezembro de 2008 19:14
  • Olá Venildo,

     

    Se você leu o tópico acima, então você viu que quando um valor é nulo no banco de dados, não dá para atribuir diretamente, porque o nulo do banco de dados não é o Nothing... É o DbNull.Value.

     

    Então, você tem que ajustar o seu código para fazer a atribuição correta.

     

    Algo como:

    Code Snippet

     

     If row("dtVigencia") = DBNull.Value Then

    p_objApolice.C_DataVigencia = CType(row("dtVigencia"), Nullable(Of Date))

     Else

    p_objApolice.C_DataVigencia = Nothing

     End If

     

    Abraços,
    Caio Proiete

     

    PS: Habitue-se a informar mais detalhes sobre o seu problema, de preferência com trechos de código. Se houver mensagem de erro, informe exatamente qual é essa mensagem... É muito mais fácil ajudar assim.




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 18 de dezembro de 2008 19:26
    Moderador
  • Obrigado, CAio

     

    Pode deixar que na próxima vez colocarei mais detalhes.

     

     

    quinta-feira, 18 de dezembro de 2008 20:19