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)
-   -   problema al borrar varios registros (https://www.clubdelphi.com/foros/showthread.php?t=73499)

giocatore 26-04-2011 22:16:20

problema al borrar varios registros
 
Buenas!! busque en el foro pero no encontré algo que me ayude espero puedan hacerlo gracias de antemano. Bueno el problema es el siguiente tengo una tabla de la cual quiero borrar ciertos registros.

Por ejemplo, tengo una tabla llamada producto y tiene un campo llamado Tipo_producto que sea varchar en el cual tengo dos tipos de producto: Bebidas y Comidas, el problema que tengo es que si quiero borrar todos los registros que sean Comidas pongo en el evento del botón lo siguiente:


while not (datamodule7.ADOTable3.Eof) do
if datamodule7.ADOTable3['Tipo_producto']='Comidas' then
begin
datamodule7.ADOTable3.Delete;
end;
datamodule7.ADOTable3.Next;
end;


Pero el problema es que no borra todos los registros que son de tipo comida, también probé incluyendo disable y enablecontrols, pero no funciona correctamente quisiera saber porque motivos y como solucionarlo.


Muchas gracias!!!

oscarac 26-04-2011 22:31:02

y porque tienes que recorer la tabla porque no lo borras en bloque


creas un query que diga mas o menos asi

Código SQL [-]
Delete * from Tabla where TIpo_Producto = 'Comidas'

giocatore 26-04-2011 22:41:09

Quisiera hacerlo mediante código delphi, sin usar consultas. Me olvidaba es una bd en mysql y conecto con ado

oscarac 26-04-2011 22:47:20

mm prueba haciendolo de esta manera

Código Delphi [-]
 
while not (datamodule7.ADOTable3.Eof) do
if datamodule7.ADOTable3['Tipo_producto']='Comidas' then
   datamodule7.ADOTable3.Delete
Else
  datamodule7.ADOTable3.Next;
end;

imagina que cuando encuentra un registro cuyo tipo es Comidas y lo borra... donde queda el puntero en el registro? avanza hacia el siguiente verdad?
y si encima tu le das next entonces puede que este borrando solo algunos

prueba y comentas

ContraVeneno 27-04-2011 02:01:21

si quieres borrar todas las "Comidas", lo mejor es hacerlo con una consulta, como dijo Oscar... y pues eso lo pones en el código de delphi, lo haces desde tu programa. Solo que en lugar de usar un TADOTable, utilizas un TADOQuery...

http://www.clubdelphi.com/foros/show...18&postcount=5

giocatore 27-04-2011 07:15:49

Cita:

Empezado por oscarac (Mensaje 398099)
mm prueba haciendolo de esta manera

Código Delphi [-]
 
while not (datamodule7.ADOTable3.Eof) do
if datamodule7.ADOTable3['Tipo_producto']='Comidas' then
   datamodule7.ADOTable3.Delete
Else
  datamodule7.ADOTable3.Next;
end;

imagina que cuando encuentra un registro cuyo tipo es Comidas y lo borra... donde queda el puntero en el registro? avanza hacia el siguiente verdad?
y si encima tu le das next entonces puede que este borrando solo algunos

prueba y comentas

Muchísimas gracias oscarac tu solución fue muy práctica y eficáz, probé y me funcionó de mil maravillas, me ayudaste mucho.

GRACIAS POR TU TIEMPO y también a todos los que comentaron.

oscarac 27-04-2011 07:36:02

de nada.... cualquier cosa... en que pueda ayudarte con mucho gusto... de paso que refuerzo mis conocimientos :eek:


La franja horaria es GMT +2. Ahora son las 15:18:43.

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