GARANTIR DESCONTO

Fórum Ajuda... Limpar DbGrid... Qual o método? #230210

05/05/2004

0

Boa tarde companheiros....
vejam se podem me ajudar....

No meu sistema tenho uma procedure que limpa todos os componentes do form, edit´s, combos, etc....
Estou precisando implantar nesta procedure a limpeza do dbgrid, mas não sei qual o método para isso. Vejam, o codigo para limpeza dos edit´s etc....

procedure LimpaCampos(FormAtual: TForm);
var
i : integer;
Begin
For i := 0 to FormAtual.ComponentCount - 1 do
begin
{ Edit }
if (FormAtual.Components[i] is TEdit) then
begin
with (FormAtual.Components[i] as TEdit) do
begin
Text := ´´;
end;
end;

{ ComboBox }
if (FormAtual.Components[i] is TComboBox) then
begin
with (FormAtual.Components[i] as TComboBox) do
begin
ItemIndex := -1;
end;
end;
End;




Agora preciso implantar a rotina de limpeza do Dbgrid, então deveria ficar mais ou menos assim:

{ Dbgrid´s}
if (FormAtual.Components[i] is TDbGrid) then
begin
with (FormAtual.Components[i] as TDbGrid) do
Begin
Clear; //Aqui éstá o problema.. Este metodo não existe!!!
End;
end;


O problema é que o método clear não existe. Me falaram para fechar e abrir o dataset do grid, mas fica inviável, pois posso ter mais de um grid num cadastro e para saber qual o dataset que referenciaria o grid que está sendo limpo no momento, ficaria complicado.
O que preciso mesmo é achar o metodo de limpeza do grid.


Agora vejam uma outra lógica utilizada para limpar stringGrid´s que tem uma lógica interessante...


{ Limpando uma linha de cada vez: }
procedure TForm1.Button2Click(Sender: TObject);
var
I: integer;
begin
with StringGrid1 do
for I := 0 to RowCount -1 do
Rows[I].Clear;
end;

Acontece que não sei as propriedades do dbgrid que devo colocar no lugar de RowCount e Rows, não sei qual seria a propriedade indicada no caso do Dbgrid..

Amigos se puderem me ajudar... Ficarei muito grato.
Um grande abraço a todos...

Pablo - Marília/SP


Pablo_lima

Pablo_lima

Responder

Post mais votado

22/03/2016

Teste assim:

With ClientDataSet1 do
begin
  Open;
  EmptyDataSet;
  Close;
  Open;
end;

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

05/05/2004

Paulo_amorim

Olá

Que eu saiba não tem uma propriedade Rows no DBGrid.

O que vc pode fazer é adotar o que te falaram, ou seja, fechar o DataSet

para isso, faça
if (FormAtual.Components[i] is TDbGrid) then 
begin
   with (FormAtual.Components[i] as TDbGrid) do 
   begin 
       DataSource.DataSet.Close;
   end;
end;


Isso vai fechar e consequentemente limpar a grade

Até+


Responder

Gostei + 0

05/05/2004

Lucas Silva

para limpar o BDGrid é só fechar a query que esta associada a ele.
Por exemplo, vamos supor que a query1 esta associada ao DBGRid..

query1.Close;


isso já limpa o DBGrid.


Responder

Gostei + 0

22/03/2016

Anderson Possamai

Estou gerando um arquivo xml com os valores do grid...
Quando eu salvo... dou um open no CDS... mas dai volta tudo no grid...
Tem como literalmente apagar os registros, ja que estes foram salvos no xml? Nao apenas fechar o dataset para sumir os registros, quero limpar o que esta em memoria ou sei la aonde...
Responder

Gostei + 0

22/03/2016

Anderson Possamai

amigo, isso ai mesmo, funcionou direitinho... fiz assim no botao de novo registro, entao fica ai o codigo pra quem buscar:

procedure TFormXml.btnNovoClick(Sender: TObject);
begin
  With ClientDataSetPrincipal do
  begin
    Open;
    EmptyDataSet;
    Close;
  end;

  DBGridPrincipal.Enabled := True;
  ClientDataSetPrincipal.Open;
end;
Responder

Gostei + 0

23/03/2016

Marco Antônio

Pablo, bom dia é o seguinte.

Quando se fala de DBGrid e StringGrid é de fato de se observar que apesar da aparência, o conceito da utilização de cada um é totalmente diferente.

O StringGrid é um componente visual onde todo o conteúdo nele mostrado é passado e controlado em tempo de execução.
O DBGrid nada mais é do que um componente pertencente a família de um DBWare. Com isso ele nada mais é do que uma janela que TEM VINCULO direto a algo( ClientDataSet, Query, Table ). Sendo assim Pablo não vejo a possibilidade de se limpar esse componente sem tirar o vinculo. Isto esta implicito. É como se você não quisesse que a sua TV não mostrasse os Programas de uma determinada emissora. Ora, para isso basta desligar a TV e pronto.
DBGrid é para mostrar o resultado aquilo que esta na ORIGEM.

O que as vezes pode ser feito, é executar um SQL passando um parametro que você sabe que não vai retornar nada. E com isso o DataSet estará vazio e consequentemente o DBGrid tb.
EX: tenho uma tabela de empresas que onde sei que os códigos delas são acima de 0. Com isso inicio minha query selecionando as empresas cujo código seja '-1'.
SELECT * FROM empresas WHERE codEmpresa = -1.

Tô na dúvida se estou ajudando.

Mas qualquer coisa vamo se falando por aqui. Abc.
Responder

Gostei + 0

25/10/2018

Dagner

Frexemplo.DBGridex.Columns.Grid.Fields[0].Clear;
Responder

Gostei + 0

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

Aceitar