Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

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

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都不行。

 

Top
Denzel 发表于:2014-03-15 16:11:45

问题已解决:

将语句"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 :