如果价值不算什么,做点什么

时间:2014-06-28 11:15:59

标签: vba ms-access access-vba

我在MS Access中使用一个报告,该报告根据日期(由用户提供)显示数据库中的记录。

在加载报告时,我似乎在使用我的If Else语句时遇到了一些麻烦。我在数据库中有一行名为BDatGift90。有时,对于记录,此值可能为空。在这种情况下,我想使用If Else语句。

My If Else声明是:

Private Sub Report_Open(Cancel As Integer)
    If IsNull(BDatGift90.Value) Then
        Me.GBedrag10.Visible = True
    Else
        Me.GBedrag.Visible = True
    End If
End Sub

报告根本没有加载。文本框GBedragGBedrag10不可见,我想使用我的If Else语句来决定哪些文本框必须可见。

我可以在某处使用某些错误报告,还是我的错误?我可以使用某人的一些解释。

2 个答案:

答案 0 :(得分:0)

您在报告开始时检查BDatGift90。但是BDatGift90记录的记录源中有一列吗?如果是,您的if else语句正在检查哪一行记录源?我问,因为Report_Open()只被调用一次。相反,像GroupHeader1_Format()这样的事件被多次调用,每次都会通过记录源向前迈进。

因此,一种方法是澄清BDatGift90的生命周期。另一种方法是设置断点并检查BDatGif90(VBE> Debug> Add Watch ...)。它是null,是emptynothing还是""

以下是文本框中零长度字符串的有趣检查:Proper way to check if an unbound control has a value

以下是关于isEmpty()isNothing()等的更多提示。http://allenbrowne.com/vba-NothingEmpty.html

希望这会有所帮助: - )

答案 1 :(得分:0)

对应你的问题,试试这个:

Private Sub Report_Open(Cancel As Integer)
    If BDatGift90.Value Is Nothing Then
        Me.GBedrag10.Visible = True
    Else
        Me.GBedrag.Visible = True
    End If
End Sub