Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=5495)

CFPA86 24-11-2003 00:23:26

Problema con DBGrid
 
Hola foristas, miren tengo el siguiente codigo.
procedure TForm1.Button1Click(Sender: TObject);
var
LiReg, LiCont : integer;
begin
LiReg := Table1.RecordCount;
LiCont := 0;
while LiCont <= LiReg do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
borrar;
LiCont := LiCont + 1;
Table1.Next;
end;
end;

procedure TForm1.borrar;
var
contador : integer;
begin
if DBGrid1.SelectedRows.Count > 0 then
With Table1 Do
For Contador := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
GotoBookMark(pointer(DBGrid1.SelectedRows.Items[Contador]));
table1.Delete;
end;
end;

Mi proposito con este es a medida que seleciono todos los registros de una tabla los elimino, el problema es que no los elimina todos debido a que llega un momento en que en el procemiento borrar (if DBGrid1.SelectedRows.Count > 0 then) Count es igual a 2 sabiendo que se a seleccionado 1 solo y por supuesto saca un error donde dice que registro no encontrado. Les pido me colaboren saliendo de este problema.
Gracias.

marcoszorrilla 24-11-2003 07:55:59

Para eliminar todos es mucho más fácil:

MiTabla.EmptyTable;

Tienes que tener uso exclusivo sobre la misma.

Un Saludo.

CFPA86 24-11-2003 17:14:23

Gracias por la respuesta, existe un pero y es que a medida que voy a eliminar debo de chequiar algo en cada registro que se selecciona automaticamente, alguien tiene otra respuesta a esta inquietud.
Chauuuuuu

marcoszorrilla 24-11-2003 18:16:00

En este caso puedes borrar mediante una consulta SQL, que te va resultar mucho más fácil de implementar y mucho más rápido.


Delete
Where xxx = lo que sea.

Y luego ejecutas la consulta.

Con ExecSql, aunque esto dependerá del tipo de tablas que estes utilizando.

Un Saludo.

CFPA86 25-11-2003 16:19:41

Gracias por su interes en el tema, se puede dar por terminado este hilo.

CHAUUUUUUUUUUU

CarlosHernandez 28-11-2003 00:26:45

no se si te sirva de algo.

lo puedes hacercon un while not

while not table1.eof do begin
table1.delete;
next;
end;
first;

asi puedes eliminar solo lo que necesitas mediante un filtro,o toda la tabla,y almacenas lo que necesites en variables.

__cadetill 28-11-2003 10:43:51

Solo un comentario a la respuesta de CarlosHernandez.

El Next de dentro del bucle sobraría ;)


La franja horaria es GMT +2. Ahora son las 12:17:36.

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