Ir para conteúdo

Arquivado

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

rafaeldupalio

Pesquisa por data ou entre datas.

Recommended Posts

Bom dia galera, esse é meu primeiro post pesquisei aqui no forum e nao encontrei algo relacionado em asp.
Tenho minha tabela onde registra todo movimento que faço no banco nessa tabela tenho o campo data que registra automaticamente a data do dia da movimentação nao podendo ser alterada pelo usuario.

preciso fazer uma pagina para pesquisa consigo pesquisar pelo nome do item mas como criar para pesquisar por uma data especifica ou por um intervalo de data???

uso asp puro e meu banco é em access.

Exemplo: pesquisar pela data 10-06-2014
ou pesquisar pelo período 01-06-2014 ate 30-06-2014

e me trás os registro a minha dificuldade e pesquisar pela data imputo a data mas nunca encontra nada no meu banco o campo data esta em formato data/hora.


queria pedir outra ajuda cliquei e acabei enviando o post duas vezes como faço para apgar o outro? e ficar somente com esse post, peço desculpa aos usuarios e moderadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para pesquisar um período use o operador Between do SQL

 

"Select * From pedido Where data between #"& datai &"# and #" & dataf & "# "

 

para uma pesquisa normal

 

sql="select * from banco23 where data=#"&date&"#"

 

lembrando que o tipo do campo tem que estar comom data no bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

para pesquisar um período use o operador Between do SQL

 

"Select * From pedido Where data between #"& datai &"# and #" & dataf & "# "

 

para uma pesquisa normal

 

sql="select * from banco23 where data=#"&date&"#"

 

lembrando que o tipo do campo tem que estar comom data no bd

Mt obrigado pela resposta vou fazer o teste aqui agora, sei que aqui nao é lugar mas vc poderia me explicar o Between funciona no access tbm? meu banco é em access. e outra duvida pq usa-se # para a variavel date?

sou novato em asp as perguntas podem parecer meio idiotas mas é importante para mim entender para nao perguntar novamente.

Mais uma vez obrigado( e obrigado por excluirem o topico em duplicidade foi erro meu mesmo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanburzum

Segue meu codigo:

´variaveis para recolhimento de informação do formulario

var_datai = request.form("datai")
var_dataf = request.form("dataf")

'seleção de consulta ao banco de dados

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE 'data between= #"&datai&"# and #" &dataf& "#"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

 

aparece a seguinte msg de erro:

Microsoft JET Database Engine erro '80040e14'

Erro de sintaxe na seqüência de caracteres na expressão de consulta ''data between= and'.

 

Por isso que pedi a explicação do # pq nao sei ao certo qnd uso o " & # '

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma caspeta a + ai.

 

Tenta isso:

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data between= #"&datai&"# and #" &dataf& "#"

Muito obrigado pela ajuda, tirei a aspa e depois copiei e colei oque vc escreveu aqui e agora da esse erro.

 

Microsoft JET Database Engine erro '80040e14'

Erro de sintaxe (operador faltando) na expressão de consulta 'data between= ## and ##'.

Se poder me ajudar novamente agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

altera as variaveis,

de datai e dataf para var_datai e var_dataf da vSql

 

boa sorte

Verdade faixa branca né, alterando apareceu os valores das variaveis mas continuou o erro de sintaxe segue o codigo:

 

var_datai = request.form("datai")
var_dataf = request.form("dataf")
vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data between= #"&var_datai&"# and #" &var_dataf& "#"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

 

o erro:

Microsoft JET Database Engine erro '80040e14'

Erro de sintaxe (operador faltando) na expressão de consulta 'data between= #01/06/2014# and #30/06/2014#'.

nao sei se ajuda na pagina html o datai e dataf são campo de texto. as barras da data to colocando manualmente(nao sei fazer aquela jeito que aparece sozinho) isso pode influenciar? como falei la no incio estou aprendendo asp puro e a parte de concatenar nao sei direito usar o # ' " & uso sem entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. e também veja se os tipos de dados estão corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim:

 

ano=year(Request.Form("datac"))
mes=month(Request.Form("datac"))
dia=day(Request.Form("datac"))

 

e na SQL

 

... where data = DateSerial (" & ano & "," & mes & "," & dia & ") ...

 

todas as minhas consultas funciona perfeito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. e também veja se os tipos de dados estão corretos

verifiquei a diferença é que na minha tabela esta em maiusculo e o campo nela é do tipo data/hora isso influencia? galera sei que to dando trabalho mas ta tenso.

Faz assim:

 

ano=year(Request.Form("datac"))

mes=month(Request.Form("datac"))

dia=day(Request.Form("datac"))

 

e na SQL

 

... where data = DateSerial (" & ano & "," & mes & "," & dia & ") ...

 

todas as minhas consultas funciona perfeito

Obrigado a todos por me ajudarem, como falei sou leigo uso access e a coluna esta com nome de data o tipo de dados é data/hora. pelo oque entendi nesta sua dica eu estou desmenbrando o texto digitado no html "datac" seria isso? desculpe a burrice mas como disse sou leigo, uma duvida como conseguiria fazer um filtro entre datas desta maneira??

Compartilhar este post


Link para o post
Compartilhar em outros sites

- pega a data do form

- separa em dia mês e ano

 

anoi=year(Request.Form("dataini"))
mesi=month(Request.Form("dataini"))
diai=day(Request.Form("dataini"))
anof=year(Request.Form("datafim"))
mesf=month(Request.Form("datafim"))
diaf=day(Request.Form("datafim"))

- faz a SQL

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data BETWEEN DateSerial (" & anoi & "," & mesi & "," & diai & ") and DateSerial (" & anof & "," & mesf & "," & diaf & ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais uma vez obrigado pela resposta, estava faltando a aspas duplas no final da linha coloquei ae nao deu mais erro mas tambem nao retorna a pesquisa como se executasse o codigo e nao encontrasse nada

 

anoi=year(Request.Form("dataini"))
mesi=month(Request.Form("dataini"))
diai=day(Request.Form("dataini"))
anof=year(Request.Form("datafim"))
mesf=month(Request.Form("datafim"))
diaf=day(Request.Form("datafim"))
vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data BETWEEN DateSerial (" & anoi & "," & mesi & "," & diai & ") and DateSerial (" & anof & "," & mesf & "," & diaf & ")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado na query

 

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data BETWEEN DateSerial (" & anoi & "," & mesi & "," & diai & ") and DateSerial (" & anof & "," & mesf & "," & diaf & ")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
response.write(vSQL)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

dá um response.write na sua string SQL para ver o que esta sendo passado na query

 

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data BETWEEN DateSerial (" & anoi & "," & mesi & "," & diai & ") and DateSerial (" & anof & "," & mesf & "," & diaf & ")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
response.write(vSQL)
response.end()

 

com o response me retornou o seguinte valor:

coloquei para pesquisar: datai 01/06/2014 dataf 30/06/2014

SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE data BETWEEN DateSerial (1899,12,30) and DateSerial (1899,12,30)

Galera boas novas, com o codigo desta maneira:

 

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE DATA between #"&var_datai&"# and #"&var_dataf&"#"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

 

consegui filtrar mas... tem sempre um mas pra quebrar o coreto, ele ta pesquisando da seguinte forma

MM/DD/AAAA ou seja se eu quiser pesquisar no mes 06 tenho que colocar

06/20/2014 até 06/25/2014 ae lista todos entre dia 20 e 25 do 06.

 

como coloco no formato de procura correto DD/MM/AAAA???

Compartilhar este post


Link para o post
Compartilhar em outros sites

formata antes sua data

 

session.lcid=1046
function formatadata(data)
dia=day(data)
mes =month(data)
ano=year(data)
formatadata=dia&"/"&mes&"/"&ano
end function

SQL1 = "INSERT INTO NEWSLETTER (NewsletterNome,NewsletterEmail,NewsletterData,NewsletterHora,NewsletterIP,FL

G_EMAIL) VALUES ('"&Nome&"','"&Email&"',#"&formatadata(NewsletterData)&"#,'"&NewsletterHora&"','"&NewsletterIP&"','"&NewsletterFLG&"')"

Formato: aaaa-mm-dd

<%
Function ConverterDataBanco(ConDataBanco)
    ConDataBanco = Year(ConDataBanco) &"-"& Right("0"&Month(ConDataBanco),2) &"-"& Right("0"&Day(ConDataBanco),2)
    ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

Formato: dd-mm-aaaa
<%
Function ConverterDataBanco(ConDataBanco)
    ConDataBanco = Right("0"&Day(ConDataBanco),2) &"-"& Right("0"&Month(ConDataBanco),2) &"-"& Year(ConDataBanco)
    ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

Formato: mm-dd-aaaa
<%
Function ConverterDataBanco(ConDataBanco)
    ConDataBanco = Right("0"&Month(ConDataBanco),2) &"-"& Right("0"&Day(ConDataBanco),2) &"-"& Year(ConDataBanco)
    ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

Formato: mm/dd/aaaa
<%
Function ConverterDataBanco(ConDataBanco)
    ConDataBanco = Right("0"&Month(ConDataBanco),2) &"/"& Right("0"&Day(ConDataBanco),2) &"/"& Year(ConDataBanco)
    ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum

sei que é chato ajudar noob com eprguntas idiotas mas, na minha pagina asp preciso colocar sua dica antes do v antes do sql? exemplo:.

 

session.lcid=1046

function formatadata(data)

dia=day(data)

mes =month(data)

ano=year(data)

formatadata=dia&"/"&mes&"/"&ano

end function

 

SQL1 = "INSERT INTO NEWSLETTER (NewsletterNome,NewsletterEmail,NewsletterData,NewsletterHora,NewsletterIP,FL

 

G_EMAIL) VALUES ('"&Nome&"','"&Email&"',#"&formatadata(NewsletterData)&"#,'"&NewsletterHora&"','"&NewsletterIP&"','"&NewsletterFLG&"')"

 

<%

Function ConverterDataBanco(ConDataBanco)

ConDataBanco = Right("0"&Day(ConDataBanco),2) &"-"& Right("0"&Month(ConDataBanco),2) &"-"& Year(ConDataBanco)

ConverterDataBanco = ConDataBanco

End Function

 

Response.Write(ConverterDataBanco(Date()))

%>

 

var_datai=request.form(datai)

var_dataf=request.form(dataf)

 

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE DATA between #"&var_datai&"# and #"&var_dataf&"#"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

 

seria assim que ficaria?? desculpe a demora para responder mas esse fds meu filho ficou cmg.

Compartilhar este post


Link para o post
Compartilhar em outros sites

formata antes. mas use apenas uma função para formatar

Compartilhar este post


Link para o post
Compartilhar em outros sites

<!-- #include file="conn.asp" -->
var_datai=request.form(datai)
var_dataf=request.form(dataf)
<%
Function ConverterDataBanco(ConDataBanco)
ConDataBanco = Right("0"&Day(ConDataBanco),2) &"-"& Right("0"&Month(ConDataBanco),2) &"-"&Year(ConDataBanco)
ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS WHERE DATA between #"&var_datai&"# and #"&var_dataf&"#"

Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

fiz dessa maneira e nao funcionou continua daquela maneira pesquisa so com as datas invertidas

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o session.lcid=1046 para pegar a data no formato brasileiro

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.