在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:
成功!
百度知道应该允许自己解决问题后自己回答啊,这样也是对知道的贡献啊! 展开
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个回答
展开全部
试下 If Forms![Report Summary].[Date] Is Not Null then .... 内容不为空的时候。
null 和 ="" 不是一个含义
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |