Quizás no sea la gran cosa, pero, a todos nos pasa que tenemos que regenerar indices, y reindexar nuestras tablas... etc etc etc.
En la empresa donde trabajo usamos este proceso cuando las sucursales reciben los DBF en las transferencias de datos, entonces los CDX están en las sucursales y solo enviamos los DBF (en un archivo comprimido, gracias a PortalFox).
Necesitamos abrir los DBF en forma exclusiva. Y este código solo tiene en cuenta indice primarios y regulares, se puede retocar para quienes necesiten.
Bueno, vamos al código... 'databaseconteiner.DBC' es el nombre del Contenedor de las Tablas...
SELECT * FROM databaseconteiner.DBC ;
WHERE OBJECTTYPE = 'Table' ;
INTO CURSOR TABLAS
*
SELECT TABLAS
SCAN
TABLA1 = TABLAS.OBJECTNAME
USE &TABLA1 IN 0 EXCLUSIVE
SELECT &TABLA1
WAIT WINDOWS 'Tabla ' + ALLTRIM(TABLA1) + ' (' + TRANSFORM(RECNO('TABLAS')) + ;
'/' + TRANSFORM(RECCOUNT('TABLAS')) + ')' NOWAIT
FOR I=1 TO TAGCOUNT()
IF !EMPTY(TAG(I))
INDICE = SYS(14,I)
NOMBRE = TAG(I)
PRINCI = PRIMARY(I)
IF PRINCI
ALTER TABLE &TABLA1 DROP PRIMARY KEY
ALTER TABLE &TABLA1 ADD PRIMARY KEY &INDICE TAG &NOMBRE
ELSE
INDEX ON &INDICE TAG &NOMBRE ADDITIVE
ENDIF
ELSE
REINDEX
EXIT
ENDIF
REINDEX
ENDFOR
PACK
ENDSCAN
Guillermo Gastón Giménez
Gracias por compartir, y todo aporte es importante. Lo veo muy útil....
ResponderBorrar