Crear html con detalle de campos de ficha


([N4] eladio) #1

Como una forma de poder crear una bitácora de cambios en una ficha, se me ocurre que se sería muy útil, poder guardar en un campo tipo objeto texto enriquecido todos los valores de antes de la modificación y en otro campo los posteriores a la modificación para después armar respectivos html para mostrarlos en un formulario en donde pueda mostrar los datos anteriores y posteriores uno al lado del otro. Estos datos los podría obtener desde un trigger y guardarlos en una tabla definida para tal fin.

Pero no sé cómo hacer para recorrer la metadata que me de los nombres de todos los campos de la tabla para armar el código html a guardar en la tabla que contendrá la bitácora.

Supongo que muchos de ustedes que cuentan con valiosa experiencia a lo mejor me puedan dar una pista de como poder lograr este objetivo.

Saludos y gracias por sus valiosos aportes.

Eladio Madrigal Azofeifa


([N4] eladio) #2

La idea principalmente es generar una tabla en formato html con el detalle de los campos de la tabla y sus contenidos.


([N3] pacosatu) #3

Hola Eladio.

Toda la información metadata de la tabla es accesible únicamente a través del API de Velneo.
Usa la clase VTableInfo.

Los valores OldField de los campos se obtienen mediante la clase del API VRegister.

Saludos
Paco Satué


([N4] eladio) #4

Muchas gracias Paco, el día hoy voy a comenzar a probar con la información que me haz pasado.

Saludos desde Costa Rica


([N4] Infortic) #5

Hola.

Ya que vas a usar js para manejar el proceso de log, tal vez sería más fácil que guardaras el registro antes y después en JSON


([N4] eladio) #6

Saludos a todos,
Hasta hace un par de días pude retomar este tema y ya tengo mi primer versión, mi idea era armar un html con el detalle de los cambios en un registro de una tabla. La parte del html que no requiere cambios la guardé en variables y en en siguiente proceso armó la parte variable del html. Me funciona pero el proceso siguiente está asociado a una tabla como se pude ver en el primer archivo adjunto. Necesito ayuda para crear un proceso en donde la tabla origen sea variable y el proceso reciba esa información por medio de una variable.
En el segundo archivo adjunto muestra la consulta en base a los datos guardados en la bitacora.

Saludos y gracias por su ayuda, iugalmente agradeceré cualquier sugerencias para mejorar, ya que en realidad es muy poco lo que se de javascript.

Adjunto además un segundo archivo en donde

var tabla = theRegisterIn.tableInfo();
var campos = tabla.fieldCount();
var HTML = theRoot.varToString(“HTML”);

var nmbTabla = tabla.name();
var titulo = "Campos modificados de tabla: " + nmbTabla

// Carga variable con detalle de campos modificados
var cmpModificados = “”;
cmpModificados += nmbTabla + “:” + ‘\r\n’;

HTML = “”;

for( var pscCampo = 0; pscCampo < campos; pscCampo++ )
{
if (theRegisterIn.isFieldModified(pscCampo))
{
var nmbCampo = tabla.fieldName(pscCampo);
var vlrAnterior = theRegisterIn.oldFieldToString(pscCampo);
var vlrActual = theRegisterIn.fieldToString(pscCampo);

	  // Carga variable con detalle de campos modificados 	
	  cmpModificados += nmbCampo + '\r\n';	
			
	  // Carga detalle de campos modificados, su valor anterior y el actual	
	  HTML += "&lt;tr&gt;&lt;td align='left'&gt;" + nmbCampo + "&lt;/td&gt;";
	  HTML += "&lt;td&gt;&lt;/td&gt;";
	  HTML += "&lt;td align='left'&gt;" + vlrAnterior + "&lt;/td&gt;";
	  HTML += "&lt;td&gt;&lt;/td&gt;";
	  HTML += "&lt;td align='left'&gt;" + vlrActual + "&lt;/td&gt;&lt;/tr&gt;";			
    };

};

theApp.setGlobalVar( “lgr_ PrstDat/NOMBRE_TABLA”, nmbTabla );
theApp.setGlobalVar( “lgr_ PrstDat/CAMPOS_MODIFICADOS”, cmpModificados );
theApp.setGlobalVar( “lgr_ PrstDat/HTML_ARMADO”, HTML );