Fórum Limpar os dados na Grid #371175

12/06/2009

0

Bom dia

Como faço para limpar os dados que estão na grid após uma consulta.
Os dados na grid é o resultado de um SQL que foi feito no ClientDataset.
O que acontece é que quando fecho o form e carrego o form novamente mostra o result set(resultado da query) da última pesquisa. Eu fecho o ClientDatase e abro mas não adianta. Imagino que deve ser os registros estarem instanciados em memória.
Estou usando Delphi 2006 + Firerbird 2.0 + conexão DBEXPRESS

Aguardo retorno

Rogério


Rogeranalista

Rogeranalista

Responder

Posts

12/06/2009

Edilcimar

Ao fechar o form, dê um release


Responder

Gostei + 0

12/06/2009

Danielrsanches

Como faço para limpar os dados que estão na grid após uma consulta. Os dados na grid é o resultado de um SQL que foi feito no ClientDataset.


vc já disse tudo ... os dados na grid é o resultado de um SQL... sempre que vc abrir o ClientDataset ele irá executar o comando SQL nele gravado e os registros resultantes serão exibidos no grid ...

uma forma de vc não exibir os dados é tirando sua conexão com seu ClientDataset, setando a propriedade DataSource do grid para nil ...

outra forma, é vc passar um comando SQL para o ClientDataset, onde não retorne registro nenhum ...

abraço !!


Responder

Gostei + 0

13/06/2009

Marco Salles

[b:5071f46eae]para o caso de paramentros .. [/b:5071f46eae]
No que ele executa a SQL , ele recupera ( Não deveria mas recupera )
o Valor dos Parametros (mesmo que o Form tenha sido destruido)

Então fica este perrengue ...

´Eu fecho o ClientDatase e abro mas não adianta....´

Uma saida é limpar estes parametros

Pode ser no Form Herança mesmo ..

exemplo:

No Caso de Cadastro
procedure TfrmCadastro.FormClose(Sender: TObject; var Action: TCloseAction);
var
idx:integer;
begin
dsrCadastro.DataSet.Close;
with TClientDataSet(dsrCadastro.DataSet) do
for idx:=0 to Params.Count - 1 do
  Params[0].Clear;
end;


No Caso de Pesquisa
procedure TfrmConsulta.FormDestroy(Sender: TObject);
  var
    idx:integer;
begin
  dsrPesquisa.DataSet.Close;
    with TClientDataSet(dsrPesquisa.DataSet) do
    for idx:=0 to Params.Count - 1 do
      Params[0].Clear;
end;



Responder

Gostei + 0

16/06/2009

Discorpio

Bom dia a todos.

A solução mais simples, seria voce somente ativar o TSQLDataSet ou TClientDataSet no momento em que voce efetuar a pesquisa e não no momento em que voce instancia ou simplesmente abre o form da memória.

Se voce está fazendo isso no momento em que voce instancia o Form em memória, então ele vai abrir o TSQLDataSet com a instrução SQL da persistência, ou seja, a configuração que voce efetuou em tempo de projeto no TSQLDataSet, portanto, não adianta nem destruir o Form da memória.

Outra solução, também simples, o nosso amigo Danielrsanches já deu, que é voce construir um instrução SQL que não retorne nada no DataSet, podendo ser até passando valores inexistentes nos parâmetros da SQL.


Responder

Gostei + 0

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

Aceitar