Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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...
Carregando comentários...