Pesquisa só funciona a primeira vez
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
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
Curtidas 0
Respostas
Thiago Irrazabal
31/03/2014
Boa tarde, se tu colocar isso aqui, depois de dar o active como false, creio que funcionará.
Ficaria assim:
Teste e veja se funciona.
Att,
Thiago Irrazabal de Oliveira.
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.
GOSTEI 0
Laya Lessa
31/03/2014
não funcionou, continua a mesma coisa
GOSTEI 0
Thiago Irrazabal
31/03/2014
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.
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Laya Lessa
31/03/2014
Oi Thiago, poderia me passar seu e-mail ou skype para e add e enviar o programara para vc?
Muito obrigada pela atenção
Muito obrigada pela atenção
GOSTEI 0
Thiago Irrazabal
31/03/2014
tec.thiagoirrazabal@gmail.com
Att,
Thiago Irrazabal de Oliveira.
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Laya Lessa
31/03/2014
não consegui enviar, eu erro =/
meu email: lais_ayache@hotmail.com
meu email: lais_ayache@hotmail.com
GOSTEI 0
Mauricio Rodrigues
31/03/2014
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;
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;
GOSTEI 0