Pérdida de datos


([N4] CEESA) #1

Hola:

Me ha pasado algo curioso.

Tengo una tabla de provincias enlazada a dos maestros (regiones y paises). La tabla de regiones también tiene como maestro paises.

Me estaba ocurriendo que cuando introducía en la provincia un país, durante la ejecución del programa el dato perduraba, pero si me salía y volvía a entrar, desaparecía. Si introducía región y país, me salía una ventana con un error, de que no se podía grabar el dato.

Borré el enlace a maestro de paises y todo fué bien. Volví a crear el enlace a paises y siguio funcionando bien.

Hasta hoy, que me acabo de dar cuenta que los datos de país y región que introduzco en la tabla de provincias, se borran en cuando reinicio la instancia de datos.

¿A que puede deberse?

Saludos.


([N4] rcueto.velneo) #2

Hola:

Revisa en primer lugar el campo enlazado al maestro (tipo longitud) y que el índice correspondiente sea también correcto (si es submaestro, debe estar compuesto por el campo padre y por su ID).

Si todo está Ok, es posible que tengas un problema de índices. Prueba a parar tu Velneo vServer y vuevle a arrancarlo de nuevo.

Un saludo.

 


([N4] CEESA) #3

Hola:

Rafa, por fin descubrí el fallo. Los indices estaban todos bien, de hecho creaba las relaciones a maestros con la opción que lo hace de forma automática. Al final es un problema relacionado con la herencia. Lo cuento por si sirve como experiencia para otra persona:

Comencé la aplicación en una sola solución llamada Conta, pero después del curso vi mas lógico crearme una solución base que contenga los maestros y que Conta heredara los mismos. El tema es que creé las tablas de paises y comunidades, y luego provincias, con un enlace a maestros de las otras dos.

Lo que no me había dado cuenta es que ya tenía creada una tabla provincias en la solución Conta. Esta tabla no tiene mas campos que ID y NAME. En la solución Conta siempre hago referencia provincias de la solución Base. Si reinicio la instancia Base, los datos siguen estando, pero si reinicio la instancia Conta me desaparecen los datos de los campos que no existen en Conta, pero en la tabla ¿PADRE?

Creo que esto no tiene mucha lógica. Si desarrollamos una solución hija en la que queremos suplantar alguna tabla con menos campos, ¿se cargaría los datos de la tabla padre que pueden estar usando otras aplicaciones? ¿o se trata de un comportamiento no deseado?

Saludos.


([N4] fgutierrez.velneo) #4

No debemos instanciar cajas que tengan tablas con el mismo nombre en la misma carpeta. Normalmente lo que haremos será conectar por herencia con las cajas que queramos compartir, pero nunca hacer uso de la misma tabla en dos cajas distintas. En la solución hija debes heredar la caja de datos y hacer uso en los objetos de los campos que necesites, pero teniendo en común con el resto de aplicaciones la misma caja de datos.

Por otro lado, si la estructura es distinta, como el fichero en disco es único, se reestructurará, dejandolo siempre según esté definido en la última caja que cargue. De ahí que estés perdiendo los campos.

Un saludo.


([N4] velavisual) #5

Hola,

 

Quiero pensar que lo que le ha ocurrido a CEESA sea un comportamiento no deseado.

 

Lo lógico, - y si seguimos el consejo de fgutierrez.velneo.com - es que a la hora de crear una tabla, el editor compruebe de forma automática si el identificador ya existe en alguna de las cajas heredades dentro de la carpeta configurada. Dar aviso y cambio obligatorio manual o automático por parte del editor.

 

 


([N4] fgutierrez.velneo) #6

No será en el editor donde avise de ese extremo, ya que el problema no se da en edición si no en ejecución. Podemos tener dos cajas con tablas del mismo nombre y diferente estructura, no es ese el problema mientras no lo instanciemos en la misma carpeta de datos.

Podemos tener dos cajas con dos tablas con el mismo nombre y a la hora de instanciarlos, cada una de las cajas se instancia en una carpeta distinta, o bien reusar una instancia ya existente en otra carpeta. Ahora mismo, en la versión con la que estás trabajando, el asistente no te permite hacer tal selección, pero en próximas versiones sí que te permitirá realizar este procedimiento.

De esta forma tendrías dos tablas, con el mismo nombre, pero distintos datos y en carpetas distintas y, por tanto, podrían tener distintos datos.

Lo que estamos comentando es la posiblidad de usar dos cajas con una tabla que, además de estar repetida, se quiere realmente compartir y que los datos sean comunes, pero con distinta estructura y yendo por tanto en la misma carpeta de datos. Esto no es posible. Podemos hacer uso de la misma tabla, simplemente heredando la caja que la contenga y hacer uso únicamente de aquellos campos que queramos usar, pero sólo ha de existir una única caja con esa tabla.

Como hemos comentado en repetidas ocasiones, todos estos temas saldrán muchas veces y desde distintos aspectos ya que este tema es amplio y con gran casuística. Los comentaremos con gusto siempre que haya oportunidad. De hecho estoy pensando en un par de ejemplos que ilustren ambos esquemas de relación.

Un saludo.

 


([N4] velavisual) #7

Correcto ( quise decir en tiempo de ejecución)

 

fgutierrez.velneo, gracias por sus aclaraciones. Realmente las cajas nos dan muchísimas posibilidades.

 

Esperamos los ejemplos que usted menciona, si es posible alguno aclaratorio entre distintos vServers7 (si esque en un futuro fuese posible esta característica)


([N4] CEESA) #8

Entendido. Gracias por la aclaración. Lo de los diferentes directorios de instancias de datos es una solución muy buena.

Lo que no estaría mal es que cuando esté disponible Fandiño, nos informara de los objetos de datos o de aplicación repetidos en distintas soluciones. En mi caso, por error, llevaba varios dias dándole vueltas al tema.

Saludos.


([N4] fgutierrez.velneo) #9

Como te he comentado, el error te lo mostrará en ejecución cuando intentes instanciar dos tablas con el mismo nombre en la misma carpeta, ya que será entonces cuando sea un problema.

 

Imagina un caso en el que heredes de otra caja de datos realizada por otro programador que ha usado el mismo nombre para una tabla, por ejemplo de entidades o usuarios, y no quieras hacer uso de ella directamente. En edición ha de dejarte, y en ejecución, a no ser que las instancies ambas en la misma carpeta, también.

 

Un saludo.