Jump to content
Fórum Script Brasil
  • 0

ENTRE DATAS


Question

ola pessoal,

tenho um bd de controle de férias e estou com um problema em uma cnsulta

na tabela tenho os campos [inicio] e [termino]

preciso de uma consulta que me retorne o seguinte

o usuário escolhe o mes e ano atraves de um form e a consulta me retorna os funcionarios em ferias

ex: funcionario em ferias de 30/12/2008 a 02/02/2009

não consigo fazer consulta no mês que esta entre o [inicio] e o [termino]

no caso jan/2009

socorro!

Link to post
Share on other sites

21 answers to this question

Recommended Posts

  • 0

Faça algo assim:

select format(suaTabela.suaData,"mm/yyyy") as mesAno from sua tabela where format(suaTabela.suaData,"mm/yyyy") between format(seuCriterioInicio,"mm/yyyy") and format(seuCriterioFim,"mm/yyyy");

Link to post
Share on other sites
  • 0

ainda não consegui

eu tinha feito assim

elect tab_ferias...etc

where (((datepart("m",[inicio] ))=[forms]![frm_filtro_mes]![mes])) or (((datepart("m",[termino] ))=[forms]![frm_filtro_mes]![mes]));

so depois percebi que em alguns casos existe outro mes entre o inicio e o termino

ex: inicio dez/2008 e termino em fev/2009

ao fazer a consulta em jan/2009 tem que constar tal registro

Link to post
Share on other sites
  • 0

Estranho fera uso dessa forma que lhe passei em alguns sistemas e funciona normalmente, claro que o código SQL que te passei tem que ser adequado para sua tabela só isso

Link to post
Share on other sites
  • 0

Não posso usar como parametro mes/inicio e mes/termino no formulário porque a consulta deve levar en consideração apenas o mes atual

motivo: ex. consulta mes jan/2009

tenho inicio em nov/2008 e termino em jan/2009

tenho inicio em dez/2008 e termino em fev/2009

tenho inicio em jan/2009 e termino em fev/2009

tenho inicio em jan/2009 e termino em mar/2009

nos 4 casos tenho gente de ferias em janeiro

http://www.speedyshare.com/605873118.html

Link to post
Share on other sites
  • 0

Então eu teria que me preocupar apenas com o mês da data inicial isso torna as coisa muito mais simples e tendo acesso a parte do seu bd fiz a seguinte expressão que testei e está funcionando conforme o meu entenimento

select Tab_Ferias.Cod_Ferias, Tab_Ferias.Cod_Servidor, Tab_Ferias.N_Dias, Tab_Ferias.Inicio, Tab_Ferias.Termino, Tab_Ferias.Retorno, Tab_Ferias.Observação

from Tab_Ferias

where format(Tab_Ferias.Inicio,"mm/yyyy")=Formulários!Frm_Filtro_Mes!Codigo_01 & "/" & Formulários!Frm_Filtro_Mes!Codigo_02;

Link to post
Share on other sites
  • 0

Bom então vocÊ quer o que estiver dentro do período também muito simples

select Tab_Ferias.Cod_Ferias, Tab_Ferias.Cod_Servidor, Tab_Ferias.N_Dias, Tab_Ferias.Inicio, Tab_Ferias.Termino, Tab_Ferias.Retorno, Tab_Ferias.Observação

from Tab_Ferias

where (((format([Tab_Ferias].[inicio],"mm/yyyy")) between formulários!Frm_Filtro_Mes!Codigo_01 & "/" & formulários!Frm_Filtro_Mes!Codigo_01 and formulários!Frm_Filtro_Mes!Codigo_02 & "/" & formulários!Frm_Filtro_Mes!Codigo_02));

Bom se agora num der certo é porque sinceramente não entendo o que você está tentando fazer...

Link to post
Share on other sites
  • 0

São muitos registro de férias durante o ano então vou tentar ser mais claro possível

se o usuário consultar quem está de ferias em dez/2008 (o registro 30/12/2008 a 02/02/2009 tem que constar na consulta)

