Fórum Locate campo data ClientDataSet #467628
22/01/2014
0
Estou com o seguinte cenário.
Tenho uma tabela em SQL Server com um campo "SaidaEntrada Datetime".
Utilizando o delphi 2010, conexao ao banco com ADOConnection e para buscar os registros o ADOQuery + DataSetProvider + ClientDataSet + DataSource os quais jogo em um Grid.
Muito bem, ai vem o meu problema. Quando uso o ClientDataSet.Locate('SaidaEntrada','10/10/2013',[]), o ponteiro não vai para a data solicitada.
Se faço uma pesquisa com outro campo qualquer, tipo Varchar ou Integer da tudo certo.
Fico no aguar de uma luz dos colegas.
Thiago Portes
Curtir tópico
+ 0Posts
22/01/2014
Fabio Cardoso
1 - '01.01.2013' para data '01/01/2013'
2 - '2013/01/01 para data '01/01/2013'
tenta ver como esta registrada a data no teu banco e insira a data no teu locate do jeito que esta formatado no banco
Gostei + 0
22/01/2014
Nathan Boneti
essa data está vindo de algum componente Date? ou já é pré definida?
Gostei + 0
22/01/2014
Thiago Portes
1 - '01.01.2013' para data '01/01/2013'
2 - '2013/01/01 para data '01/01/2013'
tenta ver como esta registrada a data no teu banco e insira a data no teu locate do jeito que esta formatado no banco
Obrigado pelo retorno.
Fiz os testes como mostrado, mas não resolveu. O engraçado é que se eu fizer o Locate na ADOQuery, localiza certinho, e quando faço pelo clientdataset,
que por sua vez está ligado ao DataSetProvider que está ligado no ADOQuery, não posiciona o ponteiro sobre o registro pesquisado, mas me traz o return como true (localizado).
Aguardando uma ajuda.
Gostei + 0
22/01/2014
Thiago Portes
essa data está vindo de algum componente Date? ou já é pré definida?
Não. Está vindo de um Edit.Text.
Exemplo que estou utilizado como teste.
Edit2.Text := '10/10/2013' // Já tentei '2013-10-10' - '10-10-2013' - '10.10.2013'
if not cds1.Locate('SaidaEntrada',Edit2.Text,[]) then
showmessage('Nao localizou')
else
showmessage('LOCALIZADO ');
Já estou acostumado a fazer este procedimento que não tem erro, é muito eficiente mas com os componentes conexão da paleta InterBase quando utilizando o banco com o mesmo.
Gostei + 0
22/01/2014
Nathan Boneti
Exemplo que estou utilizado como teste.
Edit2.Text := '10/10/2013' // Já tentei '2013-10-10' - '10-10-2013' - '10.10.2013'
if not cds1.Locate('SaidaEntrada',Edit2.Text,[]) then
showmessage('Nao localizou')
else
showmessage('LOCALIZADO ');
Já estou acostumado a fazer este procedimento que não tem erro, é muito eficiente mas com os componentes conexão da paleta InterBase quando utilizando o banco com o mesmo.
O código está certo, no edit tem que estar dessa forma:dd/mm/yyyy
Gostei + 0
23/01/2014
Thiago Portes
Se tiver algum outro colega que utiliza do mesmo cenário e puder me ajudar, ainda estarei aguardando.
Se eu conseguir matar o problema, postarei aqui.
Abraços.
Gostei + 0
15/04/2014
Gustavo Pinheiro
dm1.ztable.Locate('campo da tabela',(copy(maskedit1.text,7,4)+'-'+copy(maskedit1ext,4,2)+'-'+copy(maskedit1.text,1,2)),[lopartialkey]);
Transformei a data digitada no maskedit para o formato aaaa-mm-dd, e usei o traço como separador.
Espero que tenha ajudado...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)