Propiedad prtMip de Access

Tengo problemas para poder configurar mediante código los margenes de configuración de impresora y de ancho y alto de detalle.
He estado probando con un formulario simple sin botones ni nada, sólo con el evento alAbrir, y me da este error...
"Error 2136 Para establecer esta propiedad, abra el formulario o informe en vista diseño"
Y si pruebo a configurar la página :
"Imposible ejecutar esta acción mientras se procesa un evento de formulario o de informe"
No se si esto es difícil o me estoy complicando bt la vida... ¿?
Me gustaría saber que estoy haciendo mal. El código del evento alAbrir es el siguiente:
Option Compare Database
Option Explicit
Const glrcprtMipSize = 28
Dim PMStr As cad_PRTMIP
Dim PM As glr_PRTMIP
Private Type cad_PRTMIP
strprtMip As String * glrcprtMipSize
End Type
Private Type glr_PRTMIP
xMargenIzquierdo As Long
yMargenSuperior As Long
xMargenDerecho As Long
yMargenInferior As Long
fSóloDatos As Long
xAncho As Long
yAlto As Long
fTamañoPredeterminado As Long
cxColumnas As Long
yEspacioColumna As Long
xEspacioFila As Long
rDiseñoElemento As Long
fFastPrinting As Long
fDatasheet As Long
End Type
Private Sub Form_Open(Cancel As Integer)
PMStr.strprtMip = Me.PrtMip
LSet PM = PMStr
PM.xMargenIzquierdo = 100
PM.xMargenDerecho = 100
PM.yMargenInferior = 100
PM.yMargenSuperior = 100
PM.xAncho = 5670
PM.yAlto = 8505
LSet PMStr = PM
Me.PrtMip = PMStr.strprtMip
End Sub
Respuesta
1
Me parece que te estás complicando bastante. El primer mensaje de error que te da Access al ejecutar tu código es literal. Es decir, para poder cambiar los márgenes de impresión de un formulario o informe, debe estar abierto en modo diseño, de manera que es absolutamente imposible que le puedas aplicar el método al objeto 'Me'.
Resumiendo, para poder modificar la propiedad PrtMip de un informe o formulario debes hacerlo desde otro formulario o informe, por ejemplo con el siguiente código (que es la variación correcta del tuyo):
Private Sub Margenes()
Dim rpt As Report
DoCmd.OpenReport "Mi informe", acDesign
Set rpt = Reports("Mi informe")
PMStr.strprtMip = rpt.PrtMip
LSet PM = PMStr
PM.xMargenIzquierdo = 100
PM.xMargenDerecho = 100
PM.yMargenInferior = 100
PM.yMargenSuperior = 100
PM.xAncho = 5670
PM.yAlto = 8505
LSet PMStr = PM
rpt.PrtMip = PMStr.strprtMip
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas