Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Rigueto

Imprimir Array - Crystal Reports

Recommended Posts

Olá pessoal,

 

Podem me ajudar com uma dúvida

 

Preciso imprimir um ARRAY no CRYSTAL REPORTS, do qual eu não sei quantas posições terá...

 

O array é um parâmetro, e o usuário é quem digitará os valores, fiz um teste com 2 valores e consegui imprimir dessa maneira...

 

(if {?SUBGRUPO} = '*'
then 'Todos os Subgrupos'
else 'SubGrupo: ' + {?SUBGRUPO}[1] + ", " + {?SUBGRUPO}[2])
Porém, se eu testo com 1 valor apenas, ele da erro, pois esta tentando imprimir a posição 2 que esta vazia...e se o usuário entrar com mais de 3 valores, obviamente, só irá imprimir os 2 primeiros..=/
Enfim, em java, eu faria um laço for
for int i = 0; {?SUBGRUPO}.length; i++ {
{?SUBGRUPO};
}
Mas e como eu faria no CRYSTAL REPORTS?
Aliás eu nem sei qual é a linguagem usada no Crystal cai de paraquedas nesse projeto...
Poderiam me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você faz um for contando o tamanho do array -1

 

Então, ali ta feito o contador do array, mas esta retornando true...

 

Confere o código por gentileza..

 

 

ToText(
(for x :=1 to ubound({?SUBGRUPO})-1 do


{?SUBGRUPO}[x] + ", "


)))

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os arrays sempre começam do 0, então você pode usar

 

For x =0 to ubound({?SUBGRUPO})

 

porque o Ubound já traz a quantidade exata de registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas vc pode me ajudar, pois não estou entendendo do por que meu código retorna TRUE....

 

Quando na verdade, o que eu queria, era que ele retornasse cada posição do array.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código... ele retorna TRUE.. ao invés de retornar os valores que adicionei no {?SUBGRUPO}[1.2.3.4.5.6.7.etc]

 

ToText(
(for x :=1 to ubound({?SUBGRUPO})-1 do


{?SUBGRUPO}[x] + ", "


)))

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por isso que você esta recebendo true, porque o retorno do laço de repetição quando acaba corretamente é um boolean TRUE/FALSE...

 

Faça o laço antes, ou então coloque a função dentro do laço ao invés do laço dentro da função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, olha o código completo, é só um texto do relatório que estou criando...

 

shared numberVar x;  "Demonstrativo dos Maiores Clientes de " + " ( " +(IF {?Grupo de Produto} = '*' then 'TODOS OS GRUPOS DE PRODUTO' ELSE{CVH_TIP_DEFINICAO_GROUP.DESCRICAO})  + " ) - " + "Divisão: (" +(if {?P_Divisão} = 'Klok Virtual'THEN 'KLOK'ELSE     if {?P_Divisão} = 'Intermediacao'    THEN 'INTERMEDIAÇÃO'    ELSE         if {?P_Divisão} = 'Exportacao'        THEN 'EXPORTAÇÃO'        ELSE            if {?P_Divisão} = '*'            THEN ' GERAL CVH '                else 'OUTROS') + ") - " +             "Fornecedor: " +(IF {?FORNECEDOR} = '*'THEN 'TODOS OS FORNECEDORES'ELSE {?FORNECEDOR} )   + "  " +(if {?SUBGRUPO} = '*'then 'Todos os Subgrupos'else 'SubGrupo: ' +ToText((for x :=1 to ubound({?SUBGRUPO})-1 do({?SUBGRUPO}[x] + ", "))))

Ninguém mais...??

Compartilhar este post


Link para o post
Compartilhar em outros sites
shared numberVar x;

shared stringVar y;




(if {?SUBGRUPO} = '*'

then 'Todos os Subgrupos'

else 'SubGrupos: ' +


ToText(

(for x := 1 to ubound({?SUBGRUPO}) do

IF x = ubound({?SUBGRUPO})

THEN

y := y + ({?SUBGRUPO}[x])

ELSE

y := y + ({?SUBGRUPO}[x]+ ", " );

y;

)


)


)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.