Jump to content
Fórum Script Brasil
  • 0

(Resolvido)Parametros em um Subreport


Angélica B. Bortolini

Question

Boa Tarde!

Estou fazendo um relatorio que necessita de um subreport o qual precisa de 3 parametros: empresa, numero e sequencia. Até agora só descobri como passar parametros se o select do subreport não tiver where , adicionando o relacionamento com com o report principal no "Change Subreport Links ", mas o meu subreport tras uma função de banco (SQl Server) e necessita que eu crie parametros no Command.

Então a minha duvida é a seguinte:

Como posso ligar estes parametrôs do Command do subreport com os parametros do report principal?

Desde já agradeço a ajuda!

Edited by Angélica B. Bortolini
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

angelica, não entendi o q seria o "command do subreport". você fala da opcao SQL Query?? ou você fala do codigo dentro do sql (em uma SP ou view)??

pra q servem esses parametros do command?? se o subreport segue um filtro especifico, e vai ser o mesmo todas as vezes q o subreport aparecer, então você faz o filtro normalmente. um link com o report principal ira adicionar filtros a mais, mas não deve interferir no primeiro.

agora, se esses parametros dependem do report principal, então você deveria fazer apenas o filtro pelo link com o principal, não seria necessario outro filtro.

você diz q quer linkar os parametros do subreport com o report principal, mas é o subreport q depende dos campos do report principal e não o contrario.

talvez seja melhor você postar o codigo sql q esta usando e explicar qual seria a relacao desses parametros com o report principal.

Link to comment
Share on other sites

  • 0

Ola...

vou explicar melhor o meu problema então.

------------------------------------------------------

Estou usando para fazer um relatório o Crystal Report XI

------------------------------------------------------

* Select do report principal:

select sequencia_grade, empresa_id, ordem_id, seq_impressao, bobina_h_ini, bobina_h_fin, bobina_metros, bobina_metroc_acm,
bobina_velocidade, bobina_impressor, bobina_sucata
from [dbo].[fnc_ordem_de_producao_bobina]({?bobina_empresa},{?bobina_ordem},{?bobina_seq_impressao},{?bobina_linhas})
----------------------------------------------------- * Select do subreport 1:
select impressao.numero_id,impressao.cliente_id,cli.razao_social,impressao.pedido_id,impressao.produto_id,impressao.produto_descricao,
impressao.data_emissao,impressao.largura,impressao.espessura,impressao.cilindro,impressao.peso_sucata,impressao.tempo_setup_hora_inicial,
impressao.tempo_setup_hora_final,impressao.tempo_total,impressao.tempo_producao,impressao.peso_acerto,impressao.metros,
(impressao.peso_sucata+impressao.peso_acerto),impressao.solvente_kg,impressao.retardador_kg,impressao.dupla_face_metros,impressao.solvente_valor_kg,impressao.retardador_valor_kg,impressao.dupla_face_valor_metro,impressao.solvente_custo_total,impressao.retardador_custo_total,impressao.dupla_face_custo_total,
cor.sequencia, cor.cor, cor.pantone, cor.anilox, cor.kg_retorno, cor.kg_total, cor.valor_kg, cor.custo_total, impressao.observacoes,
impressao.empresa_id, impressao.seq_impressao

from prd_impressao impressao
left join prd_impressao_cor cor on cor.empresa_id    = impressao.empresa_id
                               and cor.numero_id     = impressao.numero_id
                               and cor.seq_impressao = impressao.seq_impressao 
left join cliente cli on cli.empresa_id = impressao.empresa_id
                     and cli.cliente_id = impressao.cliente_id
---------------------------------------------------------------- * Select do Suberport 2:
select sequencia_grade, empresa_id, ordem_id, seq_impressao, cor ,  pantone, anilox, kg_tinta,retorno , total, valor_kg, custo                      
from [dbo].[fnc_ordem_de_producao_cor]({?bobina_empresa},{?bobina_ordem},{?bobina_seq_impressao})

----------------------------------------------------------------

Para passar parametros para o subreport 1 eu usei o "Change Subreport Links". Este Select ficou sem "Where", e é filtrado diretamente pela opção do Crystal report

que citei acima. E nenhum parametro foi criado diretamente para este select.

Para o subreport 2, foi necessário fazer uma função de tabela, e é necessário a criação de parametros para este select.

---------------------------------------------------------------

Então o que não consegui fazer foi o seguinte:

-No "Change Subreport Links" não aparece os parametros que criei para o subreport 2, então, não consigo relaciona-los.

Minhas duvidas:

- Estou fazendo certo em deixar um select sem where?

- É possivel relacionar parametros criados em um subreport com o report principal?

--------------------------------------------------------------

