¿Cómo puedo numerar las copias de un reporte?

Tengo una duda tengo que imprimir varias copias de una misma hoja de un reporte y me gustraría agregar la cantidad de copias de acuerdo se vayan imprimiendo es decir si quiero sacar 50 copias que pueda imprimir en las hojas 1, 2, ... 50 no se si se pueda.

1 respuesta

Respuesta
1
La única forma que se me ocurre para hacer lo que quieres es controlando tu mismo el número de copias que se van a sacar. Esto es, pidiendo tu el número de copias a través de un formulario en lugar de encargar ese tema al comando imprimir de Windows.
¿Cómo lo haría?, fácil.
Supone que tienes los datos de tu informe en la "tabla1". Te creas una tabla nueva (digamos la "tabla2") con los mismos campos más un campo nuevo llamado "numeroDeCopia".
A través de un formulario o con la instrucción "inputbox" leer el número de copias y sólo te quedaría borrar la tabla2 e insertar los datos tantas de la tabla1 tantas veces como te hayan pedido.
Tu informe estaría diseñado sobre la tabla2.
Te pongo un ejemplo del código que usaría yo para hacer lo que te comento.
Un saludo
Sub imprimirInforme()
    Dim i As Integer
    Dim n As Integer
    Dim aux As String
    ' Leemos el número de copias a realizar
    Do
        aux = InputBox$("Número de copias:", "Imprimir Informe", "1")
        If aux = "" Then Exit Sub
        If IsNumeric(aux) Then
            n = Val(aux)
            If n > 1 And n < 50 Then Exit Do
        End If
        MsgBox "Debe intruducir un valor numérico entre 1 y 50"
    Loop
    ' Borramos la tabla 2
    DoCmd.RunSQL "delete from tabla2"
    ' Insertamos tantas veces los valores de la tabla 1 como copias del informe
    For i = 1 To n
        DoCmd.RunSQL "insert into tabla2 select *," & i & " as numeroDeCopia from tabla1"
    Next i
    ' Imprimimos el informe
    DoCmd. OpenReport "nombreDelInforme", acViewNormal
End Sub
Hola solo me queda la duda entonces si necesito que salga el número de la copia en el reporte creo en el área del informe un cuadro que diga por ejemplo folio, y ahí quiero insertar el número de copia, o lo que necesito es poder foliar el informe de acuerdo al número de copias, ahora con los comandos que me pones de ejemplo ¿cómo puedo hacer para que el número de copia se vaya incertando en el campo y lo vaya aumentando conforme se imprime?, mucha gracias por tu atención!.
A ver, con el código que te mandé ayer creábamos una tabla2 que contenía exactamente lo mismo que la tabla1 (la tuya original) más el número de copia.
Lo que tendrías que hacer después es diseñar tu informe sobre la tabla2 y crear una agrupación por el nuevo campo 'numeroDeCopia' (para hacer la agrupación usa, al definir el informe, la opción 'Ordenar y Agrupar' dentro de menú ver).
Si ya tenías algún tipo de orden y/o agrupación hecho para tu informe, debes poner delante de todos el del número de copia.
En la ventana de Ordenar y Agrupar, también tienes que indicarle que quieres un pie de grupo y, en las propiedades de este pie, forzar una nueva página.
Si lo que quieres es que en el pie de página aparezca el número de la copia, crea un campo nuevo y le asignas al campo 'numeroDeCopia'.
Oye si perdón, pero ahora estoy batallando estoy intentando que el código se ejecute mediante un botón de comando puesto en el formulario pero me pone el error de compilación se esperaba el End Sub ya intenté poniéndolo hasta tres veces y también a poner todo en orden para que el tabulador (las sangrías que se dejan), quedara bien pero me sigue poniendo el mismo error, por favor si puedes ayudarme!, muchas gracias por tus respuestas!.
El código quedó de esta manera:
Private Sub Comando9_Click()
    Sub imprimirInforme()
        Dim i As Integer
        Dim n As Integer
        Dim aux As String
        ' Leemos el número de copias a realizar
        Do
            aux = InputBox$("Número de copias:", "Imprimir Informe", "1")
            If aux = "" Then Exit Sub
            If IsNumeric(aux) Then
                n = Val(aux)
                If n > 1 And n < 50 Then Exit Do
            End If
            MsgBox "Debe intruducir un valor numérico entre 1 y 50"
        Loop
        ' Borramos la tabla 2
        DoCmd.RunSQL "delete from etiqueta2"
        ' Insertamos tantas veces los valores de la tabla 1 como copias del informe
        For i = 1 To n
            DoCmd.RunSQL "insert into etiqueta2 select *," & i & " as numeroDeCopia from etiqueta1"
        Next i
        ' Imprimimos el informe
        DoCmd.OpenReport "etiquetaalmacen", acViewNormal
        End Sub
End Sub
Por favor si puedes ayudarme muchas gracias!.
Es mucho más sencillo.
Un procedimiento (sub ...) se llama desde otro sólo con nombrarlo.
Cada 'sub' termina con su 'end sub' y no se pueden anidar (meter uno dentro de otro).
Deberías poner lo siguiente:
Private Sub Comando9_Click()
    imprimirInforme
End Sub
Sub imprimirInforme()
    Dim i As Integer
    Dim n As Integer
    ...
    ...
    ...
    DoCmd. OpenReport "etiquetaalmacen", acViewNormal
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas