Pregunta

Estoy tratando de hacer un formulario continuo y establecer su altura para que sea igual a la altura del encabezado + altura del pie de página + altura del detalle.Esto es para evitar que un formulario con sólo dos o tres registros tenga una gran cantidad de espacios en blanco.Por el contrario, quiero que aparezca una gran cantidad de registros en un formulario con 10 registros por página y la flecha hacia abajo/arriba para ver el resto de los registros.Estos son los procedimientos que configuré:

Public Function NumRecs() As Integer
    NumRecs = DCount("*", "tblDisclosure", "Not IsNull(FormSentOff) and IsNull(DBSInvoice))
End Function

Public Function FrmHt() As Integer
    Dim FrmDet As Integer
    Dim FrmHdr As Integer
    Dim FrmFtr As Integer

    FrmDet = Form.Section(0).Height
    FrmHdr = Form.Section(1).Height
    FrmFtr = Form.Section(2).Height

    If FrmHt > (11 * FrmDet + FrmHdr + FrmFtr) Then
        FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
    Else
        FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
    End If
End Function

Private Sub Form_Load()
    Me.Move Left:=8000, Top:=1000, Width:=9240, Height:=FrmHt
End Sub

Ignora la declaración if ... entonces ... de lo contrario y crea un formulario que muestra todos los registros en una ventana que es inmanejable.

Funciona para una forma de menos de 11 registros (obviamente) pero encuentro que tengo que agregar la altura de un registro adicional, de lo contrario, coloca el último registro en una segunda página.Verbigracia:

FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet

Puedo vivir con esto, pero realmente me gustaría resolver el problema de que se ignore la declaración If...Then...Else.

Cambié el tipo de conversión a Variante y Doble, pero esto no hizo ninguna diferencia.

¿Fue útil?

Solución

Parece haber un problema con tu código:tu usas FrmHt en tus If declaración, pero no tiene valor en ese momento, siempre será 0.

Creo que probablemente quieras que tu declaración sea algo como:

If NumRecs > 11 Then
    FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
Else
    FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
End If

El otro problema de que el último registro esté en la página siguiente puede deberse a que es demasiado estricto al mostrar los 10 registros en la pantalla y durante la conversión de twips a píxeles, los errores de redondeo pueden hacer que la altura total sea un poquito menor de lo que sería. necesario para 10 registros.
Intente agregar algunos trucos a su FrmHT resultado para ver si esto funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top