Fórum Compo Nulo - ASP.NET #7529

13/07/2009

0

Prezados:   Ao tentar exibir em uma Label um campo oriundo de uma base de dados access, que contém valor NULO, estou recebendo uma mensagem de erro (O operador '=' não está definido para tipo 'DBNull' e seqüência de caracteres "F".). Entendo que na base de dados o campo está com valor nulo, mas como faço a comparação de um valor nulo aqui no ASP?   A linha que está dando a mensagem de erro é a seguinte:   <asp:Label ID="lblAV1B1" runat="server" Text='<%#if(Eval("FaltaAv1B1")="F", Eval("FaltaAv1B1"), If(IsNumeric(Eval("Av1B1")), If(Eval("Av1B1") <> 0, Eval("Av1B1"), "-"), "-"))%>' />   Indemberge
Indemberge Santos

Indemberge Santos

Responder

Posts

13/07/2009

Luiz Maia

Ola Indemberg,   Para comparação de campos de banco de dados com valores nulos, vc deve usar:   DBNull.Value
Segue um exemplo:   SELECT * From Items where Author = @Author SQLiteParameter authorParameter = new SQLiteParameter("@Author");
authorParameter.Value = (author != null) ? (object)author : DBNull.Value;
insertValue.Parameters.Add(authorParameter); Abraços Att Luiz Maia
Responder

Gostei + 0

13/07/2009

Indemberge Santos

Luiz;   Fiz da forma que me explicou contudo continuo recebendo mensagem de erro.   Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente.

Mensagem de Erro do Compilador: BC30452: O operador '=' não está definido para os tipos 'Object' e 'System.DBNull'.

Alteração feita no meu código ASP.NET:   <asp:Label ID="lblAV1B1" runat="server" Text='<%#if(Eval("FaltaAv1B1")=dbNull.Value,"",if(Eval("FaltaAv1B1")="F", Eval("FaltaAv1B1"), If(IsNumeric(Eval("Av1B1")), If(Eval("Av1B1") <> 0, Eval("Av1B1"), "-"), "-")))%>' /> Indemberge
Responder

Gostei + 0

13/07/2009

Luiz Maia

Vc usa C# ou VB?   DBNull.Value é case sensitive tb.   Aguardo Luiz Maia  
Responder

Gostei + 0

13/07/2009

Indemberge Santos

Luiz;   Eu programo em VB.Net, mas o que estou precisando é passar esse dado para um ListView, e o teste que faço é no código ASP, entendeu?   Alterei a linha para o seguinte:   (Se o conteúdo for Nulo, a propriedade text do objeto deve ser "", senão verifico se o conteúdo é um "F" ou um número e passo esse valor para a propriedade text) <asp:Label ID="lblAV1B1" runat="server" Text='<%#if(Eval("FaltaAv1B1")=DBNull.Value,"",if(Eval("FaltaAv1B1")="F", Eval("FaltaAv1B1"), If(IsNumeric(Eval("Av1B1")), If(Eval("Av1B1") <> 0, Eval("Av1B1"), "-"), "-")))%>' /> Da forma que estou fazendo estou recebendo a seguinte mensagem:   Mensagem de Erro do Compilador: BC30452: O operador '=' não está definido para os tipos 'Object' e 'System.DBNull'.
Indemberge        
Responder

Gostei + 0

13/07/2009

Luiz Maia

Indemberg,   Não sei exato quando ao VB, mas no C# comparação é fieta usando dois sinais de igual, tipo assim:   if (valor1 == DBNull.Value)     Veja se funciona alterando isto ai, Aguardo   Att Luiz Maia
Responder

Gostei + 0

13/07/2009

Indemberge Santos

Luiz;   O meu problema não está relacionado a linguagem Vb.Net ou C#, o meu problema é no código ASP e ao objeto Listview, se fosse no Vb conseguiríamos resolver com a função IsNull, ou se eu estivesse utilizando um Gridview não teríamos problema, pelo menos não tive até agora.   Vou explicar o que eu fiz:   1) Coloquei um Listview em uma página ASP, defini colunas e campos que devem ser exibidos.   2) No load da página (.aspx.vb) utilizo um método para popular meu listview, segue código abaixo:   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim ObjAluno As New ClassAluno Dim ObjBoletimER As New ClassBoletimER FvwDadosAluno.DataSource = ObjAluno.ObterAlunoCodigo(Session("Nome")) FvwDadosAluno.DataBind() 'Vou informar o Cdigo da Turma que o Aluno pertence lblTurma.Text = Request.Params("Cod1") lblAnoLetivo.Text = Request.Params("Cod2") lblSequencia.Text = Request.Params("Cod3") lvwBoletim.DataSource = ObjBoletimER.ObterBoletimAlunoTurma(Session("Nome"), Request.Params("Cod1"), Request.Params("Cod2"), Request.Params("Cod3")) lvwBoletim.DataBind() End Sub 3) Quando o aluno falta a uma avaliação devo exibir um "F", se o campo for nulo de exibir um expaço em branco, se a nota que foi lançada para a avaliação em questão (página .aspx):   <asp:Label ID="lblAV1B1" runat="server" Text='<%#if(Eval("FaltaAv1B1")==DBNull.Value,"-",if(Eval("FaltaAv1B1")="F", Eval("FaltaAv1B1"), If(IsNumeric(Eval("Av1B1")), If(Eval("Av1B1") <> 0, Eval("Av1B1"), "-"), "-")))%>' /> Indemberge
Responder

Gostei + 0

13/07/2009

Indemberge Santos

Luiz;   Consegui, descobri uma função chamada IsDBNull que retorna verdadeiro ou false em caso de campos nulos, então meu código ASP ficou assim:   <asp:Label ID="lblAV1B1" runat="server" Text='<%#if(IsDBNull(Eval("FaltaAv1B1")),"-",if(Eval("FaltaAv1B1")="F", Eval("FaltaAv1B1"), If(IsNumeric(Eval("Av1B1")), If(Eval("Av1B1") <> 0, Eval("Av1B1"), "-"), "-")))%>' />   Muito obrigado pela ajuda.   Indemberge
Responder

Gostei + 0

13/07/2009

Luiz Maia

Falou Indemberg, precisando é so falar, estamos a sua disposição, ok? Abraços   Att Luiz Maia
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar