none
Gerar relatório através de uma pesquisa entre datas RRS feed

  • Pergunta

  • Tenho um form onde coloquei um crystal report viewer. Nesse form também coloquei 2 datetimepicker para que o usuario escolha um periodo das informações que ele quer para gerar o relatorio. Nesse relatorio deverá conter as informações sobre um serviço executado que tem como campos data, veiculo, destino e valor. O que quero é que quando o usuario escolher o periodo e clicar no botao gerar relatorio apareça no crystal report viewer as informações de data, veiculo, destino e valor que estao cadastrados no banco.

    Desde já agradeço a ajuda.


    Silvia Helena
    quarta-feira, 23 de fevereiro de 2011 17:41

Respostas

  • Consegui resolver assim:

    private void btnPesqPeriodo_Click(object sender, EventArgs e)
            {

                SqlConnection conn = new SqlConnection(@"Data Source=GOLDENTEC-PC\SQLEXPRESS;Initial Catalog=Banco;Integrated Security=True;Pooling=False");

                SqlCommand comm = new SqlCommand("SELECT Escalas.Dtescala, Escalas.Veiculo, Escalas.Destino, CONVERT (DECIMAL(10,2),(VlrViagens.ValorViagem)) AS Valor FROM Escalas INNER JOIN VlrViagens ON Escalas.Destino = VlrViagens.LocalViagem where Dtescala <= '" + dtpPeriododatafinal.Text + "'" + "and Dtescala >= '" + dtpPeriododatainicio.Text + "'", conn);

                conn.Open();

                DataSet dt = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter(comm);
                da.Fill(dt);

                ReportDocument cryRpt = new ReportDocument();
                cryRpt.Load("C:/Users/goldentec/Documents/Visual Studio 2008/Projects/Araibu/Araibu/ValoresServicos.rpt");
                cryRpt.SetDataSource(dt.Tables[0]);
                crystalReportViewer1.ReportSource = cryRpt;
                cryRpt.Refresh();

                conn.Close();
            }

    Agora o relatorio está sendo gerado através da pesquisa entre as datas inicial e final.

    • Marcado como Resposta helenaolive quarta-feira, 2 de março de 2011 16:21
    segunda-feira, 28 de fevereiro de 2011 19:07

Todas as Respostas

  • Ola helena.

    Siga esses passos:

    1 - Crie o select do banco com as colunas que farão parte do relatório;

    2 - No código, armazene os registros resultante do seu select em um datatable por exemplo;

    3 - Crie um data set com as mesmas colunas do seu select;

    4 - No modo design do relatório, em Field Explorer -> Database fields, aponte para o novo dataset criado.

    5 - Para fazer a ligação dados select e relatório, utilize as seguintes linhas de código:

     

    Dim Rel as New Relatorio.rpt 'Instancia do relatório criado
    
    Dim dtDadosRel as new Datatable
    
    dtDadosRel = "dados resultantes do select"
    
    Rel.Database.Tables("Nome da tabela no dataset").SetDataSource(Session.Item("dtDadosRel "))
    

    Voce deverá passar o período selecionado por parâmetro para que o BD, que retornará os dados para ggerar o relatório.


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 12:59
  • Consegui resolver assim:

    private void btnPesqPeriodo_Click(object sender, EventArgs e)
            {

                SqlConnection conn = new SqlConnection(@"Data Source=GOLDENTEC-PC\SQLEXPRESS;Initial Catalog=Banco;Integrated Security=True;Pooling=False");

                SqlCommand comm = new SqlCommand("SELECT Escalas.Dtescala, Escalas.Veiculo, Escalas.Destino, CONVERT (DECIMAL(10,2),(VlrViagens.ValorViagem)) AS Valor FROM Escalas INNER JOIN VlrViagens ON Escalas.Destino = VlrViagens.LocalViagem where Dtescala <= '" + dtpPeriododatafinal.Text + "'" + "and Dtescala >= '" + dtpPeriododatainicio.Text + "'", conn);

                conn.Open();

                DataSet dt = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter(comm);
                da.Fill(dt);

                ReportDocument cryRpt = new ReportDocument();
                cryRpt.Load("C:/Users/goldentec/Documents/Visual Studio 2008/Projects/Araibu/Araibu/ValoresServicos.rpt");
                cryRpt.SetDataSource(dt.Tables[0]);
                crystalReportViewer1.ReportSource = cryRpt;
                cryRpt.Refresh();

                conn.Close();
            }

    Agora o relatorio está sendo gerado através da pesquisa entre as datas inicial e final.

    • Marcado como Resposta helenaolive quarta-feira, 2 de março de 2011 16:21
    segunda-feira, 28 de fevereiro de 2011 19:07