Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia!
Estou com problemas para realizar um consulta entre datas no ASP. Meu banco é Access. E meu campo de datas está em formato de texto (não tenho como alterar pois já recebo da minha fonte assim). Mas também estou precisando desta seleção entre datas para campo que tem o formato da data/hora.
Vejam o código que estou usando:
sSQL = "SELECT * FROM tb_sdc_producao" & " WHERE data_owner >= cdate('" & dtInicio & "')" & " and data_owner <= cdate('" & dtFim & "')" & " and status_sdc is not null"
SQL = sSQL
Set rstCliente = Server.CreateObject("ADODB.Recordset")
rstCliente.Open SQL, conexao_sdcEstá ocorrendo ainda esse erro:
>
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/aplicativos/sdc_express/sdc_default1.asp, line 91
Pessoal
Consegui com o código:
Dim DtInicio
Dim DtFim
DtInicio = Trim(Request.form("DtInicio"))
DtFim = Trim(Request.form("DtFim"))
set objconn=server.createobject("adodb.connection")
conexao_sdc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("sdc.mdb") & ""
objconn.Open conexao_sdc
Set rstCliente = objConn.Execute("SELECT * FROM tb_sdc_producao WHERE dataParaConclusao between #"&dtInicio&"# AND #"&dtFim&"# and situacao1 = 'ABERTO'")
Só tenho dois problemas:
O primeiro:
na minha base Access o formato data está dd/mm/aaaa. quando seleciono aq data inicial 01/04/2009 (01 de abril de 2009) e data final 02/04/2009 (02 de abril de 2009) está retornando o período 01 de janeiro de 2009 a 04 de fevereiro de 2009. O retorno dos registros estão vindo como se e formato no BD estivesse mm/dd/aaaa. Como corrigir para retornar dd/mm/aaaa?
O segundo problema:
Eu preciso que ao carregar nesses registros seja imprimido na tela o total de registros da consulta.
estou usando o código:
set rstCliente = Server.CreateObject("ADODB.recordset")
rstCliente.Open sql,conexao_sdc,3,3
if not rstCliente.eof then
response.write rstCliente.recordcount
end if
Ou esse:
recordCount = rstCliente("ID_Focus")
if not rstCliente.eof then
response.write rstCliente.recordcount
end if
e está retornando o valor -1 mesmo tendo carregado na consulta mais de mil registros.
Bom Dia !
Para o primeiro problema tenta colocar session.lcid(1046) no começo da pagina, vai deixar com formato de datas brasileiro dd/mm/aaaa
para o segundo, tenta pagesize=3
Abraços,
Vinicius Ianni
Vinicius, obrigado pelo retorno. :)
Com relação ao session.lcid(1046) já tenho no início.
Eu utilizo um calendário para selecionar a data e mesmo que eu digite ocorre o problema.
Abs
Gilson
Fera... vou tentar te ajudar!
Em relação as datas, você deverá "jogar" no select no formato mm/dd/aaaa para ter o resultado desejado.
Tenta e avisa se deu certo.
[]'s
Se bem que ele falou que as datas não estão no formato data no bd...
se você usar uma mascara no input dessas datas, será que dá certo?
tipo um js que faça a mascara de dd/mm/aaaa isso no input, talvez de certo
<_<
Ja tive estes problemas com datas em banco de dados access? quer um conselho?? desiste heheh
quando precisar comparar datas, prefira usar o mysql e um banco de dados melhor
abraços
Bom Dia !
Tenho um sistema que busca no bd num intervalo de datas com bd access, vou fuçar minhas coisas em casa e amanha eu posto como fiz e tb detalhes sobre o formato usado no bd, acho q é texto, nao tenho certeza.
Abraços,
Vinicius Ianni
>
Bom Dia !
Tenho um sistema que busca no bd num intervalo de datas com bd access, vou fuçar minhas coisas em casa e amanha eu posto como fiz e tb detalhes sobre o formato usado no bd, acho q é texto, nao tenho certeza.
Abraços,
Vinicius Ianni
beleza Vinicius, obrigado!
Bom Dia !
Conforme prometido, segue abaixo o esquema que utilizo:
no form que vai enviar as informações, note que tem uma chamada para um script js que ajuda a formatar o campo, o campo onde vai a data está por padrão desativado pq como tem várias opções de pesquisa, o padrão fica habilitado e os outros não quando se escolhe uma das outras opções, o padrão fica desabilitado e o escolhido fica habilitado, isso é feito via script js tb.
response.write "<input type='radio' name='radio' value='intdata' onclick='intdata();'> Por intervalo de datas:<p>"
response.write "Data inicial <input type='text' name='dataini' disabled='true' OnKeyUp='mascara_data(this.value)' mask='99/99/99'> Data final: <input type='text' name='datafim' disabled='true' OnKeyUp='masca_data(this.value)' mask='99/99/99'>"
pag que processa o form
depois de declarar as variaveis e capturar os valores vindo do form:
strprod = "select * from produtos where exibir=true and dataanu between '" &datain& "' And '" &datafi& "'"
Manda executar e exibir o resultado da forma que o projeto exige.
o campo dataanu está como campo texto de tamanho 12 no bd do access
Esse sistema é utilizado há cerca de 3 anos, e o cliente nunca reclamou de problemas na busca por intervalo de datas.
Abraços,
Vinicius Ianni
tem uma tentativa que é colocar o CDATE na coluna, porém a consulta será mais lenta, se não funcionar com CDATE tente com FORMAT(coluna, 'DD/MM/YYYY'), acho que tem uma outra que é DATEVALUE(data)
sSQL = "SELECT * FROM tb_sdc_producao" & " WHERE cdate(data_owner) >= cdate('" & dtInicio & "')" & " and data_owner <= cdate('" & dtFim & "')" & " and status_sdc is not null"