我在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
报告根本没有加载。文本框GBedrag
和GBedrag10
不可见,我想使用我的If Else语句来决定哪些文本框必须可见。
我可以在某处使用某些错误报告,还是我的错误?我可以使用某人的一些解释。
答案 0 :(得分:0)
您在报告开始时检查BDatGift90
。但是BDatGift90
记录的记录源中有一列吗?如果是,您的if else语句正在检查哪一行记录源?我问,因为Report_Open()
只被调用一次。相反,像GroupHeader1_Format()
这样的事件被多次调用,每次都会通过记录源向前迈进。
因此,一种方法是澄清BDatGift90
的生命周期。另一种方法是设置断点并检查BDatGif90
(VBE> Debug> Add Watch ...)。它是null
,是empty
,nothing
还是""
?
以下是文本框中零长度字符串的有趣检查: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