none
Passar o nome do campo como parâmetro através de um combobox selecionável RRS feed

  • Pergunta

  • Boa tarde meus amigos.

    Sou novo aqui no forum e espero contar com a ajuda de vocês. O que eu preciso fazer com Reporting Services, eu já fiz usando o Crystal Reports for SAP Business One. Seria mais ou menos o seguinte:

     - Vamos imaginar que eu tenho uma simples consulta que traz os campos: Código, Descrição, Dimensoes. Gostaria de deixar um combobox para o usuario com essas 3 opções:

    1- Código

    2- Descrição

    3- Dimensoes

    e conforme a opção que ele escolher, eu passar o nome do campo como parâmetro e também o proprio parametro. Por exemplo:

    If opcao = 1 then @nomedocampo = @param
    else If opcao = 2 then @nomedocampo1 = @param
    else @nomedocampo2 = @param

    Seria possível desenvolver isso em Reporting Services pessoal? Como eu disse anteriormente, eu já desenvolvi algo parecido em Crystal Reports... Desde já, agradeço a atenção dispensada...


    [ ]'s José Otávio Lussari Up the Irons!


    • Editado J.Otávio segunda-feira, 4 de junho de 2012 18:52
    segunda-feira, 4 de junho de 2012 18:51

Respostas

  • Boa tarde. Consegui resolver usando a seguinte SQL:

    SELECT 
       T0.DocEntry, 
       T0.DocNum, 
       T0.DocType, 
       T0.CANCELED, 
       T0.Handwrtten, 
       T0.Printed, 
       T0.DocStatus, 
       T0.DocDate, 
       T0.DocDueDate,
       T0.CardCode, 
       T0.CardName 
    FROM OPOR T0 
    WHERE ((CASE WHEN (@ReportParameter1 = 1) THEN CONVERT(VARCHAR(10), T0.DocNum) 
    ELSE CONVERT(VARCHAR(60), T0.CardName) END) = @ReportParameter2)

    Lembrando que fiz um teste, agora vou colocar a mão na massa... qualquer coisa eu retorno!

    Obrigado...


    [ ]'s

    • Marcado como Resposta J.Otávio terça-feira, 26 de junho de 2012 19:59
    terça-feira, 5 de junho de 2012 17:27

