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:
- 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.
Espero que os sirva...
5 comentarios:
Parece ser que he descubierto un pequeño problema tras escribir este post. No se comporta igual un Call(Nodo,"ISEOF") que el ENodo.IsEOF() así que hay que modificar el código adjunto sel metod CXX_EXPORT_EXCEL.
Cambiaremos el:
Call(MsThisTIID,"Begin")
While Call(MsThisTIID,"IsEOF") = M4_FALSE
Por:
MnCount = Call(MsThisTIID,"Count") MnPointer = 0
While MnPointer <= MnCount -1
Call(MnPointer,MsThisTIID,"MoveTo")
y al final:
Call(Call(MsThisTIID,"GetCurrent")+1,MsThisTIID,"MoveTo")
por:
MnPointer = MnPointer + 1
Funcionará igual.
Meta4 Parece que no quiere añadirlo como Bug (Error)
Un saludo,
Siguiendo con este ejemplo teneis la exportación a fichero plano en la entrada, de este mismo blog:
http://m4peoplenet.blogspot.com/2008/01/exportacin-genrica-fichero-de-texto.html
Un saludo!
Oscar L.
He incluido un ejemplo un poco más detallado de como realizar las exportacione a TXT o a EXCEL:
http://www.box.net/shared/i0updubggo
Quizá ayude!!
Muchas gracias por los post, son bastante aclarativos y merece la pena mirarlos de vez en cuando.Buen trabajo.
Gracias
Pues he cambiado la sentencia de la estructura de nodo "CXX_AUX_ITEMS" por una que pueda leer estructuras de nodo con herencia:
Link al post
Un saludo!
Oscar L.
Publicar un comentario