jueves, 29 de noviembre de 2007

Importación desde un Ms Excel

La forma rápida que la gente hace es pasar la hoja de Ms Excel a texto y luego usar las importaciones... pero eso a veces no es posible porque lo debe hacer el usuario y no un desarrollador. (Recordemos que las importaciones son una herramienta del desarrollador (M4DevClient) y no de usuario (M4DistClient o RichWeb))

Yo utilizo una forma que la verdad es rápida y permite hacer comprobaciones según se importa información.

Un ejemplo; los usuario de RRHH reciben todas las semanas una hoja Ms Excel con un listado de los nuevos teléfonos dados por el dpt. de sistemas, es decir, vamos a importar números de teléfono de tipo "Oficina" de un hoja Ms Excel donde el formato es el siguiente: DNI (en la columna A) y Teléfono (en la columna B).


Para ello crearemos un M4Object CXX_IMPORTAR_TELEFONOS con 3 nodos:

CXX_IMP_TEL_ROOT (Nodo principal) -> No tendrá campos, servirá para la ejecución de la importación. Creamos:

  • una propiedad llamada CXX_EXCEL_FILE; de ámbito nodo y tipo long (es donde el usuario podrá dejar la ruta al excel a importar que se pedirá en presentación)
  • un método llamado CXX_IMPORT de ámbito nodo, con el siguiente código: >CXX_IMPORT.TXT

CXX_AUX_PERSONA (Nodo libre) -> Cargaremos los datos de la persona por DNI (STD_SSN).

  • Añadiremos una propiedad: PRP_STD_SSN, de ámbito nodo, tipo cadena variable de 11 posiciones y NO visible.
  • La sentencia será: SELECT @STD_ID_PERSON = A.STD_ID_PERSON, @STD_SSN = A.STD_SSN FROM &STD_PERSON A WHERE (A.STD_SSN = @PRP_STD_SSN).
  • Crearemos un método: CXX_GET_ID_PERSON(ARG_STD_SSN cadena variable de 11 posiciones) ambito nodo, tipo cadena variable de 9 posiciones. El código será el siguiente: CXX_GET_ID_PERSON.TXT

CXX_IMP_AUX_PHONE (Nodo libre) -> Guardaremos el nuevo teléfono.

  • La sentencia será: SELECT @STD_ID_PERSON = A.STD_ID_PERSON, @STD_DT_START = A.STD_DT_START, @STD_DT_END = A.STD_DT_END, @STD_ID_LOCATION_TYPE = A.STD_ID_LOCATION_TYPE, @STD_ID_LINE_TYPE = A.STD_ID_LINE_TYPE, @STD_PHONE = A.STD_PHONE FROM &STD_PHONE_FAX A

La presentación, CXX_IMPORTAR_TELEFONOS quedaría algo así como:



Como temas especiales los dos botones tendrían estos códigos OBL:

a) "Abrir explorador de windows" (Botón de la carpeta) bttBROWSER.txt

b) "Visualizar el documento" (Botón de la lupa) bttVIEW.txt

Espero que os sirva

5 comentarios:

Anónimo dijo...

Uyyy compadre, que bien, muy bueno el blog, ya que veo que es el primero de meta 4, espero que siga realizando aportes a las personas que apenas nos iniciamos en ese mundo.

Sera mucho pedirle que haga entradas acerca de la configuracion de nomina...

gracias nuevamente.

Oscar López dijo...

Pues se intentará tocar todos los palos, pero lo de la Nómina es muy amplio.

Si tienes algún tema en concreto puedo intentar orientarte

Un saludo,
Oscar López

Anónimo dijo...

Buenas te hago una preguntita, este importacion me serviria para cualquier tipo de archivos planos??, o se haria de una manera diferente.

A otra cosita, al momento de ingresar unas vacaciones de 10 dias, solamente me esta liquidando 8 que son los que estan dentro del periodo actual de liquidacion, hay alguna manera de configurar esto, de tal forma que me tome todos los dias digitados sin importar que pase el periodo?

Gracias de antemano.

Oscar López dijo...

Hola Rafael,
el tema de los archivos planos es diferente... a ver si puedo y meto un par de posts sobre importaciones; uno sobre cómo usar el modulo de importaciones desde un Meta4Object y otro como importar un archivo plano sin usar dicho módulo.

Respecto al tema de vacaciones que comentas, en la pantalla de Inicdencias de Tiempo (Absentismos)(al menos en PeopleNet) puedes indicar cualquier duración de éstas... ¿dónde NO puedes indicar la vacaciones?

Un saludo!
Oscar L.

Anónimo dijo...

Quisera saber como hacer una importación desde Herramientas de Usuario/Importación y Exportación con Excel...

Ya que necesito, que el usuario cargue la información desde el RichWeb.

Saludos.