none
Colocar em cada linha do relatorio uma variavel no SSRS, é possivel? RRS feed

  • Pergunta

  • Olá pessoal, tudo bem?

    Então, estou gerando um relatório no SSRS e encontrei uma dúvida(ou desafio).
    Gerei uma tabela com as seguintes colunas: Cliente, % de contribuição, tempo de uso e total. Tanto Cliente como Tempo de uso eu pego no meu banco de dados... Ou seja, de uma forma básica o meu relátorio vai sair +/- assim:

    CLIENTE | % DE CONTRIBUICAO | TEMPO DE USO | TOTAL
    Client1   |    0                             |  123                 |   0
    Client2   |    0                             |  4567               |   0
    Client3   |    0                             |  890                 |   0

    Ok!!! O Problema está na coluna % de contribuição e Total, pois a cada linha da CONTRIBUIÇÃO o usuario deverá informar e o Total será a multiplicação da contribuição com o tempo de uso. Entenderam?

    Ou seja, o meu usuario vai informar os três valores da coluna "% de Contribuição" e automaticamente o SSRS vai ter que gerar um relatório assim:  
    Ex.:

    INPUT do cliente: 20,30,50

    Output do SSRS

    CLIENTE | % DE CONTRIBUICAO | TEMPO DE USO | TOTAL
    Client1   |    20                           |  123                 |   24,6
    Client2   |    30                           |  4567               |   1370,1
    Client3   |    50                           |  890                 |   445

    Tem como fazer essa dinamica no SSRS?

     

    OBS.: Estou usando versão SQL2005 e  SSRS 2005

     

    quarta-feira, 24 de novembro de 2010 13:23

Respostas

  • Bocao,

    O ideal seria voce preencher previamente a contribuicao no seu banco e gerar o relatorio inteiramente a partir dos dados do banco.

    Voce consegue criar um array no rs usando a parte de codigo (declara como um array no visual basic). No SSRS2005 voce tem pouquissimos recursos para fazer o que voce quer. Acredito que uma maneira é voce realmente criar uma função em vb que retorna o valor da contribuicao de cada cliente, e nas linhas do relatorio voce colocaria =Code.ContribuicaoCliente(Fields!client.Value) voce teria que criar toda a logica para passar os valores de contribuicao via parametro, fazer o parse disso no seu codigo e retornar o valor correto. Nao seria uma solucao bonita de qualquer forma.

    No ssrs2008 R2, voce poderia usar um dataset em XML para a contribuicao, e usar a expressao LOOKUP para buscar o valor de contribuicao de cada cliente.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    Olá Boreki,

     

    Realmente, colocar os dados numa tabela e fazer o report será o plano B e sobre a versão do SQL poderia pedir para o cliente fazer o update do SQL.

    Gostei da resposta e muito obrigado pela ajuda.

    UA,

    • Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:51
    • Não Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:52
    • Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:53
    quarta-feira, 1 de dezembro de 2010 21:24

Todas as Respostas

  • Bocão,

    De dentro de Reporting Services, você deseja solicitar estes valores? Mas você disse que seriam 3 valores que deve utilizados no cálculo.

    Então se for isso mesmo, a utilização de parâmetros talvez não ajude.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 25 de novembro de 2010 12:12
  • Bocão,

    De dentro de Reporting Services, você deseja solicitar estes valores? Mas você disse que seriam 3 valores que deve utilizados no cálculo.

    Então se for isso mesmo, a utilização de parâmetros talvez não ajude.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    Olá Junior, td bem?

    Sim, seria dentro do Reporting Service. Estava pensando em um array... Tem como criar um array no  SSRS?
    Hoje, esse relatório tem como referência as células no excel... Tipo: ="=E"+RowNumber(Nothing)+12+"*G"+RowNumber(Nothing)+12

    E o usuario importa o report para o excel e já tem as referencias das celulas automaticas. Então, só insere os valores do campo "% de contribuição". Creio que esse jeito que fiz foi como uma "gambiarra".

     

    UA,


    quinta-feira, 25 de novembro de 2010 20:18
  • Bocão,

    Eu particularmente não imagino que seria possível criar um array?

    Vou pesquisar.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    sábado, 27 de novembro de 2010 23:50
  • Bocao,

    O ideal seria voce preencher previamente a contribuicao no seu banco e gerar o relatorio inteiramente a partir dos dados do banco.

    Voce consegue criar um array no rs usando a parte de codigo (declara como um array no visual basic). No SSRS2005 voce tem pouquissimos recursos para fazer o que voce quer. Acredito que uma maneira é voce realmente criar uma função em vb que retorna o valor da contribuicao de cada cliente, e nas linhas do relatorio voce colocaria =Code.ContribuicaoCliente(Fields!client.Value) voce teria que criar toda a logica para passar os valores de contribuicao via parametro, fazer o parse disso no seu codigo e retornar o valor correto. Nao seria uma solucao bonita de qualquer forma.

    No ssrs2008 R2, voce poderia usar um dataset em XML para a contribuicao, e usar a expressao LOOKUP para buscar o valor de contribuicao de cada cliente.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services
    quarta-feira, 1 de dezembro de 2010 01:40
  • Bocao,

    O ideal seria voce preencher previamente a contribuicao no seu banco e gerar o relatorio inteiramente a partir dos dados do banco.

    Voce consegue criar um array no rs usando a parte de codigo (declara como um array no visual basic). No SSRS2005 voce tem pouquissimos recursos para fazer o que voce quer. Acredito que uma maneira é voce realmente criar uma função em vb que retorna o valor da contribuicao de cada cliente, e nas linhas do relatorio voce colocaria =Code.ContribuicaoCliente(Fields!client.Value) voce teria que criar toda a logica para passar os valores de contribuicao via parametro, fazer o parse disso no seu codigo e retornar o valor correto. Nao seria uma solucao bonita de qualquer forma.

    No ssrs2008 R2, voce poderia usar um dataset em XML para a contribuicao, e usar a expressao LOOKUP para buscar o valor de contribuicao de cada cliente.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    Olá Boreki,

     

    Realmente, colocar os dados numa tabela e fazer o report será o plano B e sobre a versão do SQL poderia pedir para o cliente fazer o update do SQL.

    Gostei da resposta e muito obrigado pela ajuda.

    UA,

    • Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:51
    • Não Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:52
    • Marcado como Resposta Bocao_Locao quinta-feira, 9 de dezembro de 2010 00:53
    quarta-feira, 1 de dezembro de 2010 21:24