se o usuário consultar quem está de ferias em Jan/2009 (o registro 30/12/2008 a 02/02/2009 tem que constar na consulta)

se o usuário consultar quem está de ferias em Fev/2009 (o registro 30/12/2008 a 02/02/2009 tem que constar na consulta)

Dez/2008 beleza é o mês de início

Fev/2009 beleza é o mês de término

Jan/2009 ?????

Minha dificuldade está em estabelecer um parâmetro de consulta que leve em conta o período de inicio e termino com o mês escolhido pelo usuário.

o formulário para consulta tem dois campos mês e Ano mas para silplificar pode ser tambem um unico campo com mes/ano

http://www.speedyshare.com/605873118.html

Link to post
Share on other sites
  • 0

Bom o que você tinha deixado a entender anteriormente é que queria usar período mais já que é somente o mês atual ficou mais fácil ainda tai o 1º arquivo que você enviou com as alterações que fiz para pegar pelo inicio, para pegar tanto inicio quanto temino o código é:

SELECT Tab_Ferias.Cod_Ferias, Tab_Ferias.Cod_Servidor, Tab_Ferias.N_Dias, Tab_Ferias.Inicio, Tab_Ferias.Termino, Tab_Ferias.Retorno, Tab_Ferias.Observação

FROM Tab_Ferias

WHERE (((Format(Tab_Ferias.Inicio,"mm/yyyy"))=Formulários!Frm_Filtro_Mes!Codigo_01 & "/" & Formulários!Frm_Filtro_Mes!Codigo_02) Or ((Format(Tab_Ferias.Termino,"mm/yyyy"))=Formulários!Frm_Filtro_Mes!Codigo_01 & "/" & Formulários!Frm_Filtro_Mes!Codigo_02));

Aguardo seu retorno pra colocar resolvido neste tópico!

Gasilvabh_bol.com.br.rar

Link to post
Share on other sites
  • 0

Então fera faça os critérios, se você quer periodos vocÊ tem que ter de onde tirar o mes/ano inicio e o mes/ano fim, o material que lhe passei pode ser facilmente adaptado a isso basta que você adicione os controles que serão utilizados como critério no seu form

Link to post
Share on other sites
  • 0

Cara num sei sei mais com explicar pra você você me pediu por mês eu fiz por mês, depois falou que era no perido então fiz por periodo, depois disse que queria qualquer coisa que tivesse no inicio ou no fim o que fosse passado como critério...

Se você não puder me passar o que precisa exatamente eu ou qualquer outra pessoa não poderá lhe ajudar...

Link to post
Share on other sites
  • 0

Bom, pense que tinha sido claro em minha dúvida

tenho um bd de controle de férias e estou com um problema em uma cnsulta

na tabela tenho os campos [inicio] e [termino]

preciso de uma consulta que me retorne o seguinte

o usuário escolhe o mes e ano atraves de um form e a consulta me retorna os funcionarios em ferias

ex: funcionario em ferias de 30/12/2008 a 02/02/2009

não consigo fazer consulta no mês que esta entre o [inicio] e o [termino]

no EXEMPO jan/2009

As dicas que você me passou foram muito uteis mas não consegui fazer com que funcionasse corretamente, por isso te passei parte do Bd para que pudesse ver exatamente a minha dúvida.

Link to post
Share on other sites
  • 0

Tenta essa aí:

WHERE dataInicio <= ultimoDiaMes(mes/ano escolhido pelo usuario) AND dataFinal >= primeiroDiaMes(mes/ano escolhido pelo usuario)

Claro que você deve criar uma função que encontre o primeiroDiaMes(argumento) e ultimoDiaMes(argumento). Se não souber como criar as funções me avise.

Até a próxima.

Link to post
Share on other sites
  • 0

Boa noite amigo Geraldo,

Vendo todas estas postagens em relação a este assunto, criei hoje um modelinho de fácil entendimento para verificar se enquadra no que necessita.

Entre no meu site: www.abbade.site40.net , depois access -> dicas.

Qualquer dúvida é só entrar em contato.

att,

Leandro

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149296
    • Total Posts
      645693
×
×
  • Create New...