Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!!
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") & "#"É 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!
Então, postei em cima... já tem o WHERE, é que não tinha colocado no post.
E qual o erro que tá dando cara?
DEMES & "/01/" & DEANO ????Não seria: yyyy/mm/dd ou dd/mm/yyyy ?ou até yyyy-mm-dd
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.
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!
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!
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
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.
Schneider, como eu estava sendo estúpido, rsss! 31/11/2006 fica um pouco difícil mesmo!Bom, obrigado pela ajuda de todos!Abs!
não sei se você nao postou... mas nao falta um "where" na estoria???