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