Como deletar todos registros com Table?

Delphi

11/03/2004

Olá!

Gostaria de saber como deletar todos os registros de uma tabela, de uma só vez, utilizando um Table.

Grato.
wbb


Wbb

Wbb

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

11/03/2004

com table[b:3aa3b0f506]::[/b:3aa3b0f506]
while not table.eof do
  table.delete;

com query[b:3aa3b0f506]::[/b:3aa3b0f506]
delete from table
:wink:


GOSTEI 0
Wbb

Wbb

11/03/2004

Obrigado maicongabriel, mas isso não apaga todos os itens de uma vez, mas sim um-a-um.

T+
wbb


GOSTEI 0
Maicongabriel

Maicongabriel

11/03/2004

Claro! Porque não existe solução para TTable (provavelmente base paradox) que delete todos os registros de um vez!
É bem simples! Essa é a Unica forma :wink:


GOSTEI 0
Wbb

Wbb

11/03/2004

Com relação ao Table você tem razão mesmo. Na realidade eu escrevi errado. Não é um Table e sim um ADOTable.

Com esse tem jeito?

Grato.
wbb


GOSTEI 0
Maicongabriel

Maicongabriel

11/03/2004

[i:11288c5c68]Tentou...[/i:11288c5c68]
ADOTable.DeleteRecords;
:?:


GOSTEI 0
Zumbi

Zumbi

11/03/2004

amigo tente:

table1.deletetable;


GOSTEI 0
Maicongabriel

Maicongabriel

11/03/2004

:shock: Ele quer deletar todos os [b:d434f19e02]registros[/b:d434f19e02], não a [b:d434f19e02]tabela[/b:d434f19e02] :!:


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

11/03/2004

Colega,

Para tabelas desktop como Paradox e dBase use o método EmptyTable. (BDE)


GOSTEI 0
Wbb

Wbb

11/03/2004

maicongabriel,

Já cheguei a tentar o que você sugeriu, porém com um parâmetro:
[b:d407828626]ADOTable1.DeleteRecords(arAll);[/b:d407828626]

Testei ADOTable1.DeleteRecords() também e ambos deram erro. Neste último caso o erro foi ´Operation is not allowed in this context´.

A única solução que consegui foi:
[b:d407828626]ADOTable1.Connection.Execute(´Delete * from TABELA´);[/b:d407828626]

Obrigado a todos.
wbb


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

11/03/2004

Colega,

Qual é o SGBDR? No caso do SQL Server da Microsoft você poderia fazer:

ADOTable1.Connection.Execute(´truncate table TABELA´); 


Cuidado: Não deixa nada no LOG.


GOSTEI 0
Wbb

Wbb

11/03/2004

Olá Aroldo!

Estou usando Access. A forma [b:e32e1fd995]ADOTable1.Connection.Execute(´Delete * from TABELA´)[/b:e32e1fd995] funcionou. Só não sei se é a melhor.

Obrigado.
wbb


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

11/03/2004

Colega,

Acho que o Access não possui TRUNCATE TABLE, mas você pode simplificar um pouco mais utilizando:

cnn.Execute(´Delete * from TABELA´);


Onde cnn é o nome do objeto de conexão.


GOSTEI 0
Wbb

Wbb

11/03/2004

Ok. Vou tentar.
Obrigado novamente.

wbb


GOSTEI 0
Marcelo

Marcelo

11/03/2004

Tente o seguinte cara:
  tb.First;
  while not tb.Eof do
    tb.Delete;


Valeu?


GOSTEI 0
Maicongabriel

Maicongabriel

11/03/2004

HuMmm! Essa resposta já foi dada neste mesmo topico [b:98b37043cf]Marcelo[/b:98b37043cf], olha ali acima! E não era o que o [b:98b37043cf]wbb[/b:98b37043cf] queria!... ah e alem disso, não preciza desse [b:98b37043cf]FIRST[/b:98b37043cf] ai :wink:


GOSTEI 0
Jalt

Jalt

11/03/2004

Se você quer deletar os registros e marcar cada um deles como desocupado, use o DELETE mas, se o seu negócio é ZERAR uma tabela, mantendo apenas sua extrutura, feche toda e qualquer chamada a essa tabela e faça :
Tabela.Close;
Tabela.Exclusive := True;
Tabela.EmptyTable();
Tabela.Exclusive := False;
Tabela.Open;

Espero ter ajudado

João Alberto Licht Teixeira
http://www.mistisul.com.br


GOSTEI 0
POSTAR