Pregunta: | 1479 - CONFIGURACION DE PAGINA |
Autor: | Juan Alava Salillas |
En Access 2000 cuando meto los parametros de la pagina en un informe, en concreto los margenes y la grabo por primera vez todo va correcto pero cuando luego entro otra ves para modifcar alguna campo me borra los parametros. Hay alguna forma de que no me ocurra esto. |
Respuesta: | Carmen Benítez |
Yo puede resolver ese problema con el código que te paso a continuación, pero solo lo reconoce en un MDB, no en un MDE, por lo tanto para mi sigue siendo un problema.
Es conveniente que este código lo pongas en un módulo y desde el lugar donde quieras llamar al reporte envias el nombre del mismo en el procedimiento del modulo: Ej: ImprimirAjustandoMargenes ("aqui_va_el_nombre_del_informe") Código del Módulo: Option Explicit Type CadenaPrtMip strConfiguracion As String * 28 End Type ' la estructura TipoPrtMIP se pasa a la cadena ' strConfiguracion, y ésta a la propiedad PrtMIP ' de un informe para configurar sus propiedades ' mediante VBA en modo diseño. ' PrtMIP es de sólo lectura en tiempo de ejecución Type TipoPrtMIP MargenIzquierdo As Long MargenSuperior As Long MargenDerecho As Long MargenInferior As Long SoloDatos As Long Ancho As Long Alto As Long TamañoPredeterminado As Long Columnas As Long EspacioColumna As Long EspacioFila As Long DiseñoElemento As Long FastPrinting As Long Datasheet As Long End Type Public Sub ImprimirAjustandoMargenes( _ ByVal Informe As String, _ Optional ByVal MargenIzq As Single = 2.01, _ Optional ByVal MargenDch As Single = 1.51, _ Optional ByVal MargenSup As Single = 2.01, _ Optional ByVal MargenInf As Single = 1.51) ' Este procedimiento abre un informe ' le aplica los márgenes, lo imprime y lo cierra ' para aplicarle los márgenes usa la propiedad ' (de sólo lectura en ejecución) prtMip del informe ' Primera versión 19/10/2002 ' Eduardo Olaz [email protected] ' Los márgenes están en centímetros ' strConfiguracion será la cadena de 28 byts que ' pasaremos a la propiedad PrtMip del informe ' conTwipsCentimetro Coeficiente de conversión ' de Centímetros a Twips ' Aquí deberías poner una rutina de errores On Error GoTo HayError Const conTwipsCentimetro As Long = 567 ' Los márgenes se pasan en Twips Dim PrtMipString As CadenaPrtMip Dim TPrtMip As TipoPrtMIP Dim rpt As Report DoCmd.OpenReport Informe, acViewDesign Set rpt = Reports(Informe) ' Ya que tenemos una cadena en el PrtMip ' del informe gravado la usamos como base PrtMipString.strConfiguracion = rpt.PrtMip LSet TPrtMip = PrtMipString With TPrtMip .MargenIzquierdo = MargenIzq * conTwipsCentimetro .MargenSuperior = MargenSup * conTwipsCentimetro .MargenDerecho = MargenDch * conTwipsCentimetro .MargenInferior = MargenInf * conTwipsCentimetro End With If rpt.Name = "inf_benxGto" Then rpt.Orientation = 1 End If LSet PrtMipString = TPrtMip ' Actualiza la propiedad. rpt.PrtMip = PrtMipString.strConfiguracion ' Abrimos el informe para la vista previa, en caso de querer imprimirlo ' en vez de escribir acViewPreview escribir acViewNormal 'DoCmd.OpenReport Informe, acViewPreview ' Cerramos el informe y lo grabamos ' DoCmd.Close acReport, Informe, acSaveYes Set rpt = Nothing Salir: Exit Sub HayError: MsgBox "Se ha producido el Error Nº " & Err.Number _ & vbCrLf _ & Err.Description _ & vbCrLf _ & "Al tratar de imprimir el informe: " _ & Informe, _ vbCritical + vbOKOnly, _ "Procedimiento ImprimirAjustandoMargenes" Set rpt = Nothing Resume Salir End Sub Si tenes alguna respuesta con respecto al MDE por favor avisame. |
Respuesta: | Berni Rodríguez |
Esta es la respuesta que he conseguido a través de una serie de contactos. A mí también me volvia loco que los informes cada 2 por 3 se desconfigurasen: Es un BUG documentado de Microsoft Access 2000. En algunas situaciones, cuando se tiene marcada la opcion de ´Realizar Autocorreccion de Nombres´ (Menu Herramientas/Opciones/Pestana de General), al tratar de realizar la opcion de cambiar la configuracion esta no queda permanente para el informe. Esto se soluciona en la Service Release 1 de Microsoft Office 2000. De todas maneras desmarca la autocorreccíon de nombre si aun no tienes el Service Release 1 |
Respuesta: | Tony Montes de Oca |
Fija los parámetros desde el código en VB, en un evento anterior a la ejecución de la impresión. Por ejemplo BeforePrint, o Load. Seguro que los declaras de forma interactiva desde las cajas de diálogo del Access. No sé con el 2000, pero con ´97 funciona. |