Espero ter conseguido explicar melhor, realmente está confuso este relatório.

Obrigado!

Edited by kuroi
Adicionar tag CODE
Link to comment
Share on other sites

  • 0
- Estou fazendo certo em deixar um select sem where?

sim, a não ser q fosse necessaria uma filtragem independente do report principal. essa é a ideia da opcao Change Subreport Links. você não filtra o select do subreport, o filtro é feito pelo link entre o subreport e o principal. se você abrir o selection formula do subreport, vera a filtragem pelos parametros da opcao Change Subreport Links.

hum... mas acontece q há muito tempo não uso crystal reports com sql server. tenho usado bastante com access, onde não passamos parametros para o select e sim fazemos a filtragem dentro do crystal report, atraves do selection formula.

alem de q não uso a versao XI, então isso pode estar atrapalhando ainda mais pra q eu entenda o seu caso, mas....

eu entendi q {?bobina_empresa} seria um parameter field do crystal reports no report principal, certo?? e você tb tem um parameter field chamado {?bobina_empresa} no subreport 2, certo??

você quer passar o valor desse campo {?bobina_empresa} q esta no report principal para o {?bobina_empresa} do subreport, certo??

bom, o crystal reports a principo não permite isso. mas no crystal 8.5, eu consigo contornar isso da seguinte maneira:

- clique com o botao direito no subreport 2 e selecione a opcao Change Subreport Links.

- selecione esse campo {?bobina_empresa} no report principal e clique no botao >.

- na opcao Select data in subreport based on field:, selecione qualquer campo do subreport 2 (é necessario q o campo seja do mesmo tipo q o parameter field) e clique OK.

certo, então vamos imaginar q o campo sequencia_grade do subreport seja do mesmo tipo q {?bobina_empresa} e q você tenha escolhido esse campo pra fazer o link. o q vai acontecer?? você esta filtrando o seu subreport apenas para os registros onde sequencia_grade seja = {?bobina_empresa}. não é isso q queremos, certo??

mas o detalhe é q esse link entre o report principal e o subreport é feito adicionando um novo campo parametro no subreport. o valor do campo escolhido no report principal então é passado para esse parametro no subreport.

sendo assim, se você selecionou o campo {?bobina_empresa} para linkar, significa q o valor desse parametro foi passado para um novo parameter field dentro do subreport. e isso era td o q você queria, certo?? repare então, q na lista de parameter fields no subreport, deve haver um novo campo com o nome de {?Pm?bobina_empresa}. esse é campo q esta recebendo o valor de {?bobina_empresa} do report principal.

entretanto, temos q excluir a filtragem q criamos para o sequencia_grade, certo??

certo, então faca o seguinte:

- no subreport, clique em menu Report -> Edit Selection Formula -> Record.

- la dentro, você deve ver um codigo de filtragem, acho q mais ou menos assim:

{fnc_ordem_de_producao_cor.sequencia_grade} = {?Pm?bobina_empresa}

então, apague este codigo para cancelarmos o filtro e clique no botao de salva a formula.

- pronto, cancelamos a filtragem q fizemos pelo Change Subreport Links. mas pra nossa sorte, o parametro continua sendo passado. então, passe esse campo {?Pm?bobina_empresa} para a funcao fnc_ordem_de_producao_cor() do subreport 2 do jeito q você queria. porque ele vai estar com o mesmo valor do parametro {?bobina_empresa} do report principal.

inclusive, se quiser excluir o {?bobina_empresa} original do subreport e alterar o nome do {?Pm?bobina_empresa} para {?bobina_empresa}, o valor deve continuar sendo passado do principal para o sub.

- faca o mesmo com os outros parametros.

hum... é mais ou menos isso. se eu entendi o q você precisa, deve ser isso. e isso eu tenho certeza q funciona perfeitamente no crystal 8.5 para passar um parametro do report principal ao subreport. agora, como disse, tenho pouca experiencia de crystal reports com sql, mas pelo q entendi, isso deve funcionar tb no seu caso.

outra opcao seria, talvez, caso você esteja usando um software q você desenvolve em qualquer linguagem, e é a partir desse software q você passa os parametros para o report principal, então você programaria o software pra passar os parametros tb para o subreport. dependendo, pode ser ate mais simples do q o procedimento todo q passei acima.

Link to comment
Share on other sites

  • 0

Ola!

Vou tentar a sua sugestão pra ver se da certo na versão de crystal que estou usando. Tive que resolver o meu problema de outra maneira, porque o cliente não podia mais esperar (criei tabelas temporarias com exatamente os dados que eu precisava mostrar no relatório) mas acho que desse jeito que tu falou deve dar certo também.

De qualquer forma te agradeço pela ajuda!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...