Fórum Pesquisa só funciona a primeira vez #474628

31/03/2014

0

Pessoal, sou nova aqui, então me desculpa se estiver fazendo pergunta repetida (eu procurei e nao achei).
Tenho um botão pesquisa que funciona direitinho a primeira vez que é usado. Ao limpar e pesquisar novamente, ele não funciona mais (as vezes não aparece nada, as vezes aparece apenas um registro, onde de fato deveria aparecer mais... é meio imprevisível). Então, tenho que fechar o programa e abri-lo novamente para que ele pesquise corretamente.
estou usando um SQLConnection, SQLDataset, DataSetProvider, ClientDataSet...
segue o código... se alguém puder me ajudar, agradeço imensamente!


procedure TFLocalizar.BitBtnLocalizarClick(Sender: TObject);
begin
DataModule1.ClientDataset1.Active := False;
DataModule1.ClientDataset1.Params[0].AsString := Edit1.Text + '%';
DataModule1.ClientDataset1.Active := True;
BitBtnok.Enabled := not DataModule1.ClientDataset1.IsEmpty;


if DataModule1.ClientDataSet1.IsEmpty then
StsBr.SimpleText := Format ('Nenhum registro foi encontrado com ' + '"%s"', [Edit1.Text])
else
StsBr.SimpleText := Format ('%d registro encontrado com ' + '"%s"', [DataModule1.ClientDataSet1.RecordCount, Edit1.Text]);
end;



no SQLDataset ...

select * from CAD_PACIENTE
Where CNS like :Pcns

Muito obrigada
Laya Lessa

Laya Lessa

Responder

Posts

31/03/2014

Thiago Irrazabal

Boa tarde, se tu colocar isso aqui, depois de dar o active como false, creio que funcionará.

  DataModule1.ClientDataset1.FetchParams;



Ficaria assim:
procedure TFLocalizar.BitBtnLocalizarClick(Sender: TObject);
begin
DataModule1.ClientDataset1.Active := False;
DataModule1.ClientDataset1.FetchParams;
DataModule1.ClientDataset1.Params[0].AsString := Edit1.Text + '%';
DataModule1.ClientDataset1.Active := True;
BitBtnok.Enabled := not DataModule1.ClientDataset1.IsEmpty;


if DataModule1.ClientDataSet1.IsEmpty then
StsBr.SimpleText := Format ('Nenhum registro foi encontrado com ' + '"%s"', [Edit1.Text])
else
StsBr.SimpleText := Format ('%d registro encontrado com ' + '"%s"', [DataModule1.ClientDataSet1.RecordCount, Edit1.Text]);
end;


Teste e veja se funciona.




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

31/03/2014

Laya Lessa

não funcionou, continua a mesma coisa
Responder

Gostei + 0

01/04/2014

Thiago Irrazabal

Não quer compactar a pasta do teu projeto e me passar? Pois eu criei um projeto aqui com um DM, 2 botões e os componentes que tu está usando e funcionou normalmente.



Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

01/04/2014

Laya Lessa

Oi Thiago, poderia me passar seu e-mail ou skype para e add e enviar o programara para vc?
Muito obrigada pela atenção
Responder

Gostei + 0

01/04/2014

Thiago Irrazabal

tec.thiagoirrazabal@gmail.com


Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

01/04/2014

Laya Lessa

não consegui enviar, eu erro =/
meu email: lais_ayache@hotmail.com
Responder

Gostei + 0

05/04/2014

Mauricio Rodrigues

Os ClientDataSet não funciona muito bem comando sql eu uso assim em meu sistema

if ((cbxField.Text <> EmptyStr) and (edtValor.Text <>EmptyStr)) then
begin
ds.DataSet.Filter:='UPPER('+ Ds.DataSet.Fields[ListaField[cbxField.ItemIndex]].FieldName +') like '+QuotedStr(UpperCase(edtValor.text)+'%');
Ds.DataSet.Filtered:=true;
if not Ds.DataSet.Active then
ds.DataSet.Open;

end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar