** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Informe con Alto Fijo de detalle
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoInforme con Alto Fijo de detalle

 Responder Responder
Autor
Mensaje
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 963
Enlace directo a este mensaje Tema: Informe con Alto Fijo de detalle
    Enviado: 07/Marzo/2018 a las 11:46
Access_2010 vs Windows_7
Buenos dias al grupo:
Mi problema es tratar de configurar un informe (Factura) de forma tal que el valor Alto del detalle sea igual para cada pagina del documento.
El informe,está agrupado por una encabezado de factura, un detalle de lineas de factura y un pie de factura para sus totales.
Hasta hoy todo iba perfecto, pues tenia controlado el número de lineas por página que deberia contener el informe, saltando de pagina cuando el detalle alcanzara el número de lineas deseado.

El problema viene ahora cuando el control de "Descripción" de la linea de detalle lo hago autoextensible.

Necesito de algún evento que a medida que añada lineas a la sección de detalle me facilite el Alto que va tomando la sección del Detalle, y una vez obtenido un determinado valor obligarlo a un salto de pagina al igual que lo hago cuando alcanzo un determinado número de lineas si la propiedad autoextensible del control "Descripción" es NO

Si creeis que voy mal encaminado para la solución, acepto críticas y propuestas para lograrlo
Y si disponeis de algún ejemplo que ya lo hagaHug

Saludos para todos






Editado por main - 07/Marzo/2018 a las 11:49
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 583
Enlace directo a este mensaje Enviado: 08/Marzo/2018 a las 20:25
Puedes ocultar/mostrar un salto de página en la sección Detalle cuando desees:

- https://support.microsoft.com/es-es/help/550716

El problema será cuando ese autoextensible te haga cortar el control Descripción por la mitad, o saltar antes, o saltar después: ¿qué debes hacer?

Una función para calcular alto y ancho de una cadena, del maestro Happy:

- http://www.mvp-access.es/juanmafan/wizhook/twipsfromfont.htm
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 963
Enlace directo a este mensaje Enviado: 09/Marzo/2018 a las 21:46
Muchas GRACIAS Pitxiku

Se puede cerrar el tema

Saludos


Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 963
Enlace directo a este mensaje Enviado: 13/Marzo/2018 a las 10:36
Access_2010 vs Windowa_7
Buenos dias al grupo
Como aún no se ha cerrado el tema aprovecho el mismo para ver si alguno encuentra la discrepancia que resulta de los siguiente:
Por gentileza de pitxiku y en la direeción que el mismo indica en su respuesta hay un procedimiento que obtiene el ancho y el alto de una cadena en función del tipo y tamaño de letra que se emplee.
Y es este:
' Este método calcula el ancho y alto en twips de una
' cadena.
'
' Argumentos:
'   FontName: Nombre del tipo de letra
'   Size: Tamaño de la letra
'   Weight: Grosor de la letra
'   Italic: ¿Letra cursiva?
'   Underline: ¿Subrayada?
'   Cch: (?¿?) Ni idea, de momento
'   Caption: Cadena que se analizará
'   MaxWidthCch: (?¿?) Ni idea, de momento
'   dx: Ancho resultante
'   dy: Alto resultante
'
Sub wzTwipsFromFont()
Dim wzFontName As String
Dim wzSize As Long
Dim wzWeight As Long
Dim wzItalic As Boolean
Dim wzUnderline As Boolean
Dim wzCch As Long
Dim wzCaption As String
Dim wzMaxWidthCch As Long
Dim wzdx As Long
Dim wzdy As Long

    WizHook.Key = 51488399
   
    wzFontName = "Calibri"
    wzSize = 9
    wzItalic = True
    wzUnderline = True
    wzCaption = "cadena de muestra"
       
    WizHook.TwipsFromFont wzFontName, wzSize, wzWeight, _
                          wzItalic, wzUnderline, wzCch, _
                          wzCaption, wzMaxWidthCch, _
                          wzdx, wzdy

    Debug.Print "Ancho de la cadena: " & wzdx
    Debug.Print "Alto de la cadena: " & wzdy
   
End Sub
Ahora he desglosado este procedimiento en dos funciones que son:
Public Function AltoCadenaxFuente(strNameFont As String, lngSizeFont As Long, boolItalic As Boolean, _
       boolUnderline As Boolean, strCaption As String)

Dim wzWeight As Long
Dim wzCch As Long
Dim wzMaxWidthCch As Long
Dim wzdx As Long
Dim wzdy As Long
WizHook.Key = 51488399
WizHook.TwipsFromFont strNameFont, lngSizeFont, wzWeight, _
                          boolItalic, boolUnderline, wzCch, _
                          strCaption, wzMaxWidthCch, _
                          wzdx, wzdy
AltoCadenaxFuente = wzdy
End Function

Y esta otra

Public Function AnchoCadenaxFuente(strNameFont As String, lngSizeFont As Long, boolItalic As Boolean, _
       boolUnderline As Boolean, strCaption As String)

Dim wzWeight As Long
Dim wzCch As Long
Dim wzMaxWidthCch As Long
Dim wzdx As Long
Dim wzdy As Long
WizHook.Key = 51488399
WizHook.TwipsFromFont strNameFont, lngSizeFont, wzWeight, _
                          boolItalic, boolUnderline, wzCch, _
                          strCaption, wzMaxWidthCch, _
                          wzdx, wzdy
AnchoCadenaxFuente = wzdx
End Function

El caso es que la función Alto devuelve el mismo valor que el procedimiento pero la función Ancho no me da lo mismo.
En la ventana de inmediato
?AnchoCadenaxFuente("CALIBRI",9,False,False,"cadena de muestra")
 1575
En el procedimiento
Ancho de la cadena: 1410
Alto de la cadena: 210

Alguno encuentra el porqué

Saludos



Editado por main - 13/Marzo/2018 a las 20:10
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 583
Enlace directo a este mensaje Enviado: 13/Marzo/2018 a las 19:47
En el procedimiento:

    wzFontName = "Calibri"
    wzSize = 9
    wzItalic = True
    wzUnderline = True
    wzCaption = "cadena de muestra"

En al llamada al método:

?AnchoCadenaxFuente("CALIBRI",9,False,False,"cadena de muestra")

Conclusiones:

1.- Puede que no sea lo mismo "Calibri" que "CALIBRI"
2.- En uno la itálica está a True; en el otro está a False.
3.- Lo mismo que en el punto 2, pasa con el subrayado.

Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 963
Enlace directo a este mensaje Enviado: 13/Marzo/2018 a las 20:09
Gracias de nuevo pitxiku
Parece que "calibri" y "CALIBRI" son lo mismo.
Pero lo de Italica y Sibrayado, evidentemente NO
Hay momentos que es mejor retirarse a dar un paseo que seguir erre que erre con algo que ya no puedes ver despues de un maraton de horas encima del código.

Saludos pitxiku
Ahora ya podeis cerra el tema a plena satisfacción

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable