... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Expressão inserida é muito complexa

Usuário Francisco:

Boa noite.

Tenho uma consulta e na linha de campo uso o operador SeImed.  Estou usando uma expressão muito grande e ao dar Enter, apresenta esta mensagem:

"A expressão que você inseriu é muito complexa"

Como faço para que dê certo a expressão?

Expressão Utilizada:

Tempo Total de Penas: SeImed([PenaAno]="01A";"Mais de 1 ano até 2 anos";
SeImed([PenaAno]="02A";"Mais de 1 ano até 2 anos";
SeImed([PenaAno]="03A";"Mais de 2 até 4 anos";
SeImed([PenaAno]="04A";"Mais de 2 até 4 anos";
SeImed([PenaAno]="05A";"Mais de 4 até 8 anos";
SeImed([PenaAno]="08A";"Mais de 4 até 8 anos";
SeImed([PenaAno]="09A";"Mais de 8 até 15 anos";
SeImed([PenaAno]="15A";"Mais de 8 até 15 anos";
SeImed([PenaAno]="16A";"Mais de 15 até 20 anos";
SeImed([PenaAno]="20A";"Mais de 15 até 20 anos";
SeImed([PenaAno]="21A";"Mais de 20 até 30 anos";
SeImed([PenaAno]="30A";"Mais de 20 até 30 anos";
SeImed([PenaAno]="31A";"Mais de 30 até 50 anos";
SeImed([PenaAno]="50A";"Mais de 30 até 50 anos";
SeImed([PenaAno]="51A";"Mais de 50 até 100 anos";
SeImed([PenaAno]="100A";"Mais de 50 até 100 anos";
SeImed([PenaAno]="101A";"Mais de 100 anos")))))))))))))))))

Suporte:

Francisco,

existe um limite em que se pode aninhar o SeImed.  Se não me engano é de até 14. Podemos contornar a limitação, substituindo por uma função.

Criei esta função:

Public Function fncRetornaPena(strPena As String) As String
Select Case strPena
   Case "01A", "02A": fncRetornaPena = "Mais de 1 ano até 2 anos"
   Case "03A", "04A": fncRetornaPena = "Mais de 2 até 4 anos"
   Case "05A", "08A": fncRetornaPena = "Mais de 4 até 8 anos"
   Case "09A", "15A": fncRetornaPena = "Mais de 8 até 15 anos"
   Case "16A", "20A": fncRetornaPena = "Mais de 15 até 20 anos"
   Case "21A", "30A": fncRetornaPena = "Mais de 20 até 30 anos"
   Case "31A", "50A": fncRetornaPena = "Mais de 30 até 50 anos"
   Case "51A", "100A": fncRetornaPena = "Mais de 50 até 100 anos"
   Case "101A": fncRetornaPena = "Mais de 100 anos"
   Case Else
    fncRetornaPena = "Valor incorreto..."
End Select
End Function

E na consulta usei desta forma:

SELECT tblTeste.Código, tblTeste.PenaAno, fncRetornaPena([penaano]) AS Pena
FROM tblTeste;

Baixe e estude o arquivo exemplo oferecido.

Usuário Francisco:

Boa noite.

Deu certo. Muito obrigado.

Download

 


 

 


Não há comentário

Envie seu comentário: