Problema com SELECT
Boa tarde.
Sempre consultei minha duvidas nesse forum, mas até entao nao era cadastrado.
Estão hoje, apareceu um problema e resolvi me cadastrar.
Estou bolando um programinha super simples de lembretes.
O problema é, que quado vou fazer uma consulta da a seguinte mensagem de erro.
´Objeto Parameter definido incorretamente. As informações são inconssistente ou incompletas´.
Eu ja tentei de tudo!
Simplifiquei o select, só pra dar um exemplo.
´select * from lembretes where hora = #30/12/1899 17:57:00´
A hora é amanenada num campo ´Data/Hora´, onde é armazenado apenas a hora, sem a data.
O banco de dados é Access 2003.
Fazendo essa consulta direta no access funciona, mas pelo Delphi não
Se puderem me ajudar, agradeço
Sempre consultei minha duvidas nesse forum, mas até entao nao era cadastrado.
Estão hoje, apareceu um problema e resolvi me cadastrar.
Estou bolando um programinha super simples de lembretes.
O problema é, que quado vou fazer uma consulta da a seguinte mensagem de erro.
´Objeto Parameter definido incorretamente. As informações são inconssistente ou incompletas´.
Eu ja tentei de tudo!
Simplifiquei o select, só pra dar um exemplo.
´select * from lembretes where hora = #30/12/1899 17:57:00´
A hora é amanenada num campo ´Data/Hora´, onde é armazenado apenas a hora, sem a data.
O banco de dados é Access 2003.
Fazendo essa consulta direta no access funciona, mas pelo Delphi não
Se puderem me ajudar, agradeço
Eld
Curtidas 0
Respostas
Delphijean
08/01/2008
Olá!
Meu caro, não sei se com o access é da mesma forma mas, em muitas linguagens SQL como por exemplo no firebird ao se pesquisar por uma data devemos colocar a data no formato Americano tipo:
yyyy/MM/dd (Formato Americano)
select * from lembretes
where
hora = #1899/12/30 17:57:00
Meu caro, não sei se com o access é da mesma forma mas, em muitas linguagens SQL como por exemplo no firebird ao se pesquisar por uma data devemos colocar a data no formato Americano tipo:
yyyy/MM/dd (Formato Americano)
select * from lembretes
where
hora = #1899/12/30 17:57:00
GOSTEI 0
Eld
08/01/2008
Olá!
Meu caro, não sei se com o access é da mesma forma mas, em muitas linguagens SQL como por exemplo no firebird ao se pesquisar por uma data devemos colocar a data no formato Americano tipo:
yyyy/MM/dd (Formato Americano)
select * from lembretes
where
hora = #1899/12/30 17:57:00
O erro continua!
Tentei trocar os por ´´, e o erro mudou para ´Tipo de dados imcompativel na expressão de critério´
Não sei mais o que fazer
GOSTEI 0
Anorex
08/01/2008
nunca mexi com o access. mas nos outros bancos além do formato americano tem que estar entre aspas simples...
GOSTEI 0
Eld
08/01/2008
nunca mexi com o access. mas nos outros bancos além do formato americano tem que estar entre aspas simples...
se eu coloco aspas simples, da o seguinte erro.
[Error] u_Principal.pas(223): Missing operator or semicolon
[Error] u_Principal.pas(223): Missing operator or semicolon
[Error] u_Principal.pas(223): Statement expected, but expression of type ´Char´ found
GOSTEI 0
Antonio Pereira
08/01/2008
Não tenho certeza, mas acho que está identificando os dois pontos (:) da hora passada no select como parâmetro. Desta forma identifica que :57 é um parametro e :00 é um outro parametro.
´select * from lembretes where hora = #30/12/1899 17[b:f7677564cc]:57[/b:f7677564cc][b:f7677564cc]:00[/b:f7677564cc]´
´select * from lembretes where hora = #30/12/1899 17[b:f7677564cc]:57[/b:f7677564cc][b:f7677564cc]:00[/b:f7677564cc]´
GOSTEI 0
Eld
08/01/2008
[quote:a51cce52ba=´Antonio Carlos D Pereira´]Não tenho certeza, mas acho que está identificando os dois pontos (:) da hora passada no select como parâmetro. Desta forma identifica que :57 é um parametro e :00 é um outro parametro.
´select * from lembretes where hora = #30/12/1899 17[b:a51cce52ba]:57[/b:a51cce52ba][b:a51cce52ba]:00[/b:a51cce52ba]´[/quote:a51cce52ba]
mas e qual seria a solução pra esse problema?
to perdidasso :(
´select * from lembretes where hora = #30/12/1899 17[b:a51cce52ba]:57[/b:a51cce52ba][b:a51cce52ba]:00[/b:a51cce52ba]´[/quote:a51cce52ba]
mas e qual seria a solução pra esse problema?
to perdidasso :(
GOSTEI 0
Delphijean
08/01/2008
A observação de Anorex está correta.
estes # (Sharp) fazem os papel das aspas simples( ´ )?
se não a data deve estar dentro das aspas tipo:
´30/12/1899 17:57:00´
att,
estes # (Sharp) fazem os papel das aspas simples( ´ )?
se não a data deve estar dentro das aspas tipo:
´30/12/1899 17:57:00´
att,
GOSTEI 0
Eld
08/01/2008
A observação de Anorex está correta.
estes # (Sharp) fazem os papel das aspas simples( ´ )?
se não a data deve estar dentro das aspas tipo:
´30/12/1899 17:57:00´
att,
se eu coloco aspas simples e mesmo usando o formato americano, surge o seguinte erro.
[Error] u_Principal.pas(223): Missing operator or semicolon
[Error] u_Principal.pas(223): Missing operator or semicolon
[Error] u_Principal.pas(223): Statement expected, but expression of type ´Char´ found
GOSTEI 0
Delphijean
08/01/2008
Caro,
Eu surgiro que vc publique uma parte do seu código e a estrutra do banco. pra que nó possamos acompanhar melhor e fazer com que este erro seja resolvido. pra lhe publicar a resposta com a solução.
claro se vc puder!
att,
Eu surgiro que vc publique uma parte do seu código e a estrutra do banco. pra que nó possamos acompanhar melhor e fazer com que este erro seja resolvido. pra lhe publicar a resposta com a solução.
claro se vc puder!
att,
GOSTEI 0
Djjunior
08/01/2008
Passe a dataHora como parametro sua sql ficaria assim:
select * from lembretes where hora =:dtHora
e antes de abri-la faça o seguinte
p.s. antes de adicionar os campos configure a propriedade params da query.
select * from lembretes where hora =:dtHora
e antes de abri-la faça o seguinte
qry.close qry.paramByName(´dtHora´).AsDateTime := StrToDateTime(´30/12/1899 17:57:00´); qry.Open
p.s. antes de adicionar os campos configure a propriedade params da query.
GOSTEI 0