none
Pesquisa na Semana

    Question

  • Ola pessoal..tudo bom ?

    Gostaria de saber se ha algum modo de fazer uma pesquisa na semana no bd, existe como ?

    At's!

    Thursday, August 03, 2006 11:04 PM

Answers

  • O DatePart vai te retornar numeros de 1 a 7, sendo 1 domingo e 7 sábado.
    Então acho que você pode fazer algo parecido com isso: Por exemplo, você quer os registros em que o dia da semana da Data seja domigo e sabado.

    SELECT * FROM Tabela WHERE DatePart(dw, Data) In (1, 7)
    Thursday, August 03, 2006 11:52 PM
  • Acho que com o IN você precisar especificar todos os valores sim. Ou você pode fazer com >= 1 AND <= 7.

     

    SELECT * FROM Tabela WHERE DatePart(dw, Data) >= 1 AND DatePart(dw, Data) <= 7

    Friday, August 04, 2006 1:28 PM
  • Bom, acho que não da pra fazer isso em um select só. Você teria que pegar a dia da semana e calcular a data do domingo e a data de sabado.

    1. O dia da semana você pode obter assim:
    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    DayOfWeek é um tipo enumerado com os dias da semana, sendo 0 para domingo e 6 para sabado.

    2. Para pegar o domingo anterior a partir de hoje;
    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);
    DateTime domingo = DateTime.Now.Subtract(ts);

    3. Para pegar o sabado:
    DateTime = sabado = DateTime.Now.AddDays(6 - dayOfWeek);

     

    Pronto, agora basta fazer um select com um WHERE entre as duas datas.

     

     


     

     

    Friday, August 04, 2006 5:49 PM
  • private void estaSemanaToolStripMenuItem_Click(object sender, EventArgs e)
    {
    // Retorna o dia da semana (0 - Domingo, 1 - Segunda....6 Sabado)

    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    // Retorna um objeto TIMESPAN onde no construtor passa o número de dias,
    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);

    // Para calcular o domigo, subtrai o número de dias com o objeto TIMESPAN da data atual
    DateTime domingo = DateTime.Now.Subtract(ts);

    // Para calcular o sabado, pega-se a data atual e adiciona-se a diferença para sabado. Por exemplo, hoje é 6ª feira, dayOfWeek é igual a 5. Subtraindo
    // de 6 que é sabado, temos 1. Então adicionado 1 a data atual temos o dia do mês do próximo sabado.
    DateTime sabado = DateTime.Now.AddDays(6 - dayOfWeek);
    MessageBox.Show(sabado.ToShortDateString());
    FiltrarDataView.RowFilter =
    "Dt_Agenda >= '" + domingo.ToShortDateString() + "' AND Dt_Agenda <= '" + sabado.ToShortDateString() + "'";
    }

    Não sei se ficou claro. No outros métodos você adicionou e subtraiu 7 do dayOfWeek. Funciona tb, mas acho melhor você. adicionar na data atual

     

    Friday, August 04, 2006 6:54 PM

