Mostrando entradas con la etiqueta Exportaciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta Exportaciones. Mostrar todas las entradas

viernes, 28 de marzo de 2008

CXX_AUX_ITEMS para Estructuras de Nodo con Herencia

En el post dedicado a la exportación genérica a Excel (link) o a texto (link), no me fijé en un pequeño detalle, y es que la sentencia de la estructura de nodo,CXX_AUX_ITEMS, que recupera los items a exportar de una estructura de nodo no funciona de forma correcta cuando ésta ha sido heredada.


Aquella era:

mientras que debería ser para cualquier estructura de nodo (heredada o no):

Los cambios residen en:

  • Añadir la tabla lógica "SCH_TIS_INHERIT" (usando una relación personalizada sin unión, de momento entre ningún campo)
  • Cambiar el filtro para que: "A.ID_TI = @ARG_ID_TI" pase a ser: "( A.ID_TI = @ARG_ID_TI Or ( A.ID_TI = B.ID_TI_BASE And B.ID_TI = @ARG_ID_TI ))"

Espero que os sirva. Yo ya la usé el pasado lunes :-)

miércoles, 30 de enero de 2008

Exportación genérica a fichero de texto

Para completar el post que escribí sobre la Exportación genérica a Ms Excel (link) escribo este otro para ver como tener un método que te exporte las cosas a un fichero de texto plano.

Yo lo uso, entre otros casos, cuando en un cliente, con servidor en entorno Unix (Solaris o AIX)quieren consultas en Ms Excel, pero éstas son muy grandes y claro en el servidor no las pueden sacar. Yo monto una exportación en servidor a texto y luego la envío por correo... Bueno es un ejemplo, pero hay más...

A lo que voy que me lío :-)

Debes leer el post al que me refería antes (Exportación genérica a Ms Excel). Haces lo mismo, pero la regla del método CXX_EXPORT_EXCEL la cambias por esta: CXX_EXPORT_TXT. (Yo las suelo poner las dos... y que se el usuario quien elija, ¿no?)

Esto te saca a un txt el contenido de un nodo completo.

Ahora, si en el método cambias el código:


MsCaracterSep = ";"

por

MsCaracterSep = Chr(M4_TAB)

y quitais el "encabezado":


InitFile(MsFile,MsTitle)
ConcatFile(MsFile,"")


y el "pie":


ConcatFile(MsFile,"")
ConcatFile(MsFile,"Fecha impresión: " + MsDay + "/" + MsMonth + "/" + MsYear + " " + MsHour)


...se puede abrir con Ms Excel, sin problemas de importación.

Como siempre, espero que os sirva...

jueves, 29 de noviembre de 2007

Exportación genérica a Ms Excel

Las posibilidades que se tiene importando-exportando a Excel en Meta4 PeopleNet son muchísimas...

Me encanta, personalmente, realizar consultas mediante opciones de menú donde obtengas un resultado en pantalla y luego, darle al usuario la posibilidad de exportarlo a Excel o a texto, o incluso yendo más allá permitir planificar una tarea si la exportación va a ser grande [Esto será motivo de otro Post].

Un ejemplo de exportación genérico que me gusta hacer es el siguiente.

En tu Meta4Object créate una Estructura de nodo: llamémosla CXX_AUX_ITEMS con la siguiente sentencia:

Esta estructura te cargará los ítems de tipo campo, concepto y propiedad de una estructura de nodo dada... [Lo veréis más adelante]
Nos falta añadir un par de métodos a la estructura CXX_AUX_ITEMS:
  • DESTROYBLOCK, para destruir el contenido, ámbito bloque.
  • CXX_NORMALIZAR_STRING(argumento ARG_CADENA de tipo long) devuelve LONG, ámbito nodo, que lo que hará es quitar los códigos de retorno que el Ms Excel no controla (sobre todo para el tema de campos comentario o campos de tipo long). El código es: CXX_NORMALIZAR_STRING.txt

y una propiedad para el filtro: ARG_ID_TI de ámbito nodo "No Visible" y de tipo Candena variable de 30 posiciones

En el nodo donde queráis hacer la exportación, crea un alias contra el Meta4Object "EXCEL"

Creáis un método CXX_EXPORT_EXCEL "Exportación a Ms Excel", de ámbito Nodo, que esté en cliente y metéis el siguiente código: CXX_EXPORT_EXCEL.txt

La estructura CXX_AUX_ITEMS la podéis usar donde queráis... por que es genérica siempre que se ejecute el método CXX_EXPORT_EXCEL desde el nodo que queramos exportar... si lo queremos ejecutar desde otro sitio habría que cambiar ligeramente el código.

Esto sería un ejemplo de lo que obtendríamos:


Espero que os sirva...