PESQUISA NO BD COM DATAS JA VENCIDAS
oi!!!
eu de novo...
dentro de meu sistema comercial, estou implementando uma agenda para cada usuario marcar compromissos (principalmente o pessoal do telemarketing, para ligar no dia e na hora que o cliente pediu).
estou usando esta clausula para o sistema checar se no momento da consulta, algum dos compromisso agendados já "PASSOU" da hora:
sSelect = "Select * From agenda where datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
com estes dados abaixo dentro do BD (os campos DATACOMP e HORACOMP estão no formato DATE/TIME)
DATACOMP HORACOMP
01/03/2005 - 00:00:00
02/03/2005 - 11:59:00
02/03/2005 - 12:00:00
02/03/2005 - 12:01:00
31/03/2005 - 00:00:00
01/06/2006 - 00:00:00
e sendo que :
str(date) retorna 31/03/2005
time $ retorna 00:23:12:
o resultado do select ta sendo apenas 02 registros:
01/03/2005 - 00:00:00
31/03/2005 - 00:00:00
quando na verdade, deveriam ser 05 registros:
01/03/2005 -00:00:00
02/03/2005 -11:59:00
02/03/2005 -12:00:00
02/03/2005 -12:01:00
31/03/2005 -00:00:00
Observaçõa: O formato da data do windows (configurações regionais) é DD/MM/AAAA , mas quando crio o db via datamanager, o campo fica restrito a 08 caracteres.
alguem pode me explicar o que esta acontecendo?
teria alguma outra forma de construir esta cláusula?
VALEU COLEGAS!!!!
eu de novo...
dentro de meu sistema comercial, estou implementando uma agenda para cada usuario marcar compromissos (principalmente o pessoal do telemarketing, para ligar no dia e na hora que o cliente pediu).
estou usando esta clausula para o sistema checar se no momento da consulta, algum dos compromisso agendados já "PASSOU" da hora:
sSelect = "Select * From agenda where datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
com estes dados abaixo dentro do BD (os campos DATACOMP e HORACOMP estão no formato DATE/TIME)
DATACOMP HORACOMP
01/03/2005 - 00:00:00
02/03/2005 - 11:59:00
02/03/2005 - 12:00:00
02/03/2005 - 12:01:00
31/03/2005 - 00:00:00
01/06/2006 - 00:00:00
e sendo que :
str(date) retorna 31/03/2005
time $ retorna 00:23:12:
o resultado do select ta sendo apenas 02 registros:
01/03/2005 - 00:00:00
31/03/2005 - 00:00:00
quando na verdade, deveriam ser 05 registros:
01/03/2005 -00:00:00
02/03/2005 -11:59:00
02/03/2005 -12:00:00
02/03/2005 -12:01:00
31/03/2005 -00:00:00
Observaçõa: O formato da data do windows (configurações regionais) é DD/MM/AAAA , mas quando crio o db via datamanager, o campo fica restrito a 08 caracteres.
alguem pode me explicar o que esta acontecendo?
teria alguma outra forma de construir esta cláusula?
VALEU COLEGAS!!!!
no sql a formatação da data deve ser MM/DD/YY tenta repetir a consulta colocando format(date,'MM/DD/YYYY')
desta forma abaixo, deu erro 6 OVERFLOW
sSelect = "Select * From agenda where datacomp <= #" + Format(Date$, mm / dd / yyyy) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where datacomp <= #" + Format(Date$, dd / mm / aa) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3061 (Parà ¢metros insuficientes. Eram esperados 3.)
sSelect = "Select * From agenda where FORMAT(datacomp , DD / MM / YYYY) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where FORMAT(datacomp , DD / MM / AAAA) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where FORMAT(CDATE(datacomp) , DD / MM / AAAA) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3141 (A instrução SELECT inclui uma palavra reservada ou um nome de argumento que está incorreto ou faltando, ou a pontuação está incorreta.)
sSelect = "Select AGENDA.*,CDate(DataCOMP) As DtCOMP, from AGENDA where DTcomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3075 (Erro de sintaxe (operador faltando) na expressão de consulta 'AGENDA *'.)
sSelect = "Select AGENDA *,CDate(DataCOMP) As DtCOMP, from AGENDA where DTcomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
e finalmente, voltei a forma inicial abaixo que apresenta os problemas relatados no inÃcio deste tópico.
sSelect = "Select * from AGENDA where Datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
:(((((
o que será que está faltando hein galerinha???
sSelect = "Select * From agenda where datacomp <= #" + Format(Date$, mm / dd / yyyy) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where datacomp <= #" + Format(Date$, dd / mm / aa) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3061 (Parà ¢metros insuficientes. Eram esperados 3.)
sSelect = "Select * From agenda where FORMAT(datacomp , DD / MM / YYYY) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where FORMAT(datacomp , DD / MM / AAAA) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
sSelect = "Select * From agenda where FORMAT(CDATE(datacomp) , DD / MM / AAAA) <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3141 (A instrução SELECT inclui uma palavra reservada ou um nome de argumento que está incorreto ou faltando, ou a pontuação está incorreta.)
sSelect = "Select AGENDA.*,CDate(DataCOMP) As DtCOMP, from AGENDA where DTcomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
NESTA OUTRA FORMA DEU ERRO 3075 (Erro de sintaxe (operador faltando) na expressão de consulta 'AGENDA *'.)
sSelect = "Select AGENDA *,CDate(DataCOMP) As DtCOMP, from AGENDA where DTcomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
e finalmente, voltei a forma inicial abaixo que apresenta os problemas relatados no inÃcio deste tópico.
sSelect = "Select * from AGENDA where Datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#"
:(((((
o que será que está faltando hein galerinha???
Olá amigo MARCELO...
Ps: Que foto estranha heiimmm
Vou colocar alguns pontos que achei estranho no seu CODIGO, se eu estiver ERRADO me corrija por favor...
1º Me parece que vc ainda usa o VISDATA... pra criar o banco...... é complicado...
Eu faço o banco direto no ACCESS2000, é mais simples até pra testar as consultas... é mais fácil é prático..
2º Como VC mesmo citou, o campo é DATE/TIME, ou DATA/HORA... neste campo podemos colocar a data é a hora separadas por um ESPAÇO somente!!!
Não é necessário CRIAR um campo HORA...
Por ULTIMO amigo, o OVERFLOW que estava dando é porque VOCÃÃ…ÂÂ
COLOCOU
[txt-color=#ff0000]Format(Date$, mm / dd / yyyy)[/txt-color]
Fiz assim (Access2000)
DATACOMP
01/03/2005 00:00:00
02/03/2005 11:59:00
02/03/2005 12:00:00
02/03/2005 12:01:00
31/03/2005 00:00:00
01/06/2006 00:00:00
(Sacou? a data é a hora em um UNICO campo....
Assim até a CONSULTA ficou mais simples...
Deu certo... funcionou certinho...
PS.. nas configurações regionais MUDEI para DD/MM/AAAA
Em ULTIMO lugar... quando ao erro de OVERFLOW o problema foi
que vc COLOCOU
[txt-color=#ff0000]Format(Date$, mm / dd / yyyy)
OU
Format(Date$, mm / dd / AAAA)[/txt-color]
O CORRETO SERIAL O TIPO ENTRE ASPAS
[txt-color=#0000ff]Format(Date$, mm / dd / yyyy)
OU
Format(Date$, mm / dd / AAAA)[/txt-color]
Espero ter ajudado... amigo..
Ps: Que foto estranha heiimmm
Vou colocar alguns pontos que achei estranho no seu CODIGO, se eu estiver ERRADO me corrija por favor...
1º Me parece que vc ainda usa o VISDATA... pra criar o banco...... é complicado...
Eu faço o banco direto no ACCESS2000, é mais simples até pra testar as consultas... é mais fácil é prático..
2º Como VC mesmo citou, o campo é DATE/TIME, ou DATA/HORA... neste campo podemos colocar a data é a hora separadas por um ESPAÇO somente!!!
Não é necessário CRIAR um campo HORA...
Por ULTIMO amigo, o OVERFLOW que estava dando é porque VOCÃÃ…ÂÂ
COLOCOU
[txt-color=#ff0000]Format(Date$, mm / dd / yyyy)[/txt-color]
Fiz assim (Access2000)
DATACOMP
01/03/2005 00:00:00
02/03/2005 11:59:00
02/03/2005 12:00:00
02/03/2005 12:01:00
31/03/2005 00:00:00
01/06/2006 00:00:00
(Sacou? a data é a hora em um UNICO campo....
Assim até a CONSULTA ficou mais simples...
SQL = "SELECT * FROM AGENDA WHERE[DATACOMP]<=#" & Now & "#"
Deu certo... funcionou certinho...
PS.. nas configurações regionais MUDEI para DD/MM/AAAA
Em ULTIMO lugar... quando ao erro de OVERFLOW o problema foi
que vc COLOCOU
[txt-color=#ff0000]Format(Date$, mm / dd / yyyy)
OU
Format(Date$, mm / dd / AAAA)[/txt-color]
O CORRETO SERIAL O TIPO ENTRE ASPAS
[txt-color=#0000ff]Format(Date$, mm / dd / yyyy)
OU
Format(Date$, mm / dd / AAAA)[/txt-color]
Espero ter ajudado... amigo..
Correção entre ASPAS
Format(Date$, [txt-color=#0000ff]"mm/dd/yyyy"[/txt-color])
Fuiii
Format(Date$, [txt-color=#0000ff]"mm/dd/yyyy"[/txt-color])
Fuiii
MARCELO_VB_PIRA, com relação a sua mensagem interna.
O resultado exibido pela sua query esta correto somente as 2 linhas citadas atendem as duas condições colocadas no WHERE:
"where datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#" [/b]
01/03/2005 - 00:00:00
31/03/2005 - 00:00:00
Lembre que AND requer que as duas condições sejam verdadeiras na tupla formada pelos atributos datacomp e horacomp.
Teste a query abaixo:
"WHERE datacomp < #" & Str(Date) & "# OR (datacomp = #" & Str(Date) & "# And (horacomp <= #" & Time$ + "# )"
O resultado exibido pela sua query esta correto somente as 2 linhas citadas atendem as duas condições colocadas no WHERE:
"where datacomp <= #" + Str(Date) + "# and horacomp <= #" + Time$ + "#" [/b]
01/03/2005 - 00:00:00
31/03/2005 - 00:00:00
Lembre que AND requer que as duas condições sejam verdadeiras na tupla formada pelos atributos datacomp e horacomp.
Teste a query abaixo:
"WHERE datacomp < #" & Str(Date) & "# OR (datacomp = #" & Str(Date) & "# And (horacomp <= #" & Time$ + "# )"
Tópico encerrado , respostas não são mais permitidas