All replies

  • Que tipo de pesquisa? Pode ser mais claro? Qual BD?
    Thursday, August 03, 2006 11:16 PM
  • Rogerio,

    FIltrar na tabela, pelas datas da semana. Entendeu ?

    At's!

    Thursday, August 03, 2006 11:19 PM
  • rs..tá dificil...pode dar um exemplo?
    Thursday, August 03, 2006 11:21 PM
  • Rogerio,

    Nao liga viu, sou pessimo para explicar as coisas, mas vou tentar

    preciso pegar as datas da semana, por exemplo:

    Domingo: 30/07/2006; segunda: 31/07/2006; terca: 01/08/2006; quarta: 02/08/2006; quinta: 03/08/2006; sexta: 04/08/2006; sabado: 05/08/2006;

    OK temos as datas, certo, isso por que eu as coloquei, como faco para obte-las via programacao, eu nao posso apenas colocar, certo ?

    ok, peguei as datas, agora com elas, farei um filtro no banco buscando todos os registro que estejam cadastradas nessas datas ? Como faco isso ?

    Entendeu ? ..heheheheh.

    At's!

    Thursday, August 03, 2006 11:29 PM
  • Eu não sei que banco você está usando, mas no SQL Server para pegar o dia da semana, você usa a função DatePart.

    DatePart(dw, Data)


                   


    Thursday, August 03, 2006 11:41 PM
  • Rogerio,

    Estou usando o sql server 2005 standard, tem como fazer uma multipla consulta ?

    At's!

    Thursday, August 03, 2006 11:44 PM
  • O DatePart vai te retornar numeros de 1 a 7, sendo 1 domingo e 7 sábado.
    Então acho que você pode fazer algo parecido com isso: Por exemplo, você quer os registros em que o dia da semana da Data seja domigo e sabado.

    SELECT * FROM Tabela WHERE DatePart(dw, Data) In (1, 7)
    Thursday, August 03, 2006 11:52 PM
  • Rogerio,

    Oque e' esse dw e Data que estao entre () ?

    At's!

    Thursday, August 03, 2006 11:59 PM
  • dw indica que você quer o dia da semana da data informada. Você não quer selecionar os registros da sua tabela em que a data da semana esteja no intervalo que você informou?
    Friday, August 04, 2006 12:02 AM
  • Rogerio,

    Vc tem certeza ? pq ele nao esta funcionando, ele esta dizendo que o 'dw' nao e' reconhecido.

    At's!

    Friday, August 04, 2006 12:08 AM
  • Rogerio,

    Ja consegui!! Vlw!!

     

    At's!

    Friday, August 04, 2006 12:21 AM
  • Você conseguiu do jeito que falei? Não esqueça de marcar o tópico como respondido.
    Friday, August 04, 2006 12:52 PM
  • Rogerio,

    Foi do jeito q vc falou sim, muito obrigado, e pode deixar, eu nunca esqueco de fazer isso, alias, eu faco questao de marcar como respondida! so' mais uma coisa, no exemplo que vc me passou, o (1,7) apenas me tras os registros do primeiro dia da semana e o ultimo, existe um jeito de colocar do primeiro dia ate o ultimo ? ou eu tenho q colocar todos os dias q eu quero da semana dentro do parenteses, assim: (1,2,3,4,5,6,7).

    At's!

    Friday, August 04, 2006 1:21 PM
  • Acho que com o IN você precisar especificar todos os valores sim. Ou você pode fazer com >= 1 AND <= 7.

     

    SELECT * FROM Tabela WHERE DatePart(dw, Data) >= 1 AND DatePart(dw, Data) <= 7

    Friday, August 04, 2006 1:28 PM
  • Rogerio,

    Muito obrigado pela ajuda!

    At's!

    Friday, August 04, 2006 1:36 PM
  • Rogerio,

    Esse comando so' serve no sql, e se eu quizer fazer esse tipo de consulta usand o objeto para filtrar - o dataview, como faco isso ?

    At's!

    Friday, August 04, 2006 3:18 PM
  • O que você pode fazer é retornar o dia da semana como uma coluna e usar essa coluna no filtro do Dataview.
    Friday, August 04, 2006 3:42 PM
  • Rogerio,

    Eu percebi, que ele nao tras desta semana, e sim de qualquer semana, preciso pegar desta semana apenas!

    At's!

    Friday, August 04, 2006 4:15 PM
  • Rogerio,

    Eu Acabei fazendo com um dataadapter, entao, nao sei se vc leu o post anterior, nao sei se eu nao entendi direito o q vc falou, ele pega dos dias da semana nao importando quais sejam, como faco para pegar os dias desta semana ?

    Friday, August 04, 2006 5:06 PM
  • Voce quer que o select retorne os registros da semana atual? Por exemplo, se rodasse hoje, você queria os registros do último domingo até sabado(amanhã)? Isso?
    Friday, August 04, 2006 5:18 PM
  •  

    Yes Chefia !

    At's!

    Friday, August 04, 2006 5:21 PM
  • Bom, acho que não da pra fazer isso em um select só. Você teria que pegar a dia da semana e calcular a data do domingo e a data de sabado.

    1. O dia da semana você pode obter assim:
    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    DayOfWeek é um tipo enumerado com os dias da semana, sendo 0 para domingo e 6 para sabado.

    2. Para pegar o domingo anterior a partir de hoje;
    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);
    DateTime domingo = DateTime.Now.Subtract(ts);

    3. Para pegar o sabado:
    DateTime = sabado = DateTime.Now.AddDays(6 - dayOfWeek);

     

    Pronto, agora basta fazer um select com um WHERE entre as duas datas.

     

     


     

     

    Friday, August 04, 2006 5:49 PM
  • Ola Rogerio,

    Meu show bola cara!!! Demais mesmo!!!

    com isso eu fiz, da semana passada e da semana que vem, de alguma forma eu mudei algumas coisas e deu certo! eu queria, por favor!, que me explicasse como funciona, pq nao entendi oq acontece ali, vou colocar os tres codigos dos tres botoes pra vc dar uma olhada, so' queria que, por favor me explicasse:

    private void estaSemanaToolStripMenuItem_Click(object sender, EventArgs e)

    {

    int dayOfWeek = (int)DateTime.Now.DayOfWeek

    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);

    DateTime domingo = DateTime.Now.Subtract(ts);

    DateTime sabado = DateTime.Now.AddDays(6 - dayOfWeek);

    MessageBox.Show(sabado.ToShortDateString());

    FiltrarDataView.RowFilter = "Dt_Agenda >= '" + domingo.ToShortDateString() + "' AND Dt_Agenda <= '" + sabado.ToShortDateString() + "'";

    }

    private void semanaAnteriorToolStripMenuItem_Click(object sender, EventArgs e)

    {

    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    dayOfWeek = dayOfWeek + 7;

    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);

    DateTime domingo = DateTime.Now.Subtract(ts);

    DateTime sabado = DateTime.Now.AddDays(6 - dayOfWeek);

    MessageBox.Show(sabado.ToShortDateString());

    FiltrarDataView.RowFilter = "Dt_Agenda >= '" + domingo.ToShortDateString() + "' AND Dt_Agenda <= '" + sabado.ToShortDateString() + "'";

    }

    private void próximaSemanaToolStripMenuItem_Click(object sender, EventArgs e)

    {;

    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    dayOfWeek = dayOfWeek - 7;

    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);

    DateTime domingo = DateTime.Now.Subtract(ts);

    DateTime sabado = DateTime.Now.AddDays(6 - dayOfWeek);

    MessageBox.Show(sabado.ToShortDateString());

    FiltrarDataView.RowFilter = "Dt_Agenda >= '" + domingo.ToShortDateString() + "' AND Dt_Agenda <= '" + sabado.ToShortDateString() + "'";

    }

     

    At's!

    Friday, August 04, 2006 6:27 PM
  • private void estaSemanaToolStripMenuItem_Click(object sender, EventArgs e)
    {
    // Retorna o dia da semana (0 - Domingo, 1 - Segunda....6 Sabado)

    int dayOfWeek = (int)DateTime.Now.DayOfWeek;

    // Retorna um objeto TIMESPAN onde no construtor passa o número de dias,
    TimeSpan ts = new TimeSpan(dayOfWeek, 0, 0, 0);

    // Para calcular o domigo, subtrai o número de dias com o objeto TIMESPAN da data atual
    DateTime domingo = DateTime.Now.Subtract(ts);

    // Para calcular o sabado, pega-se a data atual e adiciona-se a diferença para sabado. Por exemplo, hoje é 6ª feira, dayOfWeek é igual a 5. Subtraindo
    // de 6 que é sabado, temos 1. Então adicionado 1 a data atual temos o dia do mês do próximo sabado.
    DateTime sabado = DateTime.Now.AddDays(6 - dayOfWeek);
    MessageBox.Show(sabado.ToShortDateString());
    FiltrarDataView.RowFilter =
    "Dt_Agenda >= '" + domingo.ToShortDateString() + "' AND Dt_Agenda <= '" + sabado.ToShortDateString() + "'";
    }

    Não sei se ficou claro. No outros métodos você adicionou e subtraiu 7 do dayOfWeek. Funciona tb, mas acho melhor você. adicionar na data atual

     

    Friday, August 04, 2006 6:54 PM
  • Rogerio,

    Como eu disse, show de bola mesmo!!!

    Cara, obrigadaço!!

    Faltava isso pra acabar meu projeto!!

    No que precisar de mim, pode contar comigo!!

    At's!

    Friday, August 04, 2006 7:04 PM