Problema para imprimir un informe en Access 2010

Tengo una base de datos con varias consultas que al ejecutarlas me abre un informe que solicita parámetros para crearlo.

Ahora bien, tengo un botón para imprimirlo que al ejecutarlo me abre el cuadro de diálogo de la impresora por lo que me permite configurar la impresión, oprimo el botón Aceptar y lo imprime sin problemas, pero si no quiero imprimirlo y cancelo ese cuadro de diálogo, me da error 2501 en tiempo de ejecución porque se canceló la acción RunCommand. ¿Qué estoy haciendo mal?

El código es el siguiente:

Private Sub Imprimir_informe_Click()

DoCmd. RunCommand acCmdPrint

DoCmd. Close acReport, Me. Name

End Sub

1 Respuesta

Respuesta
2

No haces nada mal, simplemente es la forma que tiene Access de avisarte de que cancelaste la acción. Si no quieres que te salga ese aviso, ponle un control de errores a tu código:

Private Sub Imprimir_informe_Click()

On Error GoTo sol_err

DoCmd. RunCommand acCmdPrint

DoCmd. Close acReport, Me. Name

Salida:

Exit Sub

sol_err:

If Err.Number=2501 Then

MsgBox "Se ha cancelado la impresión.", vbInformation,"CANCELADO"

Else

MsgBox "Se ha producido el error: " & Err.Number & "vbCrLf & Err.Description, vbInformation,"ERROR"

End If

End Sub

Un saludo


http://nksvaccessolutions.com/Foro/ 

Muchas gracias por tu pronta respuesta.

Copié y pegué el código tal como lo escribiste y le borré la palabra Salida:.

Pero me pone en rojo el siguiente código: MsgBox "Se ha producido el error: " & Err.Number & "vbCrLf & Err.Description, vbInformation,"ERROR"

Al ejecutar el botón de Imprimir me tira Error de sintaxis. Te copio el código tal como lo tengo:

Private Sub Imprimir_informe_Click()

On Error GoTo sol_err

DoCmd.RunCommand acCmdPrint

DoCmd.Close acReport, Me.Name

Exit Sub

sol_err:

If Err.Number = 2501 Then

MsgBox "Se ha cancelado la impresión.", vbInformation, "CANCELADO"

Else

MsgBox "Se ha producido el error: " & Err.Number & "vbCrLf & Err.Description, vbInformation,"ERROR"

End If

End Sub

Muchas gracias nuevamente.

Sí, se me colaron unas comillas donde no correspondían (justo antes del vbCrLf). El código quedaría así:

Private Sub Imprimir_informe_Click()
On Error GoTo sol_err
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, Me.Name
Exit Sub
sol_err:
If Err.Number = 2501 Then
     MsgBox "Se ha cancelado la impresión.", vbInformation, "CANCELADO"
Else
     MsgBox "Se ha producido el error: " & Err.Number & vbCrLf & Err.Description, vbInformation,"ERROR"
End If
End Sub

Que borres la palabra "Salida:" no tiene mayor importancia, porque con las prisas se me pasó llamar de vuelta a esa etiqueta en el control de errores (faltaría un Resume Salida antes del End Sub), aunque al final el resultado es el mismo, si hay un error, avisa y sale.

¡Gracias! Que tonta que no me di cuenta. Saludos y nuevamente muchas gracias

Hola, discúlpame el abuso, ¿pero qué puedo agregar en el código para que no se cierre el informe al mandarlo a imprimir?

No es abuso, simplemente quita la línea del DoCmd.Close...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas