Ireport (cnpj e cpf)

18 respostas
B

Bom dia!!
não ta rodando no ireport o campo :CNPJ/CPF…no meu editor de expressoes esta assim:

($F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 0, 3 ) + “.”;

($F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 4, 6 ) + “.”;

($F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 7, 9 ) + “-”;

($F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 10, 11 );
($F{PESSOAS_CNPJ_CPF}.length() == 14) ? “cnpj” : $F{PESSOAS_CNPJ_CPF}.substring( 0, 2 ) + “.”;

($F{PESSOAS_CNPJ_CPF}.length() == 14) ? “cnpj” : $F{PESSOAS_CNPJ_CPF}.substring( 3, 5 ) + “.”;

($F{PESSOAS_CNPJ_CPF}.length() == 14) ? “cnpj” : $F{PESSOAS_CNPJ_CPF}.substring( 6, 8 ) + “/” ;

($F{PESSOAS_CNPJ_CPF}.length() == 14) ? “cnpj” : $F{PESSOAS_CNPJ_CPF}.substring( 9, 12 ) + “-”;

($F{PESSOAS_CNPJ_CPF}.length() == 14) ? “cnpj” : $F{PESSOAS_CNPJ_CPF}.substring( 13, 14 );

Qual o problema!??
Urgente!!

Obrigada!

18 Respostas

B

Era para ser fito assim…

($F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 0, 3 ) + “.” +$F{PESSOAS_CNPJ_CPF}.substring( 3, 6 )+ “.” + $F{PESSOAS_CNPJ_CPF}.substring( 6, 9 )+ “-” +$F{PESSOAS_CNPJ_CPF}.substring( 9, 11 )

como termina???

P

Expressões no Jasper tem que ter esse formato:
(expr) ? Faça caso verdadeiro : Faça caso falso

Então o que ta errado é logo no inicio aonde vc coloca
"cpf" : ${F…

O certo é :
($F{PESSOAS_CNPJ_CPF}.length() == 11)
// Se atributo com 11 posições
? "cpf[color=red]: " + [/color]$F{PESSOAS_CNPJ_CPF}.substring( 0, 3 ) + “.” +$F{PESSOAS_CNPJ_CPF}.substring( 3, 6 )+ “.” + $F{PESSOAS_CNPJ_CPF}.substring( 6, 9 )+ “-” +$F{PESSOAS_CNPJ_CPF}.substring( 9, 11 )
// Não tem 11 posições
: “O CNPJ ou CPF nao tem 11 posições”

B

[b]Como pode ver…a parte do cpf esta correta. Apenas o cnpj que nao estou sabendo como retorno, caso seja cnpj…Pois o campo retornará
das duas uma, ou CPF ou CNPJ…como faço isso…como trato este “if”??

Não entendi muito bem seu exemplo…pois essa parte que voce mostrou que estava errado(cpf) ja foi testado e esta correto!
vou colocar o codigo do CPF novamente para saber como esta atualmente…

([color=red]$F{PESSOAS_CNPJ_CPF}.length() == 11) ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 0, 3 ) + “.” +$F{PESSOAS_CNPJ_CPF}.substring( 3, 6 )+ “.” + $F{PESSOAS_CNPJ_CPF}.substring( 6, 9 )+ “-” +$F{PESSOAS_CNPJ_CPF}.substring( 9, 11 ) [/color]

Espero resposta!!
Grata!

B

//Esse esta dizendo quando é True:
$F{PESSOAS_CNPJ_CPF}.length() == 11 ? “cpf” : $F{PESSOAS_CNPJ_CPF}.substring( 0, 3 ) + “.” + $F{PESSOAS_CNPJ_CPF}.substring( 3, 6 )+ “.” + $F{PESSOAS_CNPJ_CPF}.substring( 6, 9 ) + “-” +$F{PESSOAS_CNPJ_CPF}.substring( 9, 11 )
//Esse deveria ser o False: tem algo errado neste aqui…
$F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” + $F{PESSOAS_CNPJ_CPF}.substring(2, 5) + “.” + $F{PESSOAS_CNPJ_CPF}.substring(6, 8)+ “/” + $F{PESSOAS_CNPJ_CPF}.substring(9, 12)+ “-” + $F{PESSOAS_CNPJ_CPF}.substring(13, 14)

Estas condições estão tratando de colocar os “.” “.”"-"…quando Cpf e colocar tambem para cnpj

Alguem poderia me ajudar a descobrir o que esta errado??
Grata!!

P

Vc tem um campo que pode ter um CPF(11 posições) ou um CNPJ(14 posições) certo?

Vc quer que a empressão já mostre um texto (Cpf/CNPJ) conforme o tipo do conteudo ?

Mas pelo codigo que vc mandou ele vai mostrar a string “cpf” caso o campo tenha 11 posições [size=18][color=red]$F{PESSOAS_CNPJ_CPF}.length() == 11 ? “cpf”[/color][/size] e caso contrario vai mostrar APENAS o conteudo do field formatado. E por que isso ??? Condição logica dentro do Jasper segue a estrutura “(condição) ? Se verdadeiro : Se falso” perceba que tem o simbolo “?” e depois o simbolo “:”(dois pontos)

P

Será que não é isso que vc quer fazer:

($F{PESSOAS_CNPJ_CPF}.length==11)
? "Numero do CPF: " + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cpf…) + “.” + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cpf…)
: "Numero do CNPJ: " + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cnpj…) + “/” + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cnpj…)

B

Sim!!..
ele ira retornar um cpf ou cnpj no campo $F{PESSOAS_CNPJ_CPF} e como pode ver o verdadeiro(True) eu ja fiz…agora queria saber como faço o False…que no caso : $F{PESSOAS_CNPJ_CPF}.length() == “cpf” …ele joga o cpf!! se for cnpj a mesma coisa so que assim : $F{PESSOAS_CNPJ_CPF}.length() != “cnpj” …retorna cnpj(pelo menos era!)…ele nao esta retornando o cnpj…
Sei que é so uma condição a ser feita agora que é o False…ate aqui meu If ta funcionando bacana:

$F{PESSOAS_CNPJ_CPF}.length() == 11 ? “cpf” :
$F{PESSOAS_CNPJ_CPF}.substring(0, 3)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(3, 6)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(6, 9)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(9, 11)

o cnpj esta assim:

$F{PESSOAS_CNPJ_CPF}.“cnpj” +
$F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(2, 5)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(5, 8)+ “/” +
$F{PESSOAS_CNPJ_CPF}.substring(8, 12)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(12, 14)

O que pode estar errado???

P

Vc ja trocando as bolas, no meu post anterior eu mostrei como funciona uma expressão no Jasper.

Vc fala em retornar o CPF ou CNPJ no Field $F{PESSOAS_CNPJ_CPF}, isso não existe, fields são apenas pra exibição !!!

B

Então amigo…

Eu so quero que exiba o cpf ou cnpj…Teria que ser tal condição: se for CPF : xxx.xxx.xxx-xx (11 campos) se não xx.xxx.xxx/xxxx-xx . Assim, que eu quero que fique!
Acho que eu so preciso por uma condição de False que e para CNPJ…

Estamos nos interpretando mal…
mesmo assim…fico grata pela interação!

Espero que alguem me tire esse tormento de duvida!..pois ja fiz de todo jeito…e nao deu certo!!

obs: Nao quero fazer com o “if” e “else”…quero fazer de forma mais sucinta.

P

babi_underground:
Sim!!..
ele ira retornar um cpf ou cnpj no campo $F{PESSOAS_CNPJ_CPF} e como pode ver o verdadeiro(True) eu ja fiz…agora queria saber como faço o False…que no caso : $F{PESSOAS_CNPJ_CPF}.length() == “cpf” …ele joga o cpf!! se for cnpj a mesma coisa so que assim : $F{PESSOAS_CNPJ_CPF}.length() != “cnpj” …retorna cnpj(pelo menos era!)…ele nao esta retornando o cnpj…
Sei que é so uma condição a ser feita agora que é o False…ate aqui meu If ta funcionando bacana:

$F{PESSOAS_CNPJ_CPF}.length() == 11 ? [color=red]“cpf”[/color] : [color=darkred]// Se tamanho for 11 vai mostras APENAS o texto “cpf”. O que vem depois dos “dois-pontos” é o ELSE.
[/color]$F{PESSOAS_CNPJ_CPF}.substring(0, 3)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(3, 6)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(6, 9)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(9, 11)

o cnpj esta assim:

[color=red]$F{PESSOAS_CNPJ_CPF}.“cnpj” + // essa linha com .“cnpj” esta errado, o resto é o bloco que deve estar apos os “dois-pontos” que é o ELSE da condicao. [/color]
$F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(2, 5)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(5, 8)+ “/” +
$F{PESSOAS_CNPJ_CPF}.substring(8, 12)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(12, 14)