Todas as Respostas

  • Bom Dia,

    Voce deve criar um reportParameter que contem os campos que voce deseja suportar, digamos que o nome seja "Campo". No seu relatorio, onde quiser usar esse campo use a collection fields, por exemplo

    =Fields(ReportParameters!Campo.Value).Value

    Basicamente, voce pode usar o nome do campo dentro do fields:

    =Fields("NomeDoCampo").Value

    Att

    Boreki

    segunda-feira, 4 de junho de 2012 22:24
  • Bom Dia,

    Voce deve criar um reportParameter que contem os campos que voce deseja suportar, digamos que o nome seja "Campo". No seu relatorio, onde quiser usar esse campo use a collection fields, por exemplo

    =Fields(ReportParameters!Campo.Value).Value

    Basicamente, voce pode usar o nome do campo dentro do fields:

    =Fields("NomeDoCampo").Value

    Att

    Boreki

    Bom dia Boreki. Obrigado por retornar.

    Estou aqui testando o que voce me falou. Já criei dois reportParameter.

    No primeiro eu configurei assim:

    >>>Em "Especificar Valores" o Rótulo que eu desejo que saia: "Número Pedido" e em valor eu coloquei o nome do campo: "DocNum"

    >>>Em "Especificar Valores" o Rótulo que eu desejo que saia: "Razão Socia" e em valor eu coloquei o nome do campo: "CardName"

    No segundo parametro:

    >>>Eu criei um reportParameter2 do tipo texto e no prompt: "Digite algo para pesquisar:"

    Agora estou em duvida onde devo colocar minha formula e como vou efetuar os IF's:

    Como eu faço para verificar o valor do reportParameter1 e usar no reportParameter2?

    Desculpe amigo, mas no reporting service eu nunca fiz algo desse tipo.... Agradeço se puder me ajudar.

    Obrigado.


    [ ]'s

    terça-feira, 5 de junho de 2012 11:18
  • Boa tarde. Consegui resolver usando a seguinte SQL:

    SELECT 
       T0.DocEntry, 
       T0.DocNum, 
       T0.DocType, 
       T0.CANCELED, 
       T0.Handwrtten, 
       T0.Printed, 
       T0.DocStatus, 
       T0.DocDate, 
       T0.DocDueDate,
       T0.CardCode, 
       T0.CardName 
    FROM OPOR T0 
    WHERE ((CASE WHEN (@ReportParameter1 = 1) THEN CONVERT(VARCHAR(10), T0.DocNum) 
    ELSE CONVERT(VARCHAR(60), T0.CardName) END) = @ReportParameter2)

    Lembrando que fiz um teste, agora vou colocar a mão na massa... qualquer coisa eu retorno!

    Obrigado...


    [ ]'s

    • Marcado como Resposta J.Otávio terça-feira, 26 de junho de 2012 19:59
    terça-feira, 5 de junho de 2012 17:27
  • Boa noite José,

    Marque a resposta que mais lhe ajudou ou que solucionou seu problema como resposta marcada, assim ajudará a pessoas com a mesma dúvida que você no futuro.

    Mas caso necessite, eu tenho uma solução talvez até mais simplificada em mente, basta pedir.


    Rodrigo Ataíde.

    sexta-feira, 8 de junho de 2012 21:19
  • Boa noite José,

    Marque a resposta que mais lhe ajudou ou que solucionou seu problema como resposta marcada, assim ajudará a pessoas com a mesma dúvida que você no futuro.

    Mas caso necessite, eu tenho uma solução talvez até mais simplificada em mente, basta pedir.


    Rodrigo Ataíde.

    Bom dia Rodrigo!

    Se possível, eu gostaria de conferir sua outra solução sim! Novos conhecimentos nunca é demais, certo?

    Vou esperar voce responder para marcar a resposta que voce me pediu, pois não sei se marcando a resposta o tópico é fechado...

    obrigado, valeu!!


    [ ]'s

    segunda-feira, 11 de junho de 2012 10:31
  • Bom dia José Otávio,

    Vejamos se eu compreendi.

    Você criou 2 reportParameters para fazer o filtro, correto?

    Só não consigo entender o seguinte: se são 3 filtros "Número pedido", "Razão Social" e "Digite o que deseja procurar" você precisa criar 3 reportParameters.

    Dessa forma, no momento de fazer o filtro, você tem duas opções, uma através do SQL e outra através das propriedades do dataset.

    Se você desejar fazer através do SQL, na cláusula Where, basta você colocar where 'nomedocampo' = 'nomedoreportparameter' (Para os casos onde o reportparameter for selecionado E apenas uma opção selecionado - sem as aspas simples).

    Para os casos que você vai digitar algum valor, a cláusula where fica dessa forma: where nomedocampo like '%'+nomedoreportparameter+'%' (com as aspas simples).

    Se você desejar que em um determinado reportparameter seja selecionado mais de uma opção, basta você mudar as propriedades desse parametro para multivalue, porém a única solução para o filtro desse jeito será através das propriedades do dataset, onde você precisará clicar com o botão direito em cima do dataset que utilizará esse filtro, logo em seguida ir em filter ou filtros, depois adicionar um e colocar o nome do campo IN nome do parametro.

    Pode ter ficado um pouco embaçado minha explicação, mas estou sem o report service aqui, ficaria melhor para explicar.

    Quanto a marcar a resposta do tópico, ele não será fechado, você pode continuar interagindo com os outros frequentadores. Mas só marque se a pergunta tiver sido mesmo respondida.


    Rodrigo Ataíde.

    segunda-feira, 11 de junho de 2012 11:49