Forzar regeneración de índices


([N1] aztecmexico) #1

Será que solo a mi me pasó?

He creado un nuevo índice en una tabla, con dos campos.

En otra tabla, de igual manera he creado 2 campos de tipo puntero indirecto real, cada campo apunta al mismo indice, pero con distinta resolución.

Al intentar mostrar la información de los registros a que apuntan dichos campos, no muestra nada, absolutamente nada.

Entro al vDataClient, regenero datos, regenero índices, en el vAdmin reinicio todas las instancias de la aplicación, resultado; NADA, sigo sin poder ver la información.

Despues de muuuuuuuuucho rato, analizando, revisando condiciones de indexación, etc. NADA.

Lo único que me queda por hacer es volver a importar la información de la tabla que contiene el nuevo índice, una vez realizado esto, TODO funciona como debio haber funcionado desde el la primer regeneración de índices vía vDataClient.

La pregunta es entonces, ¿Funcionan realmente los comandos del vDataClient para regenerar índices? o ¿tienen problemas, o solo me pasó a mi?

Cabe mencionar que no intenté regenerarlos vía proceso.

Esto me asusta un poco a estas alturas del partido, ya que no me quiero ver en la penosa necesidad de tener que vaciar tablas y volverlas a cargar para que los índices funcionen correctamente ante algunas posibles modificaciones en los proyectos, creí que nunca iba a hacer la odiosa comparación contra V6, pero ahi jamás tuve este tipo de problemas, modificaba, creaba indices, etc, sobre tablas con información y en automático se regeneraban, cosa que por lo visto no sucede en V7.

Entiendo que existen las funciones, peeeeero, una cosa tan elemental, tan necesaria, tan importante no debería a estas alturas del partido presentar NINGÚN mal funcionamiento o funcionamientos extraños, y que conste, dado que asumí que el problema era mio, de diseño o de resolución, por eso perdí tanto tiempo, para que al final con volver a cargar el contenido de la tabla ya quedara bien.

Espero que con la 7.8 esto quede resuelto plenamente.

Un saludo.


([N1] Pepeto) #2

Si he entendido bien,

- Ya tabla donde has creado los campos Puntero Indirecto Real ya existia y ya contenia datos antes de crear los Punteros

Si es asi, el funcionamiento creo que ha sido el correcto.
Los campos "Punteros directos reales" son calculados cuando se realiza un Alta o Modificacion del registro, y solo cuando se modifica alguno de los campos que intervienen en la resolucion del puntero. Por tanto, si los registros ya existian y no han sido modificados (se ha modificado la estructura de la tabla pero no los registros existentes), los Punteros no apuntan a ningun sitio.

Este caso es similar a cuando tienes una tabla con varios campos numéricos, y despues de un tiempo de almacenar registros, creas un nuevo campo con una formula en el Contenido Inicial. Todos los registros que sean creados o modificados a partir de ese momento, tendran un valor en el nuevo campo, pero los registros anteriores tendran el campo vacío.

Y para solucionar este caso, siempre que ha sido necesario, hemos creado un proceso para recalcular los registros existentes y que todo funcione correctamente a partir de ese momento.

Un saludo
José Luis
http://www.ascsl.com
http://ascsl.net


([N1] aztecmexico) #3

Es correcto Pepeto, se entiende que si la tabla ya contiene información y se agregan índices de este tipo los mismos no apuntan a ningún lado en un principio.

Por tal razón, supuse, erróneamente según veo, que al regenerar índices vía vDataClient se actualizaría dicha situación, sin embargo no es así.

Pregunta, el el proceso que utilizas para recalcular los registros existentes, me imagino que con solo tocar uno de los campos que intervienen enlos nuevos índices basta para forzar dicho recalculo?, es correcto?

¿Bastaría con simular una modificación de campo?, algo asi:
-Set vCampo, campo
-Modificar campo, vCampo

Esto dentro de un recorrer lista, o algo por el estilo

Saludos.
Martin.


([N1] Pepeto) #4

Se me olvidaba,

Los Punteros Virtuales, (al igual que los "Campos Formula") si son recalculados automaticamente, en todos los registros, incluso aunque la tabla ya contenga informacion, por una sencilla razon: el campo Puntero Virtual , y tambien el Campo Formula, son recalculados siempre que se usa dicho campo en algun objeto visual, o cuando interviene en otra formula.

un saludo
José Luis


([N1] Pepeto) #5

La verdad es que no he tenido la necesidad de probar estos cambios con los Punteros Indirectos Reales, pero en cualquier caso, deberia funcionar cambiando solo uno de los campos que intervienen en la resolucion.

un saludo
José Luis


([N1] aztecmexico) #6

Gracias.