Fórum Pesquisa incremental em campo date #2288
28/01/2009
0
begin
if Pesquisa.Text <> '*' then
if not DSManutencao.DataSet.IsEmpty then
DSManutencao.DataSet.Locate(PainelPesquisa.Caption,Pesquisa.Text,[loPartialKey]);
end;
Esta funcionando quase tudo certinho (rsrsrsrsr)... pois a pesquisa incremental não funciona quando o campo for do tipo data (date). Como faço para que a pesquisa funcione para campos do tipo data (Date)???? Fico no aguardo de uma resposta... Obrigado
Evandro Silva
Curtir tópico
+ 0Posts
28/01/2009
Wesley Yamazack
fiz uma modificação na sua estrutura, sendo assim irá funcionar sempre, para qualquer campo.
Faça as modificações necessárias para se adaptar a seu programa.
procedure TTBasicaManutencao.PesquisaChange(Sender: TObject);
begin
if Pesquisa.Text <> '*' then
if not DSManutencao.DataSet.IsEmpty then
begin
DSManutencao.DataSet.commandtext := 'SELECT * FROM TABELA WHERE '+ PainelPesquisa.Caption + ' LIKE '%'+QuotedStr(Pesquisa.Text)+'%';
DSManutencao.DataSet.open;
end;
end;
Espero que ajude
Att,
Wesley Y
Gostei + 0
28/01/2009
Evandro Silva
Gostei + 0
29/01/2009
Wesley Yamazack
Bom dia !!!
Estive estudando a possibilidade da pesquisa parcial com o campo data, porém antes de executar a conversão, é feito um teste para ver se o valor digitado é uma data válida. Sendo assim não teria como você utilizar o mesmo. Não sei se isso te ajudaria. Você poderia fazer o seguinte.
procedure TForm1.Edit1Change(Sender: TObject);
Var
DataLixo : TDateTime;
begin
if Combobox1.Text = 'DATA' then
begin
if TryStrToDate(Edit1.Text,DataLixo) then
if ClientDataSet1.Locate(ComboBox1.Text,Edit1.Text,[loPartialKey]) then
begin
ShowMessage('Data Localizado');
end;
end
else
if ClientDataSet1.Locate(ComboBox1.Text,Edit1.Text,[loPartialKey]) then
begin
ShowMessage('Localizado');
end;
end;
a Função TryStrToDate vai ficar tentando converter o valor do Edit1 para data, quando ele conseguir ele vai e executa o locate, pois LopartialKey não funciona para campos Data, DateTime.
Espero que ajude.
Att,
Wesley Y
Gostei + 0
29/01/2009
Wesley Yamazack
Bom dia !!!
Estive estudando a possibilidade da pesquisa parcial com o campo data, porém antes de executar a conversão, é feito um teste para ver se o valor digitado é uma data válida. Sendo assim não teria como você utilizar o mesmo. Não sei se isso te ajudaria. Você poderia fazer o seguinte.
procedure TForm1.Edit1Change(Sender: TObject);
Var
DataLixo : TDateTime;
begin
if Combobox1.Text = 'DATA' then
begin
if TryStrToDate(Edit1.Text,DataLixo) then
if ClientDataSet1.Locate(ComboBox1.Text,Edit1.Text,[loPartialKey]) then
begin
ShowMessage('Data Localizado');
end;
end
else
if ClientDataSet1.Locate(ComboBox1.Text,Edit1.Text,[loPartialKey]) then
begin
ShowMessage('Localizado');
end;
end;
a Função TryStrToDate vai ficar tentando converter o valor do Edit1 para data, quando ele conseguir ele vai e executa o locate, pois LopartialKey não funciona para campos Data, DateTime.
Espero que ajude.
Att,
Wesley Y
Gostei + 0
29/01/2009
Evandro Silva
Gostei + 0
29/01/2009
Wesley Yamazack
Se precisar de algo estamos ai.
Abraço
Att,
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)