PDA

Ver la Versión Completa : Problema con DBGrid


CFPA86
24-11-2003, 00:23:26
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 ;)