Denzel 发表于:2014-03-01 16:28:59
我用Access作了一个简单的小程序。首先在一个名为“Brief Information”的窗体中输入“日期”和“姓名”两个查询条件,其后将查询结果输出到一个名为“Report Summary”的窗体中。如果查询结果为空,打开的窗体“Report Summary”就会是一片空白。在这种情况下,我想让程序自动将窗体“Report Summary”关闭,并返回到到窗体“Brief Information”,并输出错误信息"无相关记录!"。程序如下:但实际情况是程序根本不执行“If Forms![Report Summary].[Date] = "" Then GoTo err_Report_Summary2:”这条语句,也就是说即使查询结果为空,也没有错误信息,照样会输出一个空白的窗体。如何来正确判断查询的结果是否为空呢?这个问题困扰我很久了,尽管我现在有办法来解决下面这个程序的问题,但总觉得不够完美。如果能够输出错误信息"无相关记录!"是最好的。望各位高手不吝指教,谢谢!
Private Sub Report_Summary_Click()
On Error GoTo err_Summary
Dim filt
filt = ""
If Name.Value <> "" Then filt = "instr(Name,'" & Name.Value & "')"
If CerDate.Value <> "" Then
If filt = "" Then filt = "[Date] = #" & Forms![Brief Information]!CerDate.Value & "#" Else filt = filt & " and " & "[Date] = #" & Forms![Brief Information]!CerDate.Value & "#"
End If
If filt = "" Then GoTo err_Summary1
DoCmd.OpenForm "Report Summary", acNormal, , filt, acFormEdit, acWindowNormal
If Forms![Report Summary].[Date] = "" Then GoTo err_Report_Summary2:
DoCmd.OutputTo acForm, "Report Summary", acFormatXLS, "D:\Report\Report_Summary.xls", False, ""
DoCmd.close acForm, "Brief Information"
Exit Sub
err_Summary1:
DoCmd.close acForm, "Report Summary"
MsgBox "请输入查询内容!"
Exit Sub
err_Summary2:
DoCmd.close acForm, "Report Summary"
MsgBox "无相关记录!"
Exit Sub
err_Summary:
DoCmd.close acForm, "Report Summary"
MsgBox Err.Description
Exit Sub
End Sub
我也用过"If IsNull(Forms![Report Summary].[Date]) Then GoTo err_Report_Summary2:" 也不行。主要原因是查询结果为空时,窗体“Report Summary”为空白,也就是说里面实际上没有任何字段,所以在这种情况下不能针对窗体“Report Summary”里面的设计的字段作任何查询。正确的作法应该是判断窗体“Report Summary”是否为空白。可是怎么来判断呢?把上述的IsNull函数改成IsEmpty或IsError都不行。
问题已解决:
将语句"If Forms![Report Summary].[Date] = "" Then GoTo err_Report_Summary2:"更改如下:
Dim rs As Long
rs = Forms![Report Summary].SelTop
If rs = 0 Then GoTo err_Summary2:
成功!!
总记录:1篇 页次:1/1 9 1 :