Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Borrado de registros (https://www.clubdelphi.com/foros/showthread.php?t=19618)

manu 19-03-2005 23:53:50

Borrado de registros
 
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;


La franja horaria es GMT +2. Ahora son las 22:15:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi