我试图制作一个连续的表单,将其高度设置为等于页眉的高度+页脚的高度+详细信息的高度。这是为了避免只有两三个记录的表单有大量空白。相反,我希望在每页 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…然后……否则语句并创建一个表格,显示一个窗口中所有记录的表单,这是难以管理的。

它适用于少于11个记录的形式(显然),但我发现我必须添加额外记录的高度,否则将最后一个记录放在第二页上。即:

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

我可以接受这一点,但我真的很想解决 If...Then...Else 语句被忽略的问题。

我已将类型转换更改为 Variant 和 Double,但这没有什么区别。

有帮助吗?

解决方案

您的代码似乎有问题:你用 FrmHt 在你的 If 声明,但此时它没有任何价值,它将永远是 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归因
不隶属于 StackOverflow
scroll top