none
Pegar dados de registro de um DataSet selecionado como parâmetro RRS feed

  • Pergunta

  • Bom dia.

    Eu tenho um cadastro de períodos com os dados "nome", "data de" e "data até".

    Eu exibo esses dados em um parâmetro para escolha do usuário.

    Quando o relatório for exibido, eu quero exibir os dados "data de" e "data até" no cabeçalho, mas não consegui encontrar uma forma para isso.

    Alguém sabe como fazer?

    Desde já agradeço.


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 13:06

Respostas

  • Leonardo,

    Se o seu dataset nao for muito grande, voce pode usar a expressao Lookup para retornar os valores dos outros 2 campos references ao valor selecionado. Lookup so esta disponivel no ssrs 2008 r2.

    Outra alternativa eh criar um Segundo dataset, que pegue o valor que o usuario selecionou e filter para retornar somente a linha reference ao valor selecionado, dessa forma voce pode relacionar usando o first.

    Uma Terceira alternative eh usar uma expressao como a de baixo:

    =First(iif(Fields!Nome.Value = Parameters!Nome.Value, Fields!Data_De.Value, Nothing), "DataSetPeriodos")"

    att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    segunda-feira, 11 de junho de 2012 16:21
  • Boreki, deu certo com Lookup, fiz assim:

    =Lookup(Parameters!iIDPeriodo.Value, Fields!ID.Value, Fields!Data_De.Value, "DataSetPeriodos")

    Muito obrigado a todos pela colaboração.


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 17:25

Todas as Respostas

  • Leonardo,

    basta ir na expression da caixa de texto e colocar:

    =Parameters!NomeDoSeuParametro.Value


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 11 de junho de 2012 13:15
    Moderador
  • Fabrizzio, com a expressão "=Parameters!NomeDoSeuParametro.Value", eu visualizo o Value Field que no meu caso é o ID do Período.

    Eu também posso usar a expressão "=Parameters!NomeDoSeuParametro.Label", para visualizar o Label Field que no meu caso é o NOME do Período.

    O meu DataSet ainda tem mais dois campos, que são "data de" e "data até". O que eu quero é visualizar esses dois campos.


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 13:24
  • Leandro,

    Não sei o caso de passar na seu Expression o valor que esta sendo apresentado nos Parameters Fields?

    Ou seja, na sua expression, informar a propriedade Text dos Parameters Fields.


    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]

    segunda-feira, 11 de junho de 2012 13:31
  • Júnior, o meu Parâmetro de Período está configurado da seguinte forma:

    Value Field: ID (ID do Cadastro de Períodos)

    Label Field: NOME (Nome do Cadastro de Períodos)

    O DataSet que eu uso no Parâmetro tem os campos ID, NOME, DATA_DE e DATA_ATE.

    O que eu quero exibir no CABEÇALHO é o NOME do período, a DATA_DE e a DATA_ATE.

    Vamos a um exemplo. O usuário seleciona o Período "Maio de 2012", que tem o ID 4, a DATA_DE "21/04/2012" e a DATA_ATE "20/05/2012".

    Nesse caso, a expressão "=Parameters!iPeriodo.Label" é igual a "Maio de 2012" e a expressão "=Parameters!iPeriodo.Value" é igual a 4.

    No meu CABEÇALHO, eu quero exibir o seguinte texto: "Período: 'Maio de 2012', Datas de '21/04/2012' até '20/05/2012'"

    Entendeu?


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 14:11
  • Leonardo,

    Certo entendi sim, então, estas valores não estão vinculados ao seu Campo que esta no DataSet!

    Então para exibir estas informações você poderia adicionar ao seu cabecalho um TextBox e no propriedade Expression passar o valor que foi selecionado, neste caso, não o Parameters Fields, mas sim o do próprio Campo.


    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]

    segunda-feira, 11 de junho de 2012 14:49
  • Ok Júnior, mas você pode dar um exemplo, pois eu não sei como fazer isso.

    Eu sei que se eu usar a expressão "First(Fields!DATA_DE.Value, "DataSetPeriodos")", irá exibir o valor relacionado ao 1º registro, mas eu quero o selecionado que pode ser o 1º, o 4º, o 15º....

    segunda-feira, 11 de junho de 2012 16:08
  • Leonardo,

    Se o seu dataset nao for muito grande, voce pode usar a expressao Lookup para retornar os valores dos outros 2 campos references ao valor selecionado. Lookup so esta disponivel no ssrs 2008 r2.

    Outra alternativa eh criar um Segundo dataset, que pegue o valor que o usuario selecionou e filter para retornar somente a linha reference ao valor selecionado, dessa forma voce pode relacionar usando o first.

    Uma Terceira alternative eh usar uma expressao como a de baixo:

    =First(iif(Fields!Nome.Value = Parameters!Nome.Value, Fields!Data_De.Value, Nothing), "DataSetPeriodos")"

    att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    segunda-feira, 11 de junho de 2012 16:21
  • Boreki, deu certo com Lookup, fiz assim:

    =Lookup(Parameters!iIDPeriodo.Value, Fields!ID.Value, Fields!Data_De.Value, "DataSetPeriodos")

    Muito obrigado a todos pela colaboração.


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 17:25
  • Leonardo,

    Vale ressaltar que esta solução é viável somente quando o seu Lookup apresenta poucas linhas, em outras situações, será necessário obter os valores de outra forma, acredito que neste caso o mais indicado seria utilizar outro dataset.


    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]

    segunda-feira, 11 de junho de 2012 17:35
  • O meu DataSet de Períodos terá de 24 a 36 registros.

    O problema que vocês estão me alertando é com performace?


    Att. Leonardo Cristiano de Alice

    segunda-feira, 11 de junho de 2012 17:45
  • Leonardo,

    Isso mesmo performance.


    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]

    segunda-feira, 11 de junho de 2012 17:55