Ayuda con vBase


([N4] rodolformg) #1

Hola, a todos.

He estado revisando la solución vBase para aprender la manera de realizar algunas cosas que quiero replicar en mi solución y un tema que no he podido aún aclarar el la manera en la que han implementado la activación / desactivación de la pestaña de auditoria de la ficha de entidades.

Lo único que no he podido encontrar es como registran el momento y el usuario que ha desactivado un registro, es decir, en la tabla de entidades veo claramente el evento previo a la modificación que registra el momento y el usuario que realiza una modificación a la ficha, pero no veo un evento que registre los mismos datos en los campos destinados a activar / desactivar la ficha, incluso en el proyecto de datos no he encontrado nada. Imagino que puedo lograrlo haciendo malabares, pero quiero saber como lo han logrado en vBase.

Agradezco de antemano su ayuda,

Saludos,

Rodolfo


([N1] aztecmexico) #2

Si te entiendo bien, es bastante simple, en el subformulario ENT_AUD está el botón activar/desactivar, y existe un evento llamado ON_OFF el cual es invocado al presionar cualquiera de los botones (desactivar o reactivar), se usa el mismo evento para ambos botones porqué el mismo lo que hace es cambiar el valor actual al contrario.

No es un evento de tabla, sino de formulario.

Espero que sea lo que nececesitas.

Un Saludo.

Martin Ibarra.


([N4] rodolformg) #3

Hola, Aztecmexico.

Gracias por responder. Sin embargo veo que quizás no me he explicado bien, entiendo bien lo que me comentas, de hecho veo que el evento ON_OFF del formulario ENT_AUD lo que hace es justamente lo que comentas, cambiar el valor del campo OFF (Campo lógico) alternativamente con los botones correspondientes, Hasta ahí todo bien. Sin embargo, en la tabla ENT hay 2 campos que, según entiendo, se utilizan para cuando se desactiva la ficha: OFF_USR y OFF_TIM; que almacenan el usuario y el momento respectivamente, es al llenado de estos dos datos a los que me refiero, simplemente no encuentro como lo hacen en vBase.

Por cierto, tampoco he podido encontrar en donde se altera el contenido de los campos: ALT_USR y ALT_TIM; cuyo contenido es almacenado al momento de dar de alta la ficha, pero no alcanzo a ver en donde o como.

En resumen, no doy con la forma en que se almacena la información en los campos correspondientes a quién y cuando se da de alta o se modifica la ficha....Parece una tontería, pero en realidad es una estupidez :)

Gracias por intentar ayudarme en este desequilibrante, pero emocionante comienzo.

Saludos,


([N1] aztecmexico) #4

Ok, respecto a los campos ALT_USR y ALT_TIM, en el primero, en la definición de la tabla tiene un contenido inicial, mismo que le es devuelto por la función que se llama al momento de dar de alta, la función es fun:USR_ID@UsuariosMX.dat(sysUserName) misma que podrás encontrar en la caja de aplicación de usuarios, y para el campo ALT_TIM su contenido inicial es currentDateTime() el cual es una función estándar de tipo tiempo en V7, con eso se generan los valores iniciales, pero creo que tú preguntas en donde se altera el contenido, entiendo que es donde se modifican esos valores posteriormente al haberlos dado de alta, pues esos valores no se modifican nunca más, para eso tienen otros dos campos MOD_USR y MOD_TIM, que igualmente tienen los mismos contenidos iniciales y cuyos valores se cambian en un evento anterior a una modificación definido en la tabla.

Ahora bien, esto es lo que viene en el manual del vDevelop:

Contenido inicial: Expresión fórmula que será el contenido inicial del campo. La fórmula
puede contener cualquier elemento que podamos incluir a través del Asistente de
fórmulas. Puede ser una constante, el identificador de un campo, una variable global o
una variable del sistema. El contenido inicial es la fórmula y no el valor obtenido de su
cálculo, por lo que si modificamos la ficha y alguno de los campos que intervienen en la
fórmula es modificado, se actualizará el contenido inicial del campo.

Según entiendo, al utilizar contenidos iniciales tú no te tienes que preocupar de nada, ya que será la BD de V7 la que tendrá en cuenta si se modificó algún campo de los que intervienen en la fórmula, ojo con esto último, ya que en los campos de OFF_USR y OFF_TIM si tiene como contenido inicial el valor del campo OFF mediante el comando Choose por lo que al presionar el botón desactivar en el formulario, automáticamente la BD detecta el cambio en el campo que interviene en la fórmula y te actualiza el contenido de los campos de auditoría en el registro correspondiente.

Esto quiere decir, a grandes razgos, que los contenidos iniciales no lo son como tal permanentes si y solo si utilizas algún campo que pueda sufrir modificaciones durante la vida activa de un registro, en caso contrario su valor inicial no cambia nunca.

Espero que te sirva y disculpa el rollote.

Un saludo.

Martin Ibarra.


([N4] rodolformg) #5

Hola, Martín.

¡Contenidos iniciales! Todo el día buscando el truco y nada. He puesto en marcha lo que me comentas y todo va bien ahora.

Agradezco mucho el "rollote", primeramente por el esfuerzo que implica, después porque me ha ayudado a recordar que existen las actualizaciones....Te aseguro que ahora las tendré presentes en todo momento.

Lo dicho, era una estupidez.....¡Mi estupidez! :)

Muchas gracias nuevamente.

Saludos,

Rodolfo