Hola,
En tu webpanel poné una variable &archivo de tipo de datos "Blob".
Luego poné las otras variables que precisás un por último un botón asociado al evento Enter.
En el evento enter hacés las validaciones necesarias y luego llamás a un procedimiento usando la variable &archivo:
Event Enter
// Hacer validaciones
// Si todo ok, llamo al proc:
&filepath = &archivo.tostring()
procesarArchivo.Call(&filepath, &año, &mes, &observaciones, ...)
EndEvent
En el prc:procesarArchivo hacés algo así:
&Excel.ReadOnly = 1
&Excel.Open(&filepath)
If &Excel.ErrCode <> 0
&msg = &Planilla.ErrDescription
msg(&msg)
Else
Do 'LeerDatos'
&Excel.Close()
commit
EndIf
Sub 'LeerDatos'
&fila = 2 // La primer fila son los títulos
do while &termino = False
&PrimerDato = &Excel.Cells(&fila, 1).Number
If null(&PrimerDato) Or &PrimerDato = -1
&termino = True // Cuando llega a un registro en blanco, termina
Else
&SegundoDato = &Excel.Cells(&fila, 2).Number
&fila += 1
...
New
Dato1 = &PrimerDato
Dato2 = &SegundoDato
...
EndNew
EndIf
enddo
EndSub
También podés sustituir el "New" por un Bussiness Component, así aplica todas las mismas reglas que la transacción original.
Saludos,
En tu webpanel poné una variable &archivo de tipo de datos "Blob".
Luego poné las otras variables que precisás un por último un botón asociado al evento Enter.
En el evento enter hacés las validaciones necesarias y luego llamás a un procedimiento usando la variable &archivo:
Event Enter
// Hacer validaciones
// Si todo ok, llamo al proc:
&filepath = &archivo.tostring()
procesarArchivo.Call(&filepath, &año, &mes, &observaciones, ...)
EndEvent
En el prc:procesarArchivo hacés algo así:
&Excel.ReadOnly = 1
&Excel.Open(&filepath)
If &Excel.ErrCode <> 0
&msg = &Planilla.ErrDescription
msg(&msg)
Else
Do 'LeerDatos'
&Excel.Close()
commit
EndIf
Sub 'LeerDatos'
&fila = 2 // La primer fila son los títulos
do while &termino = False
&PrimerDato = &Excel.Cells(&fila, 1).Number
If null(&PrimerDato) Or &PrimerDato = -1
&termino = True // Cuando llega a un registro en blanco, termina
Else
&SegundoDato = &Excel.Cells(&fila, 2).Number
&fila += 1
...
New
Dato1 = &PrimerDato
Dato2 = &SegundoDato
...
EndNew
EndIf
enddo
EndSub
También podés sustituir el "New" por un Bussiness Component, así aplica todas las mismas reglas que la transacción original.
Saludos,
Pablo Moleri
From: "Fernando Princich" <flprincich@gmail.com>
To: java-l@gxtech.com.uy
Sent: Miércoles, 1 de Agosto 2012 10:45:14
Subject: [java-l] Importar datos desde un archivo excel a una transacción
Hola.
--
Fernando
To: java-l@gxtech.com.uy
Sent: Miércoles, 1 de Agosto 2012 10:45:14
Subject: [java-l] Importar datos desde un archivo excel a una transacción
Hola.
Soy principiante en gx, estoy trabajando con ev1.
Necesito importar un archivo excel a una transacción que generé en genexus, es decir, en lugar de cargar la transacción mediante un webform lo tengo que hacer mediante una interface de sistema, se me ocurre un procedimiento o ago así, lo que no se es como implementarlo
el requerimiento sería tener una webpanel desde donde ponder elegir el archivo exccel, y llegnar los otros campos que el archivo no teiene, que son por ejemplo el mes y el año que se esta importando y alguna observación.
me podrian ayudar o dar una idea o mejor si tienen una referencia de un ejemplo se los voy a agradecer
saludos
Fernando
0 Response to "Re: [java-l] Importar datos desde un archivo excel a una transacción"
Publicar un comentario