none
eventos em RDLC RRS feed

  • Pergunta

  • Bom dia,

    Trabalhei com relatório no access, onde podemos criar funções e passá-las no evento "formatar" do detalhe do relatório e calcular valores para jogar no text box em tempo de execução, na medida que se faz o loop. Agora com visual  studio 2008 usando reportviewer e RDLC, como posso fazer isso? Preciso calcular um valor através uma função com vários sql´s (select ...from ....where...) que retorna um valor double, pegando o valor do campo como parâmetro a medida que vai passando cada registro. Não sei se me fiz entender, se alguém puder ajudar agradeço

    quinta-feira, 19 de janeiro de 2012 10:29

Todas as Respostas

  • Olá PrJony,

     

    Você gostaria de criar um campo a mais em seu report com o resultado da query ? Não necessariamente você precisa utilizar um função para isso!

     

    Algumas opções:

    -Você pode passar como parâmetro o valor já calculado.

    -Criar uma View no BD que retorna os resultados todos prontos (calculados)

     

    Rafael Zaccanini

    MTAC - Microsoft Technical Audience Contributor

    www.rafaelzaccanini.net

    quinta-feira, 19 de janeiro de 2012 14:39
  • Olá Rafael,

     

    Na realidade o campo já existe no rdlc, é uma textbox que retorna o valor de uma função, quando eu  jogo valores de outros campos como parâmetro, mas isso é em tempo de execução, ou seja, ele vai percorrendo a query e jogando valores para a função que retorna o preço de venda. E essa função é muito grande. Não consegui achar em nenhum lugar como conseguir fazer isso no reportviewer. Criar a view pode ser uma solução, mas são 20 relatórios e o único que até agora me apresentou essa situação foi esse. Não sei se fica legal criar uma view no oracle para um relatório entre 20. 

    Todos os relatórios, inclusive esse são carregados pelo mesmo dataset. 

    Se puderes dar um força agradeço muito. 

    Abaixo coloco o evento que chama a função e vai percorrendo os dados no access:

     

     

    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

    On Error GoTo Err_Detail_Format

     

        If FormatCount = 1 Then

            If vpar1023 = "S" Then

               Dim vpreco As Double

               vpreco = Nz(ret_pr_venda([Cod_Produto], [Perc_Comissao], 0, [PERC_CALC_ICMS], [Condicao_Pgto], IIf([CIF_FOB] = "C", -             1, 0), 1, [CGC_CLIENTE], [Sigla_Estado]), 0)

               If vpreco > 0 Then

                  Me!perc_difer = ([Vlr_Unitario] * (1 - ([Perc_Desconto] / 100))) / vpreco

                  If Me!perc_difer > 1 Then

                     Me!perc_difer = 0

                  Else

                     Me!perc_difer = arred_2((1 - Me!perc_difer) * 100)

                  End If

               Else

                  Me!perc_difer = 0

               End If

            End If

         End If

     

     

     

    quinta-feira, 19 de janeiro de 2012 15:19