Expressão inserida é muito complexa
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
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 |