Enlace Indirecto Real


([N3] GSI) #1

Hola, tengo un cliente que los pedidos a proveedor tienen un enlace indirecto real a una referencia equivalente, funciona perfectamente, pero cuando se metieron una serie de pedidos no existían ciertas referencias, ahora necesito que que aparezcan, pero no se como recalcular este indirecto para forzar que aparezca, en las lineas de pedido ya existentes.

Si entras manualmente y cambias a otro artículo y vuelves al original, ya aparece, pero esto es imposible de forma manual y ademas modifica las condiciones de compra.


([N3] pacosatu) #2

Hola GSI.

Prepara un Proceso de mantenimiento que recorra la Tabla la Líneas de Pedido y vaya modificando el campo Puntero Indirecto Real con el #ID que calcules con la fórmula establecida en la propiedad Resolución, donde se resuelve el Índice único a la tabla enlazada.

Así de fácil.

Saludos
Paco Satué


([N3] GSI) #3

No lo entiendo muy bien, este campo en concreto se compone de ARTICULO y PROVEEDOR, al ser dos campos numericos si pongo:

modificar campo = #ARTICULO + #PROVEEDOR

¿los datos se sumaran o lo entenderá velneo ?


([N1] wikan) #4

Se refiere a que hagas un proceso que localice el ID al que debería apuntar el puntero y se lo asignes al campo puntero.


([N3] GSI) #5

El fichero es un submaestro y no me ha funcionado, es decir, el fichero de equivalencia es:

#articulos
#id
#proveedor
#equivalecia

el enlace indirecto real apunta a un indice de clave unica compuesto por articulo+proveedor


([N3] pacosatu) #6

Hola GSI.

En realidad no se puede actualizar el Puntero indirecto con el #ID de la tabla enlazada, así que olvida lo que te he dicho.
El campo Puntero indirecto es un Alfa Latin1 de 3 caracteres, por lo tanto guarda información que solo Soporte sabrá decirte.

Así que el único procedimiento posible que se me ocurre es recorrer la tabla modificando alguno de los campos que intervienen en la Resolución del Índice. Como esto, evidentemente es un engorro o una chapuza, tendrás que consultar a Soporte para que ellos se pronuncien y te digan cómo hacerlo.

Yo de momento, cuando me ocurre eso, lo que hago es añadir un campo auxiliar _AUX de tipo Booleano. Ese campo participa en alguno de las Partes del Índice que resuelven la propiedad Resolución del puntero.

Por ejem. la expresión que resuelve la Parte de índice ARTICULO = (#articulos + (0*#_AUX)) funciona correctamente.

Ahora solo con recorrer la tabla e ir modificando el campo auxiliar #_AUX se actualizan los Punteros Indirectos.

Cargar lista (TABLA_LINEAS, #ID)
Recorrer tabla Lectura/Escritura
– Modificar campo (_AUX, ! #_AUX)

De todas formas, veamos que te cuentan en Soporte.

Saludos
Paco Satué


([N3] GSI) #7

La solución aportada por Soporte:

Para que se genere el enlace es necesario modificar el contenido de alguno de los campos que intervengan en su resolución (el proveedor o el artículo). Puedes, por ejemplo recorrer la tabla poniendo a 0 alguno de esos campos y luego volver a recorrerla asignándole el valor correcto.

En cuanto a lo que pudo causar este problema, ¿puede ser que el puntero lo hubieses creado cuando la aplicación ya tenía datos? Ten en cuenta que le mero hecho de crearlo, al reconstrurir no le va a dar contenido en los registros que ya existen.


([N3] pacosatu) #8

Hola GSI.

Está claro entonces que necesitamos una Herramienta en VDataClient que sea:

Reconstruir Punteros Indirectos Reales

Lo pondré como Idea.

Saludos
Paco Satué


([N1] Ramiropa) #9

Buenas.

Yo usaba los punteros indirectos reales con V6 pero he dejado de usarlos con V7.

El motivo es que en V6 se podía establecer que el indirecto real realizara el Alta automática del registro apuntado (por ejemplo Cliente+Tarifa). Esa característica era muy útil pero no existe en V7 (salvo que me haya perdido algo) y por tanto el Alta no se puede realizar al vuelo. Siendo así, el indirecto real no me aportan nada y prefiero que la tabla apuntada tenga un #ID numérico normal y apuntar a ese #ID como maestro en lugar de como indirecto real. Por supuesto en esa tabla tendrá que haber un índice único con el par o conjunto de campos adecuados.

Para resolver el puntero al maestro uso un indirecto virtual que resuelve el índice único de la tabla apuntada (indice Cliente+Tarifa, para seguir con el ejemplo) y devuelve su #ID. Ese indirecto virtual es el valor por defecto del puntero a maestro, con lo que el sistema es automantenido.

Si el indirecto virtual fuera #TIV_Cli_TRF y el puntero a maestro fuera #CLI_TRF, el problema planteado se resolvería con un recorrer lista + Modificar campo #CLI_TRF Ccon el valor de #TIV_CLI_TRF

Saludos. Ramiro


([N2] ramiro) #10

Buenas:

Perdonad, estaba con la conexión Cloud. El anterior mensaje es mío…

Saludos. Ramiro


([N3] pacosatu) #11

Hola Ramiro.

Me alegro que hayas aportado tu opinión sobre este tema, porque aparte de algunos pocos (GSI, Manuel, …) y la “callada” por respuesta de Velneo sobre este tema, parece que nadie tiene problemas con los punteros Indirectos cuando es un problema o limitación grave de Velneo.

Si pagas la suscripción de Velneo es, entre otras cosas, por la funcionalidad de Puntero Indirecto Real e Índices complejos. Estas 2 son funcionalidades muy potentes pero, como muchas cosas en Velneo, incompletas.

Es absurdo y aberrante decirte que cuando creas un nuevo Puntero Indirecto real o modificas la estructura de una tabla, los Punteros Indirectos Reales no se inicalizan ni los índicen complejos se recrean automáticamente.

Estoy de acuerdo que los enlaces permanentes de la Base de Datos Real son muy potentes frente a un SGBDR, pero en Velneo cualquier cambio en la base de datos no prevista inicialmente puede ser un grave handicap y requiere mantenimientos manuales.

En cuanto a la respuesta de Soporte:

¿puede ser que el puntero lo hubieses creado cuando la aplicación ya tenía datos? Ten en cuenta que el mero hecho de crearlo, al reconstrurir no le va a dar contenido en los registros que ya existen.

Hombre, ¡¡pues claro que lo he creado cuando la aplicación tenía datos!!, precisamente lo que quiero es que inicialize los punteros de toda la tabla, tal como debería hacer cualquier base de datos. O por lo menos me suministras una Herramienta en vDataClient que haga este cometido.

Existe otro problema con los punteros Indirectos Reales relacionado con el refresco de valores de campos del puntero Indirecto en formularios, cuando éstos son actualizados desde un subformulario. Es un poco complicado de explicar pero ya está registrado en el vBugman hace tiempo.

Yo uso mucho los Punteros Indirectos Reales porque son una herramienta muy potente y por otro lado imprescindible usarlos para resolver consultas que antes hacía con SQL.

Ramiro, yo no uso el Enlace Indirecto Virtual porque se tiene que resolver siempre contra el VServer y en Cloud es una pesadilla. Lo que hago es guardar el #ID del puntero Indirecto en un campo #ID_PUNTERO (lo que tú llamas #TIV_Cli_TRF) que se guarda mediante una actualización desde la tabla de histórico, de esta forma el enlace Indirecto es tan rápido como un puntero a Maestro.

En cualquier caso, Recalcular o Reconstruir el Puntero Indirecto Real debería ser tan sencillo como hacerlo con un Puntero a Maestro normal.

En fin, estamos muy entretenidos con las maravillas que podemos hacer con javascript, pero nos estamos olvidando que tenemos muchos flecos pendientes de solucionar en la esencia de Velneo y su base de datos, lo que antes entendíamos por Life is Soft.

Saludos
Paco Satué


([N2] ramiro) #12

Buenas:

Realmente lo que en mi post intentaba decir es que con V7 he dejado de usar DE FORMA ABSOLUTA los punteros indirectos reales. La Tabla a la que apuntaría el Indirecto Real la convierto en Maestra con un #ID numérico. Lo que sería Puntero indirecto Real lo sustituyo por un Puntero a Maestro cuyo valor (el valor del #ID apuntado) es calculado usando un Puntero Indirecto Virtual (el Indirecto Virtual es el valor inicial del Puntero a Maestro, usándose también en trigger anterior a Alta/Modificación, aprovechando el Trigger, ya de paso, para realizar el Alta de la Tabla apuntada si el registro no existiera).

El Indirecto Virtual es lento pero SOLO se usa en 3P, a nivel de Tabla y sus Triggers.

Para todo lo demás uso el puntero a Maestro.

Hace muchos años, impartiendo cursos de V6, solía decir que la mejor Tabla Histórica era una Tabla Maestra.
Pues lo mismo en V7: Mi opinión es que el mejor Puntero Indirecto es el Puntero DIRECTO.

Saludos. Ramiro


([N3] pacosatu) #13

Hola Ramiro.

Esa es la cuestión ¿ dejamos de usar los Punteros Indirectos porque Velneo se ha olvidado de proporcionar una Herramienta que recalcule dichos Punteros ?

Yo creo que no, el Puntero Indirecto no es más que un Puntero a Maestro que se actualiza dinámicamente según la fórmula establecida. Esto es muy potente y solo necesitamos que Velneo complete su funcionalidad y no tengamos que andar como siempre, con “chapucillas” como tu puntero Virtual o la mi Actualización para simular un correcto Puntero dinámico.

Dejemos claros los conceptos:

  • Un Puntero a Maestro es casi siempre Estático, se asigna una vez y raramente se toca.
  • Un Puntero Indirecto Real puede ser dinámico gracias a que se recalcula mediante una fórmula.

Sinceramente para mí, Velneo como base de datos perdería muchos puntos sin esta excelente característica.

Saludos
Paco Satué


([N1] Ramiropa) #14

Hola Paco:

Cada uno debe elegir la solución que más le convenza, eso es claro.
Mi opción: en V7 NO USO Punt-Ind-Reales y al actuar así no he perdido dinamismo ni prestaciones (hasta hoy)

Mi elección se basa en 3 consideraciones:

  1. El puntero a Maestro que sustituye al Ind-Real se resuelve de forma dinámica (usa una Fórmula: el Ind-Virtual)

  2. El Puntero a Maestro es de menor tamaño (el Ind-Real tiene que concatenar los #ID de varios Maestros)

  3. El Puntero a Maestro da más juego y es más rápido en el uso posterior

Saludos. Ramiro


([N2] ramiro) #15

Solo una cosa más…

Si Velneo “arreglase” las deficiencias actuales de los Indirectos Reales, seguiría sin usarlos.

Saludos. Ramiro


([N3] finanplan) #16

Buenas tardes

En mi caso si Velneo quitara los enlaces indirectos reales dejaría de usar Velneo inmediatamente.

Ni se me ocurre como podría montar con enlaces a maestro todas las estadísticas (muchas) que hago con actualizacionesque que nutren muchas tablas (normalmente en memoria) a partir de las cuales genero gran cantidad de información agregada para los usuarios.

Saludos.