Fare una forma continua imposta automaticamente la sua altezza
-
21-12-2019 - |
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.
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.