PESQUISA NO BD COM DATAS JA VENCIDAS

MARCELO.VB.PIRA 31/03/2005 00:44:14
#75905
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!!!!
MAIGUI 31/03/2005 01:39:00
#75916
no sql a formatação da data deve ser MM/DD/YY tenta repetir a consulta colocando format(date,'MM/DD/YYYY')
MARCELO.VB.PIRA 31/03/2005 10:07:23
#75971
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???
USUARIO.EXCLUIDOS 31/03/2005 17:02:35
#76047
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...


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..

USUARIO.EXCLUIDOS 31/03/2005 17:03:41
#76048
Correção entre ASPAS
Format(Date$, [txt-color=#0000ff]"mm/dd/yyyy"[/txt-color])
Fuiii
USUARIO.EXCLUIDOS 01/04/2005 22:40:16
#76301
Resposta escolhida
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$ + "# )"
Tópico encerrado , respostas não são mais permitidas