簡體   English   中英

使連續表格自動設置其高度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM