在Access中如何判断查询结果为空 20

我用Access作了一个简单的小程序。首先在一个名为“BriefInformation”的表单中输入“日期”和“姓名”两个查询条件,其后将查询结果输出到一个名为“Repo... 我用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:

成功!
百度知道应该允许自己解决问题后自己回答啊,这样也是对知道的贡献啊!
展开
 我来答
popmoon
2014-03-01 · TA获得超过9994个赞
知道大有可为答主
回答量:4464
采纳率:30%
帮助的人:3529万
展开全部
试下 If Forms![Report Summary].[Date] Is Not Null then .... 内容不为空的时候。
null 和 ="" 不是一个含义
追问
不行哦,系统提示“Is not Null”非法。
追答
怎么看上去像VBA。VBA传递值常常很麻烦,我学过VBA,好久没接触,多试几种方法,总能解决的。
====
报表数据来源于数据库的表,在打开报表之前先就数据库进行筛选,我的实例:
Private Sub Report_Open(Cancel As Integer)
Report_Report.RecordSource = "select * from [表1] where [日期] is not null"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式