[英]Subform has default view set to Continuous - Cantmake height expand Automatically
[英]Make a continuous form set its height automatically
我試圖讓一個連續的表單將其高度設置為等於頁眉的高度 + 頁腳的高度 + 細節的高度。 這是為了避免只有兩個或三個記錄的表單有大量空白空間。 相反,我希望在每頁 10 條記錄的表單上顯示大量記錄,並使用向下/向上箭頭查看其余記錄。 這些是我設置的程序:
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
它忽略 If...Then...Else 語句並創建一個表單,在一個無法管理的窗口中顯示所有記錄。
它適用於少於 11 條記錄的形式(顯然),但我發現我必須添加額外記錄的高度,否則會將最后一條記錄放在第二頁上。 可視化:
FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
我可以接受這個,但我真的很想解決 If...Then...Else 語句被忽略的問題。
我已將類型轉換更改為 Variant 和 Double,但這沒有區別。
您的代碼似乎存在問題:您在If
語句中使用FrmHt
,但此時它沒有任何價值,它將始終為0
。
我想你可能希望你的陳述是這樣的:
If NumRecs > 11 Then
FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
Else
FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
End If
下一頁上最后一條記錄的另一個問題可能是因為您在屏幕上顯示 10 條記錄時過於緊張,並且在從緹轉換為像素的過程中,舍入錯誤可能會使總高度比實際高度略小需要 10 個記錄。
嘗試在您的FrmHT
結果中添加一些緹,看看這是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.