Fórum Limpar os dados na Grid #371175
12/06/2009
0
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
Curtir tópico
+ 0Posts
12/06/2009
Edilcimar
Gostei + 0
12/06/2009
Danielrsanches
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 !!
Gostei + 0
13/06/2009
Marco Salles
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;
Gostei + 0
16/06/2009
Discorpio
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)