none
filtrar relatorio por data RRS feed

  • Pergunta

  • fiz um relatorio assim..

    // Primeiro: Define a consulta que preenche
                // um DataSet com o conte�do da Tabela de Clientes
                string queryvendas;
                queryvendas = "SELECT CLIENTES.NOME, VENDA.TIPO_DE_COMPRA ,VENDA.DATA_DE_COMPRA ,VENDA.VALOR_TOTAL FROM CLIENTES CROSS JOIN VENDA WHERE(VENDA.TIPO_DE_COMPRA = 'MasterCard')";
                SqlDataAdapter vendasAdapter;


                vendasAdapter = new SqlDataAdapter(queryvendas, conexao);
                DataSet Ds = new DataSet();
                vendasAdapter.Fill(Ds, "CLIENTES");
                vendasAdapter.Fill(Ds, "VENDA");
                // Criando um novo objeto do tipo do relat�rio criado (RptTelefones)
                master rpt = new master();


                // Definindo o resultado da busca, como sendo o conte�do do relat�rio
                rpt.SetDataSource(Ds);
                // Exibindo os dados no relat�rio.
                MastercrystalReportViewer.ReportSource = rpt;
            }
        }

     

    porem quero mostra dos ultimos 2 meses, não importanto que mês seja, sempre nessa regra... deu para entender?

     

    obrigado e boa tarde


    Aprendendo e evoluindo
    segunda-feira, 14 de junho de 2010 19:29

Respostas

  • Olá,

    Não sei qual campo vc quer os ultimos dois meses, vou supor que seja o Venda.Data_De_Compra

    Tente isso:

     

      queryvendas = "SELECT CLIENTES.NOME, VENDA.TIPO_DE_COMPRA ,VENDA.DATA_DE_COMPRA ,VENDA.VALOR_TOTAL FROM CLIENTES CROSS JOIN VENDA WHERE(VENDA.TIPO_DE_COMPRA = 'MasterCard') AND Venda.Data_De_Compra >= DATEADD(month, -2, GETDATE()) ";

    A função DateAdd adiciona ou remove partes de uma data, partes quer dizer dia, mes, ano etc. Então pegamos a data de hoje e subtraimos menos 2 meses, assim, pegamos somente as vendas que sejam maior ou igual a este resultado.

    Espero ter ajudado,

    t+

    segunda-feira, 14 de junho de 2010 19:57
  • Prezado,

    Tente fazer um INNER JOIN ao inves de CROSS JOIN...


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quarta-feira, 16 de junho de 2010 23:26
    Moderador

Todas as Respostas

  • Olá,

    Não sei qual campo vc quer os ultimos dois meses, vou supor que seja o Venda.Data_De_Compra

    Tente isso:

     

      queryvendas = "SELECT CLIENTES.NOME, VENDA.TIPO_DE_COMPRA ,VENDA.DATA_DE_COMPRA ,VENDA.VALOR_TOTAL FROM CLIENTES CROSS JOIN VENDA WHERE(VENDA.TIPO_DE_COMPRA = 'MasterCard') AND Venda.Data_De_Compra >= DATEADD(month, -2, GETDATE()) ";

    A função DateAdd adiciona ou remove partes de uma data, partes quer dizer dia, mes, ano etc. Então pegamos a data de hoje e subtraimos menos 2 meses, assim, pegamos somente as vendas que sejam maior ou igual a este resultado.

    Espero ter ajudado,

    t+

    segunda-feira, 14 de junho de 2010 19:57
  •  deu certinho, porem no meu bd tem 15 registros porem no relatorio aparece mais de 30 registro, pq?

     

     

    obrigado


    Aprendendo e evoluindo
    quarta-feira, 16 de junho de 2010 15:51
  • alguem pode me ajudar?

    Aprendendo e evoluindo
    quarta-feira, 16 de junho de 2010 18:24
  • Prezado,

    Tente fazer um INNER JOIN ao inves de CROSS JOIN...


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quarta-feira, 16 de junho de 2010 23:26
    Moderador
  • testei e ficou legal, queria saber como faço para colocar um combobox com os meses, e quando escolher um mês da lista e aparece no relatorio aquele mês em especifico?
    Aprendendo e evoluindo
    sexta-feira, 25 de junho de 2010 18:54
  • Thiago,

    Peço que inicie outra thread com a sua nova dúvida... Isso ajuda na organização do fórum...

    Obrigado.


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 25 de junho de 2010 20:16
    Moderador