![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Esto si me funciona
No entiendo muy bien el motivo, pero me funciona así:
![]()
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. Última edición por userlazarus fecha: 12-07-2006 a las 15:27:33. |
#4
|
||||
|
||||
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 if Dbf1.FieldByName('C_CONCEPTO').AsString = '' then begin Dbf1.Delete; Dbf1.Next; <---- quita esta línea ------< end else Dbf1.Next;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
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 |
#6
|
||||
|
||||
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.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#7
|
|||
|
|||
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 |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Borrar Registros Totalmente | h2o_mx | Tablas planas | 5 | 20-01-2007 19:18:56 |
Borrar registros | yorllito | Conexión con bases de datos | 3 | 09-04-2006 16:04:18 |
Borrar n Registros de una Tabla | Abel Garcia | Firebird e Interbase | 18 | 09-11-2005 14:16:23 |
Borrar registros | dmagui | MySQL | 2 | 11-07-2005 20:14:25 |
no puedo borrar registros | Patricio | Conexión con bases de datos | 2 | 16-02-2005 14:39:05 |
![]() |
|