FoxPro/Visual FoxPro - Problemas con indices CDX

   
Vista:

Problemas con indices CDX

Publicado por Antonio Moronta formulaz5@yahoo.es (134 intervenciones) el 18/11/2012 21:53:43
Hola amigos de foto:

Tengo una aplicacion que dentro de una BD tengo una tabla con varios registros. Esta tabla tiene un indice CDX con tres expresiones de campo; los tres primeros campos espesificamente.

He realizado estos indices por codigo y por el asistente y siempre da el mismo problema.

Borro 5 registros de la tabla y todo pasa bien, PACK y tambien perfecto. Tengo otra tabla vacia una estructura parecida, no igual y, paso todos los registros a la vacia, y me aparecen los viejos registros borrados, pero con el agravante de que no se toman en cuanta para edicion.

1.Tenia la tabla vacia indexada tambien, se lo quite y nada.
2.Desasocie los indices, los borre fisicamente desde el explorador y nada.
3.Valide la BD y me dice que no encuetra los indices ya borrados, aun desasociados de la tabla.
4.Ya no se que intentar.

Este show lo tengo asi:

Creo indices
Index on codigo tag cod

Paso los datos a la tabla vacia.
Genero un a consulta SQL de varias tablas

Select 0
append from MyConsulta
set order to cod

Nota
Lamentablemente, perdi un posible cliente por este problema. Que desgracia.
Agradecidisimo de su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas con indices CDX

Publicado por Fidel (319 intervenciones) el 19/11/2012 21:36:13
Tu problema no debe tener que ver con índices.
Si te reaparecen registros que se habían borrado (DELETE) es porque no funcionó ó no se ejecutó el comando PACK.
Pack funciona sobre tablas en modo EXCLUSIVE
USE talTAbla IN 0 EXCLUSIVE
SELECT TALTABLA
PACK
USE

Qué significa este código? Select 0 equivale a no tener ningún área seleccionada.
La instrucción USE UnaTabla IN 0 SHARED, significa que Visual Fox seleccionará el primer área que tenga desocupada. Con eso se evita indicar un área usada por otra tabla que, obviamente, se cerrará.
Select 0
append from MyConsulta
set order to cod

* Tal vez esto de mejor resultado. Con ZAP limpias completamente la tabla.
* También puedes evitar que pasen registro marcados para borrar con:
SET DELETE ON

use nueva in 0 exclusived
SELECT Nueva
ZAP
APPEND FROM OtraTabla
GO TOP
BROWSE
USE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con indices CDX

Publicado por Antonio Moronta formulaz5@yahoo.es (134 intervenciones) el 20/11/2012 01:02:02
Gracias Fidel por tu tiempo e ilustracion.

Fijate que tengo todos esos seteos activados...
Set deleted on y demas....

En el momento que hago todas las operaciones con las tablas, estas estan abiertas en modo exclusivo. Logicamente no puedo darle ZAP la tabla que tiene los datos, pues los perderia sin remedio todos. Y lo que intereza es borrar definitivamente aquellos registros que no nos sirven.

Ahora, por qué no esta funcionando el PACK si ya lo he aplicado varias veces en modo exclusivo?
Bueno, a mi enteder el indice se queda con la referencia de los registros ya borrados y los muestra, como? no se.

He aplicado el REINDEX y es como que no hago nada. Incluso pongo estos comandos en un programa de inicio de mi aplicacion y no crea los indices cdx, debo hacerlo via plataforma de desarrollo, o via modificacion de estructura de tabla.

Uso VFP9
Mi computadora no tiene fallos electricos ni de software.

No se que sucede. Ah! y lo del Select 0, fue por poner cualquier numero.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar