Limpar os dados na Grid
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
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
Curtidas 0
Respostas
Edilcimar
12/06/2009
Ao fechar o form, dê um release
GOSTEI 0
Danielrsanches
12/06/2009
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 !!
GOSTEI 0
Marco Salles
12/06/2009
[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
No Caso de Pesquisa
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
Discorpio
12/06/2009
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.
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