Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Chamuanza

Condição num Ciclo While

Recommended Posts

Chamuanza

Um Bem Aja a todos

Não estou conseguindo resolver a seguinte questão:

Tenho este ciclo que apresenta o erro "Specified cast is not valid." quando (Leitor.Red) encontra uma celula da datagrid em branco.

Mas preciso que o ciclo continue até ao fim da Linha/Coluna passando pela celula em branco.Que condição devo aplicar no ciclo

 'Aqui sao lidos os dados
        While (LinhaAtual < LinhasPorPagina AndAlso Leitor.Read())
            'obtem os valores do datareader
            Id = Leitor.GetInt32(0)
            Nome = Leitor.GetString(1)
            Andar = Leitor.GetString(2)
            Ano = Leitor.GetString(17)
            Jan = Leitor.GetString(3)
            Fev = Leitor.GetString(4)
            Mar = Leitor.GetString(5)

            'inicia a impressao - Posição dos Dados
            PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
            e.Graphics.DrawString(Id.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 0, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Nome.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 50, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Andar.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 200, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Ano.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 300, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Jan.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 350, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Fev.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 425, PosicaoDaLinha, New StringFormat())
            e.Graphics.DrawString(Mar.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 500, PosicaoDaLinha, New StringFormat())

            LinhaAtual += 1
        End While

Share this post


Link to post
Share on other sites
Tuntankamon

Se o problema é que quando encontras uma célula em branco podes resolver isso de várias maneiras.

Por exemplo uma maneira rápida de resolver isso pode ser com o IIf e verificares para cada valor se é NULL (IsDBNull) e caso seja trocares por um outro valor por defeito, evitando assim essa excepção.

Outro modo pode ser simplesmente declares todas as variaveis como objectos, que assim já suportam NULLs, e recolheres os respectivos valores com Leitor(0) em vez do modo que fazes Leitor.GetType(0).

É só optares...

Share this post


Link to post
Share on other sites
Chamuanza

:dontgetit:

Obrigado desde já pela atenção, mas como sou maçarico não consigo descrutinar como utilizar as tuas sugestões.

Se me puderes dar um exemplo

Share this post


Link to post
Share on other sites
spipo

Olá Chamuanza,

O que se refere r00tfixxxer é a isto:

FUNÇÃO:

IIF -> http://msdn.microsoft.com/en-us/library/27ydhh0d%28VS.71%29.aspx

Public Function IIf( _
   ByVal Expression As Boolean, _ 
   ByVal TruePart As Object, _ 
   ByVal FalsePart As Object _ 
) As Object

Exemplo:

IIf(IsDBNull(misdatos(0)), "", misdatos(0))

O outro modo que se refere, diria que é declares as tuas variaveis do tipo Object:

Exemplo:

Dim Id As Object
Dim Nome As Object
....
....

E depois a hora de mostrar os valores, verificas se estão a NULLS os objectos, mas claro tens que asignar valores tal e igual como ja tens feito.

O erro ocorre quando tentas fazer "Cast" a um valor que está a null, que nao tem referencia por isso sai-te o erro: "Specified cast is not valid." devido a uma das variaveis que estás asignar, entrar um valor NULO, se fazes um debug, verás em concreto o que ocurre. A hora que estás a fazer .toString a uma das variáveis...uma delas entrará Nothing...e Nothing.toString ...dá erro, porque estas a tentar converter Nada a string...


Saludos,Carlos Menezes

Share this post


Link to post
Share on other sites
Chamuanza

:cheesygrin:

:) Obrigado pelas dicas, está a funcionar com a alteração das variaveis para o tipo Object

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.