PDA

Ver la Versión Completa : Borrado de registros


manu
19-03-2005, 23:53:50
Hola a todos.
Tengo una tabla Acces, accedo a ella mediante un ADOQuery.
Cuando intento borrar todos los registros con el codigo.

begin
ADOQuery1.First;
while not ADOQuery1.Eof do begin
ADOQuery1.Delete;
end;

Dandome el siguiente mensaje de error:
Informacion de columna de clave insuficiente o incorrecta, demasiadas filas afectadas por la actualizacion.


La tabla no esta indexada, ni ordenada. Tiene sobre unos 100 registros.

¿alguna ayuda?
Gracias y saludos.

marcoszorrilla
20-03-2005, 10:46:13
Para no tener problemas con los componentes ADO, las tablas tienen que tener siempre una clave única, incluso siendo así es posible que tengas que instalar la versión que corresponda de las MDAC.

Un Saludo.

Toñico
22-03-2005, 09:55:08
Hola, en vez de usar un borrado secuencial como el que estás usando, podrías lanzar una secuencia SQL que borre todos los registros de una sola vez.

Ya que estás usando ADO, supongo que has tenido que incluir un componente ADOConnection. Incluye también un componente ADOCommand e intenta usar el siguiente código que te escribo.

Un saludo.

Var
cSQL: String;
Begin
Try
ADOConnection1.BeginTrans;
ADOCommand1.Connection := ADOConnection1;
cSQL := 'Delete From {Nombre_de_la_Tabla}';
ADOCommand1.CommandText := cSQL;
ADOCommand1.Execute;

ADOConnection1.CommitTrans;
Except
On E:Exception do
begin
ADOConnection1.RollbackTrans;
Screen.Cursor := crDefault;
MessageDlg(E.Message, mtWarning, [mbOk], 0);
raise;
end;
End;
end;