Domanda

Sto cercando di fare una forma continua impostare la sua altezza per uguagliare l'altezza dell'intestazione + altezza del piè di pagina + altezza del dettaglio.Questo per evitare di avere una forma con solo due o tre record ha una grande quantità di spazio vuoto.Viceversa Voglio avere un gran numero di record appaiono su un modulo con 10 record per pagina e freccia verso il basso / fino a vedere il resto dei record. Queste sono le procedure che ho impostato:

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 l'IF ... quindi ... All'estratto conto e crea una forma che mostra tutti i record in una finestra che è ingestibile.

funziona per una forma di meno di 11 record (ovviamente) ma trovo che devo aggiungere nell'altezza Di un record extra altrimenti mette l'ultimo record su una seconda pagina.Viz:

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

Posso vivere con questo, ma vorrei davvero risolvere il problema dell'ufficiale se ... allora ... All'estratto dichiarazione ignorata.

Ho cambiato il tipo di fusione su variante e raddoppia ma non ha fatto alcuna differenza.

È stato utile?

Soluzione

Sembra che ci sia un problema il tuo codice: usi FrmHt nell'istruzione If, ma non ha valore a quel punto, sarà sempre 0.

Penso che probabilmente vuoi che la tua affermazione sia simile a:

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

L'altro problema dell'ultimo record nell'essere nella pagina successiva potrebbe essere perché sei troppo stretto nella visualizzazione dei 10 record sullo schermo e durante la conversione da TWIPS agli errori di arrotondamento dei pixel possono rendere l'altezza totale un po 'meno diquale sarebbe necessario per 10 record.
Prova ad aggiungere alcuni twip al tuo risultato FrmHT per vedere se funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top