Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

daniloprates

Problema com data. Dá erro, não é possível!!!!

Recommended Posts

Preciso fazer um SELECT que selecione critérios de data. Mas é muito estranho, pois com o mesmo código ele dá erro em uma parte, e não dá erro em outra....

 

...eis o select:

SQL = "SELECT * FROM cadastros"				If not (DEMES = "" and DEANO = "") then			SQL = SQL & " and Data >= #" & DEMES & "/01/" & DEANO & "#"		End if				If not (AMES = "" and AANO = "") then			SQL = SQL & " and Data <= #" & AMES & "/31/" & AANO & "#"		End if				SQL = SQL & " and data > #" & RSFR("d1") & "#"

Na última linha, não dá erro. Mas nos dois casos do IF, dá erro! Nâo consigo entender!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, está lá, é que cortei boa parte do SELECT pra facilitar a leitura...

 

SQL = "SELECT * FROM cadastros where MsgId=" & ID				If not (DEMES = "" and DEANO = "") then			SQL = SQL & " and Data >= #" & DEMES & "/01/" & DEANO & "#"		End if				If not (AMES = "" and AANO = "") then			SQL = SQL & " and Data <= #" & AMES & "/31/" & AANO & "#"		End if				SQL = SQL & " and data > #" & RSFR("d1") & "#"

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade, não tem where. Tenta

 

SQL = "SELECT * FROM cadastros WHERE (1=1) "				If not (DEMES = "" and DEANO = "") then			SQL = SQL & " and Data >= #" & DEANO  & "/" & DEMES & "/01#"		End if				If not (AMES = "" and AANO = "") then			SQL = SQL & " and Data <= #" & AANO  & "/" & AMES & "/31#"		End if				SQL = SQL & " and data > #" & RSFR("d1") & "#"

 

o (1=1) lá é pra ti concatenar com 'and' o resto do sql. E tem que testar os meses que não tem 31 dias.

 

Tem como tu colar o erro que dá?

 

Falow cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual o erro que tá dando cara?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Schneider: O erro é aquele descrito no título (Erro de sintaxe na data na expressão de consulta...)[ GuTo ]: É o formato americano (padrão) de data, MM/DD/AAAA. Não vejo muito sentido mesmo, mas é o padrão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você quer que selecione só o dia atual? Se for isso, tenta assim:

 

"SELECT * FROM cadastros where MsgId=" & ID &" and Day(nome_do_campo_com_a_data) = Day(date()) and Month(nome_do_campo_com_a_data) = Month(date()) And Year(nome_do_campo_com_a_data) = Year(Date())"

Flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa solução do Rodrigo é muito válida, tente ela.E daniloprates, desculpe, mas não vi este padrão até hoje. Tem certeza que é assim? Se sim, me desculpe mesmo. Meu intuito não é ofender, e sim tentar lhe ajudar.Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom vou postar uma função que me ajuda muito no dia a dia.

 

function convData(data_)				'response.write data_		'response.end					dia=datepart("d",data_)			mes=datepart("m",data_)			ano=datepart("yyyy",data_)			hora=datepart("h",data_)			minuto=datepart("n",data_)			segundo=datepart("s",data_)						dataUniversal=ano&"/"&mes&"/"&dia&" "&hora&":"&minuto&":"&segundo						convData=dataUniversal		end function

 

agora para chamar a função é simple, por exemplo

 

 

Data = convData(request.form("data_form"))

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, testou pra ver se algum if não está deixando passar dados inválidos? Tipo testar com a função isNumeric() ou se as variáveis estão maior que zero.

 

se isso tb naum ajudar tenta mudar o formato da data.

 

SQL = SQL & " and Data >= #" & DEANO  & "/" & DEMES & "/01#"  SQL = SQL & " and Data <= #" & AANO  & "/" & AMES & "/31#"

teria que testar tb os meses que não tem 31 dias, e colocar uma variável no lugar do 31.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.