Ajuda - Busca - Membros - Calendário
Versão Completa: [Resolvido] Problemas ao ordenar por data
iMasters Fóruns > Gerenciamento de Banco de Dados > Access
carneirinho
Estou alterando um sistema que não foi feito por mim e cheguei num ponto que preciso mostrar uma agenda de eventos a partir do dia atual, o problema é que ela só está pegando do dia seguinte em diante, a consulta está sendo feita no asp e está assim:

msql = "SELECT Top 1 * FROM agenda WHERE data >= NOW order by data ASC"

Eu penso assim, o campo data está 24/7/2008, e tenho um evento pra esse dia, e não aparece, o possível erro na query é que talves esteja comparando junto com a hora, dai poderia estar assim 24/7/2008 00:00:00 >= 24/7/2008 19:04:22 mas não sei como driblar isso de comparar só a data independente da hora, alguma solução?
Mário Monteiro
em vez de now use date
carneirinho
Coloquei o date e ele da um erro, da uma olhada, eu ja tinha tentado antes:

msql = "SELECT Top 1 * FROM agenda WHERE data >= DATE order by data ASC"

Microsoft JET Database Engine erro '80040e10'

Nenhum valor foi fornecido para um ou mais parâmetros necessários.

/1_clientes/brasilis/site/html_brasilis/includes/destagenda.asp, line 18
carneirinho
Como o campo é data/hora estou inserindo no asp assim:



data_atual = now

sql = "Insert into agenda (data...) VALUES ('" & data_atual &...

Dai ele insere por exemplo 04/04/2008 10:10:10

Dai eu to tentando colocar na string o 23:59:59 pra dar a hora máxima, sendo assim como ele pega como padrão o 00:00:00 ele passaria como maior ou no mínimo igual, dai tentei isso:

data_atual = dia & "/" & mes & "/" & ano

data = data_atual & " 23:00:00"

ele da um Response.Redirect depois do Execute, porem só fica gravaod dia/mes/ano e a hora não aparece como quando gravo com o now, existe uma manha pra ele inserir a hora junto?
Mário Monteiro
seria assim mesmo

como ficou o sql que insere?
carneirinho
Estava usando assim:

data = data_atual & " 23:00:00"

' Condição sem imagem
if imagem1 = "" then
' cadastra os dados no banco de dados
sql = "Insert into agenda (data, dia, mes, ano, titulo, materia, aprovado) VALUES ('" & data_atual & "'...

Mas agora acho que quase resolvi, acho que com uma pequena ajuda eu fecho isso, fiz assim:

CODE
dta = now()

dia = Day(dta)
mes = Month(dta)
ano = Year(dta)

formatado = "#" & dia & "-" & mes & "-" & ano & "#"

msql = "SELECT TOP 1 * FROM agenda WHERE data >= #25-07-2008# ORDER BY data ASC, id"


Com esse #25-07-2008# ele pegou certo, só que eu to usando o formatado pra gerar essa string, e quando eu jogo dessa forma:

CODE
msql = "SELECT TOP 1 * FROM agenda WHERE data >= formatado ORDER BY data ASC, id"


Ele não aceita, teria um jeito certo de colocar essa variavel dentro da query? ele da esse erro:

Microsoft JET Database Engine erro '80040e10'

Nenhum valor foi fornecido para um ou mais parâmetros necessários.

Eu usaria normalmente assim:

msql = "SELECT TOP 1 * FROM agenda WHERE data >= '" & formatada & "' ORDER BY data ASC, id"

porem ele da esse erro:

Microsoft JET Database Engine erro '80040e07'

Tipo de dados imcompatível na expressão de critério.

/1_clientes/brasilis/site/html_brasilis/includes/destagenda.asp, line 26

Acreditem "iMcompatível"
carneirinho
Pessoal, só pra constar eu resolvi aqui, na concatenação eu estava usando formatada e na string estava formatado, dai claro que não ia dar certo, agora foi que foi.

abraço
Mário Monteiro
Que bom que resolveu

Abraços
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2008 Invision Power Services, Inc.