Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deise Vicky

Criando Relatórios no Visual Studio 2011

Recommended Posts

Pessoal;

Estou desenvolvendo um sistema web e encontrei dificuldades para utilizar o componente ReportViewer com parâmetros do tipo data já que estou usando o MYSql.

Resolvi então postar a solução que encontrei para ajudar quem tiver a mesma dificuldade:

 

 


<asp:HiddenField ID="hfNomePaciente" runat="server" />
<asp:HiddenField ID="hfEspecialidade" runat="server" />
<asp:HiddenField ID="hfDataInicio" runat="server" />
<asp:HiddenField ID="hfDataFim" runat="server" />

<rsweb:ReportViewer ID="reportPagamentos" runat="server" Font-Names="Verdana" 
               Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
               WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="100%" 
               onreportrefresh="reportPagamentos_ReportRefresh">
               <LocalReport ReportPath="Relatorios\Report\RelatorioPagamentos.rdlc">
                   <DataSources>
                       <rsweb:ReportDataSource DataSourceId="SqlDataSourcePagamentos" 
                           Name="DataSetPagamentos" />
                   </DataSources>
               </LocalReport>
           </rsweb:ReportViewer>

           <asp:SqlDataSource ID="SqlDataSourcePagamentos" runat="server" 
               ConnectionString="<%$ ConnectionStrings:asclindbConnectionString %>" 
               ProviderName="<%$ ConnectionStrings:asclindbConnectionString.ProviderName %>" 
               SelectCommand="select * from view_pagamentos_paciente WHERE DataConsulta BETWEEN @dataInicio AND @dataFim AND NomePaciente LIKE @paciente AND DescricaoEspecialidade LIKE @especialidade ORDER BY NomePaciente, DataPagamento, DescricaoParcela">

               <selectparameters>                
                   <asp:controlparameter controlid="hfNomePaciente" name="paciente" propertyname="Value" type="string" defaultvalue="%%" ConvertEmptyStringToNull="true" />                
                   <asp:controlparameter controlid="hfEspecialidade" name="especialidade" propertyname="Value" type="string" defaultvalue="%%" ConvertEmptyStringToNull="true" />                  
                   <asp:controlparameter controlid="hfDataInicio" name="dataInicio" propertyname="Value" type="DateTime" ConvertEmptyStringToNull="true" />
                   <asp:controlparameter controlid="hfDataFim" name="dataFim" propertyname="Value" type="DateTime" ConvertEmptyStringToNull="true" />
               </selectparameters>

           </asp:SqlDataSource>

 

Após adicionado os componentes, a forma que fiz para atribuir valores ao parâmetros foi utilizar o evento Refresh do ReportViewer.

O código ficou assim:

 

   protected void Page_Load(object sender, EventArgs e)
       {
           if (!Page.IsPostBack)
           {
               MetodosAuxiliares m = new MetodosAuxiliares();

               DateTime dtInicio = new DateTime(1900, 01, 01);
               DateTime dtFim = new DateTime(9999, 12, 31);

               hfDataInicio.Value = m.ConvertDateToString(dtInicio);
               hfDataFim.Value = m.ConvertDateToString(dtFim);
           }
       }

       protected void reportPagamentos_ReportRefresh(object sender, System.ComponentModel.CancelEventArgs e)
       {
           MetodosAuxiliares m = new MetodosAuxiliares();

           hfNomePaciente.Value = "%" + txtPaciente.Text + "%";
           hfEspecialidade.Value = "%" + txtEspecialidade.Text + "%";

           DateTime dtInicio = new DateTime(1900, 01, 01);
           DateTime dtFim = new DateTime(9999, 12, 31);

           if (String.IsNullOrEmpty(txtDataInicio.Text))
               hfDataInicio.Value = m.ConvertDateToString(dtInicio);
           else
               hfDataInicio.Value = m.ConvertDateToString(Convert.ToDateTime(txtDataInicio.Text));

           if (String.IsNullOrEmpty(txtDataFim.Text))
               hfDataFim.Value = m.ConvertDateToString(dtFim);
           else
               hfDataFim.Value = m.ConvertDateToString(Convert.ToDateTime(txtDataFim.Text));
       }


    public class MetodosAuxiliares{

      public String ConvertDateToString(DateTime dt)
       {
           return dt.Month.ToString() + "-" + dt.Day.ToString() + "-" + dt.Year.ToString();
       }
    }

 

A maior dificuldade que tive foi com os valores do tipo DateTime pois demorei para descobrir que a data deve estar no formato MM/dd/YYYY.

 

Fica então a dica para quem encontrar dificuldade nesse sentido.

Espero que seja útil para alguém...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.