docencia·lenguaje·Ofimática·sofware libre

¡Imprimir Formularios.. de una sola vez!

Bueno, después de leer el libro de Mauricio, aquí les dejo mi código para imprimir varios formularios. La idea es ingresar un número y luego la macro va imprimiendo, a partir del registro que se encuentra visible, de ahí avanza al siguiente registro hasta completar la cantidad ingresada:



REM  *****  BASIC  *****


Option Explicit

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
Dim Contador As Integer
Dim respuesta as Integer
rem ----------------------------------------------------------------------
rem get access to the document

Respuesta = InputBox("Ingresa el número de copias")

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


    'Inicia el contador con los límites especificados
    
    For Contador = 1 To Respuesta
        'Este es el código que se ejecuta el número de veces
        'especificado con los límites en nuestro caso "Respuesta" veces
        document   = ThisComponent.CurrentController.Frame
        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
        dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())
        dispatcher.executeDispatch(document, ".uno:NextRecord", "", 0, Array())

    Next
    

End Sub


¿Cómo se puede mejorar? Bueno, se me ocurre que no tengo porqué saber la cantidad de registros que quiero imprimir, en el caso que nos convoca, no sé la cantidad de alumnos en un curso, por lo tanto, lo óptimo sería que mostrara una lista de los cursos disponibles, seleccionarlo y luego, imprimir. Se me ocurre que podría consultar por el dato del campo “curso” y fuera imprimiendo hasta que fuera distinto… Lo anterior solo funciona con registros ordenados, por lo tanto, es un problema a la hora de ingresar nuevos registros, ya que estos quedarán fuera del margen establecido. Ejemplo, el curso A contiene alumnos desde el registro 13 al registro 63; la base tiene 1450 registros. Si ingreso uno nuevo, el siguiente no estará en la posición 64, estará en la 1451.. Mucho más óptimo es que el formulario tome los datos a partir de una consulta! Entonces, solo mostrará los datos por curso.. y listo!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s