O que pode estar errado???

P

Só pra deixar mais claro, quando vc usa $F{PESSOAS_CNPJ_CPF} isso é um Field que é preenchido com os dados de uma fonte externa de dados, se vc definiu esse field com o tipo String vc tem acesso a todos os metodos da classe String, mas quando vc exemplificou a mascara do CNPJ desse jeito:

$F{PESSOAS_CNPJ_CPF}.“cnpj” +
$F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(2, 5)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(5, + “/” +
$F{PESSOAS_CNPJ_CPF}.substring(8, 12)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(12, 14)

a primeira linha[ $F{PESSOAS_CNPJ_CPF}.“cnpj” + ] esta errada, pois não existe o metodo “cnpj” na classe String.

P

E pra finalizar, o que é “forma mais sucinta” ??? vc tem um campo que pode conter CPF ou CNPJ tendo o tamanho deles como forma de identificar o tipo do conteudo.

De novo coloco o codigo do meu ultimo post que é o que vai resolver o que vc quer:
($F{PESSOAS_CNPJ_CPF}.length==11)
? "Numero do CPF: " + [color=red]$F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cpf…) + “.” + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cpf…) // Esse pedaço é um exemplo, aqui vc coloca a mascara. Eu não coloquei por preguiça[/color]
: "Numero do CNPJ: " + [color=red]$F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cnpj…) + “/” + $F{PESSOAS_CNPJ_CPF}.subString(…Mascara do Cnpj…) // Esse pedaço é um exemplo, aqui vc coloca a mascara. Eu não coloquei por preguiça[/color]

Mas pra não ter mais duvidas vai o codigo completo, é copiar e colar !!!

($F{PESSOAS_CNPJ_CPF}.length==11) [color=red]// Inicio do IF[/color]
? "Numero do CPF: " + $F{PESSOAS_CNPJ_CPF}.substring(0, 3)+ “.” + [color=red]// Sinal de Interrogação indica o THEN[/color]
$F{PESSOAS_CNPJ_CPF}.substring(3, 6)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(6, 9)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(9, 11)
: "Numero do CNPJ: " + $F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” + [color=violet]// Sinal de DOIS PONTOS indica o ELSE[/color]
$F{PESSOAS_CNPJ_CPF}.substring(2, 5)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(5, + “/” +
$F{PESSOAS_CNPJ_CPF}.substring(8, 12)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(12, 14)

B

Voce esta mandando colocar o nome: CPF OU CNPJ. Não precisa…
copiei e colei(so pra testar)…nao deu certo!..
mesmo pq ja tinha feito dessa forma…e o mais estranho e que não da certo!
ate a parte do cpf(como tinha dito) ele escreve bem…a partir do cnpj e que ele nao funciona…
o problema esta na condição False( que e do CNPJ)

Obrigada!

P

Coloca isso no lugar e me fala o que deu:
($F{PESSOAS_CNPJ_CPF}.length==11) ? “XXXXXXXXX” : “YYYYYYYYYYYYY”

B

Ja deu certo…

Olha como ficou:

($F{PESSOAS_CNPJ_CPF}.length()==11)
? $F{PESSOAS_CNPJ_CPF}.substring(0, 3)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(3, 6)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(6, 9)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(9, 11)
: $F{PESSOAS_CNPJ_CPF}.substring(0, 2)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(2, 5)+ “.” +
$F{PESSOAS_CNPJ_CPF}.substring(5, 8)+ “/” +
$F{PESSOAS_CNPJ_CPF}.substring(8, 12)+ “-” +
$F{PESSOAS_CNPJ_CPF}.substring(12, 14)

Valew pela ajuda…
Obrigada…

obs: como implemento um “if” para um campo onde os dados estão vindo abreviados…
no caso Situação: ativo (A) e nao ativo (N)…como faço para ao inves de apareçer somente o A e N…
apareça o nome completo?

:roll:

P

O que faltava até mesmo no meu codigo era os parenteses do metodo length

P

Ué, do mesmo jeito que foi feito com o CPF/CNPJ !!! Vc já usou o metodo “subString” qual a duvida ???

M

veja http://www.guj.com.br/posts/list/85428.java

Criado 18 de março de 2008
Ultima resposta 20 de mar. de 2008
Respostas 18
Participantes 3