![]() |
Borrar registros en blanco en Dbf
Hola
Trato de borrar en una DB tipo Dbf los registros que tengan un determinado campo vacío. Utilizo el siguiente código pero no me los borra todos y no logro saber el porqué. Utilizo el componente TDbf
Gracias. |
Cita:
|
Esto si me funciona
No entiendo muy bien el motivo, pero me funciona así:
:confused:
Lo único que he cambiado es que después de que encuentré un registro vacío y lo borre vuelva al primer registro yempiece el recorrido por la tabla de nuevo.. Gracias. |
entonces, lo que sobra de la "primera versión" que has puesto es el "next" en caso de borrar...
Código:
While not Dbf1.EOF do |
Tratando de encontrar alguna lógica es posible que ocurra esto:
Cuando haces el Delete, el siguiente registro pasa a ser el registro activo (suposición) por lo que sería innecesario el Next en ese caso. Inténtalo porque la solución que has encontrado es irremediablement lenta al recorrer múltiples veces la tabla. Por otra parte, para este caso de borrado veo más sencillo y eficiente que hagas una consulta SQL:
EDITO: Se me adelantó Casimiro con lo del Next sobrante. Aún así, considera lo de SQL. // Saludos |
Para que fuera efectivo el método de borrado recorriendo la tabla, sería necesario que ese campo fuese índice, buscar la primera ocurrencia y luego ejecutar un bucle, mientras el registro sea = ''
No Sería necesario el Next, pues al borrar el último ya no se cumpliría la condición del While. Un Saludo. |
Gracias a todos.
Efectivamente lo que sobraba era el Next después del delete. Tienes razón roman, mi primera solución era más que lenta. Un saludo |
La franja horaria es GMT +2. Ahora son las 07:17:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi