Ir para conteúdo
Fórum Script Brasil
  • 0

Datas Dentro De Um Interalo


Mc Feba

Pergunta

Ola Amigos do forum.

Já revirei todos os foruns possiveis, e imaginaveis, não achei respostas e nem quem soubesse me respoder sobre esta duvida. Só para adiantar, não adianta fazer um DateDiff, pois isso não é o que preciso.

Bom vamos a duvida:

Preciso saber como faço para saber determinadas dentro de um intervalo de datas com um periodo de 15 dias entre elas e iniciando novamente após o periodo determinado de 15 dias: Ex. as datas são 01/01/2006, 10/01/2006, 15/01/2006, 16/01/2006,20/01/2006 e 01/02/2006.

O exemplo citado mostra quais estão em um intervalo de 15 dias (em vermelho) a contar da 1ª data e quando passa de 15 dias inicia novamente até terminara na ultima data do cliente.

Me ajudem por favor, meu access é o 2000.

Agradeço desde de já a colaboração.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

num entendi nada, cada data dessa é um registro da tabela??

o que você quer retornar exatamente por select?? a quantidade de datas em cada intervalo??

bom, se esse intervalo for sempre do dia 1 ao dia 15 e do dia 16 ao ultimo dia do mês, você pode tentar fazer assim:

DateSerial(Year(Data), Month(Data), Iif(Day(Data) <= 15, 1, 16))

assim na primeira quinzena você teria data do com dia 1 e na segunda, com dia 16. assim, você poderia agrupar como quiser.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Kuroi, beleza ??

Não existe uma data fixa, essas das são variaveia, de acordo com o dia que o cliente passou. O que relamente quero e pegar a partir da 1º data que meu cliente passou, contar 15 dias e pegar todas as datas que ele retornou dentro desse periodo. Claro que isso deve ser feito de forma que ao acabar esse periodo de 15 dias a função, pege a proxima data e inicie noamente o processo, até chegar na ultima data de passagem do cliente.

OBS. Minha tabela de clientes só tem 300.000 mil registros e com datas de passagem que vão de 01/01/2000 até a data atula, então um cliente pode ter passado varias vezes e a tabela de passagens tem aproximadamente 520.000 registros.

Valeu a atenção, mas ainda não resolveu meu pequeno problema

Link para o comentário
Compartilhar em outros sites

  • 0

ummmmm... imaginei uma solução que não é muito elegante mais pode vir a funciona, veja bem cria uma caixa de texto do tipo data, no seu relatorio acho que pode deixa-la invisivel, essa caixa de texto irá guardar a data temporária inicial do período (vamos chama-la de ttData) então inicialmente vamos guardar a primeira data no periodo e no critério da consulta coloque algo assim:

<= Relatórios![seuRelatorio]![Data] +15

então ao terminar esse processo repassar uma data na ttData 16 dias maior assim:

me.ttData.value=me.ttData+16

e reexecutar a consulta ateh acabar os registros... bom acredito que deva funcionar, não testei só imaginei... se funcionar confirma ai!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi MrMalj,

Num deu certo também, na verdade isso não vai sair em um relatório nem em um formulário, isso ai ficar em uma consulta para cruzamentos com outras consultas. Mas mesmo assim tentei usar sua dica e nada.

Obrigado pela força, mas isso já esta me tirando o sono e continuo procurando pela net. Já faz uns 3 meses que estou nessa droga. Mas obrigado mesmo assim.

Abraços,

Link para o comentário
Compartilhar em outros sites

  • 0

isso é foda mesmo, mas ainda não entendi como você quer o select.

tipo você tem no banco uma tabela mais o menos assim:

Data            Campo1    Campo2
--------------------------------------------
01/01/2006    xxxxxxx    yyyyyy
10/01/2006    xxxxxxx    yyyyyy
15/01/2006    xxxxxxx    yyyyyy
16/01/2006    xxxxxxx    yyyyyy
20/01/2006    xxxxxxx    yyyyyy
01/02/2006    xxxxxxx    yyyyyy[/code] como você quer exatemente retornar o select?? seria tipo isso??
[code]Periodo                    Quantidade
--------------------------------------
01/01/2006 a 15/01/2006    3
16/01/2006 a 31/01/2006    2
01/02/2006 a 15/02/2006    1
bom, se for isso, acho que funciona assim:
Select 

CStr(DateAdd('d', Num * 15, (Select Min(Data) from x))) & ' a ' & CStr(DateAdd('d', 14, DateAdd('d', Num * 15, (Select Min(Data) from x)))) As Periodo,
Count(Data) As Quantidade

from

(Select Data, int( DateDiff ('d', (Select Min(Data) from x), Data) / 15 ) As Num From x)

Group By Num[/code]

isso levando em conta que sua tabela se chama x. de uma olhada ai se funciona

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Kuroi,

Cara você quase acertou, e é isso mesmo que estou querendo, o problema só é, que não pode aparecer a 1ª data e também não posso conta (mostrar quantidade) e sim mostrar as datas propriamente dita.

Mas valeu mesmo assim, e seu codigo funcionouperfeitamente.Só por curiosidade minha tabela esta assim:

Codigo Nome Data

1 Alfa 25/1/2007

1 Alfa 2/2/2007

1 Alfa 18/02/2007

1 Alfa 22/2/2007

1 Alfa 1/3/2007

2 Beta 1/1/2007

2 Beta 15/1/2007

2 Beta 30/1/2007

Os que estão em vermelho seriam as datas a serem mostradas.

Abraços,

e obrigado novamente,

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Kuroi,

Esqueci de mencionar um detalhe importante, a contagem do periodo de 15 dias, deve ser somente nas datas do cliente.

Tipo se o cara ficar um mês sem passar, a contagem não pode contar os periodos inativos, ou seja periodo fixo de 15 em 15 dias até chegar a proxima data de atendimento:

exemplo:

datas de atendimento : 01/01/2007 - 14/01/2007 - 20/02/2007

a data seria a : 14/01/2007

e não as datas : 14/01/2004 - 20/01/2007 (no caso de dias corridos em intervalos fixos de 15 dias a partir da 1ª data)

abraços,

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...