Access交流中心

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

关于查询窗体的条件筛选问题

xuzhijun  发表于:2013-01-04 15:05:56  
复制

麦老师:有个安置房信息查询主子窗体,主窗体有8个组合框和文本框,可以按各字段输入查询条件进行筛选,子窗体是筛选结果,7个条件都设置好了,最后一个不会做了,特请教,就是在”是否安置“的组合框内选择输入”已安置“和”未安置“,”已安置“表示”拆迁户编号为非空值“,”未安置“表示拆迁户编号为空值”,具体语句如下,如何添加这个条件查询的语句?

Private Sub Command18_Click()
On Error GoTo Err_Command18_Click

    Dim strWhere As String  '定义条件字符串
   
    strWhere = "" '设定初始值-空字符串
     
    '判断【小区名称】条件是否有输入的值
    If Not IsNull(Me.小区名称) Then
        '有输入
        strWhere = strWhere & "([小区名称] like '" & Me.小区名称 & "') AND "
    End If

     '判断【幢号】条件是否有输入的值
    If Not IsNull(Me.幢号) Then
        '有输入
        strWhere = strWhere & "([幢号] like '" & Me.幢号 & "') AND "
    End If
   
     '判断【门牌号】条件是否有输入的值
    If Not IsNull(Me.门牌号) Then
        '有输入
        strWhere = strWhere & "([门牌号] like '" & Me.门牌号 & "') AND "
    End If
   
     '判断【室号】条件是否有输入的值
    If Not IsNull(Me.室号) Then
        '有输入
        strWhere = strWhere & "([室号] like '" & Me.室号 & "') AND "
    End If
   
     '判断【套型档次】条件是否有输入的值
    If Not IsNull(Me.套型档次) Then
        '有输入
        strWhere = strWhere & "([套型档次] like '" & Me.套型档次 & "') AND "
    End If

    '判断【村名】条件是否有输入的值
    If Not IsNull(Me.村名) Then
        '有输入
        strWhere = strWhere & "([村名] like '" & Me.村名 & "') AND "
    End If

    '判断【拆迁户编号】条件是否有输入的值
    If Not IsNull(Me.拆迁户编号) Then
        '有输入
        strWhere = strWhere & "([拆迁户编号] like '" & Me.拆迁户编号 & "') AND "
    End If
   
     '判断【拆迁户姓名】条件是否有输入的值
    If Not IsNull(Me.拆迁户姓名) Then
        '有输入
        strWhere = strWhere & "([拆迁户姓名] like '*" & Me.拆迁户姓名 & "*') AND "
    End If
      
     '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If
  
        '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
    Debug.Print strWhere
   
    '让子窗体应用窗体查询
    Me.安置房信息查询子窗体.Form.Filter = strWhere
    Me.安置房信息查询子窗体.Form.FilterOn = True
 

Exit_Command18_Click:
    Exit Sub

Err_Command18_Click:
    MsgBox Err.Description
    Resume Exit_Command18_Click
   
End Sub

 

 

Top
wyh99999 发表于:2013-01-04 22:00:01

我给你建议是:把"是否安置"字段设置为"是/否,默认为"否",操作安置时选择为"是"。查询时就以“是”与“否”为未安置和已安置了。



xuzhijun 发表于:2013-01-04 22:37:47

谢谢热心的回帖朋友。你的建议不行的。如果我有1000套房子,己经安置了600套,还有400套未安置,有时需要在所有房子中作其他条件筛选,而且我己经把其他七个条件筛选的语气写了,只想在原来代码中添加一下,拜托赐教!着急呀





dbaseIIIer 发表于:2013-01-05 03:11:38

”已安置“和”未安置“,”已安置“表示”拆迁户编号为非空值“,”未安置“表示拆迁户编号为空值”


    If Not IsNull(Me.已安置) Then
        strWhere = strWhere &  "(Nz([拆迁户编号],"""")<>"""") AND " 
    End If

    If Not IsNull(Me.未安置) Then
        strWhere = strWhere &  "(Nz([拆迁户编号],"""")="""") AND " 
    End If





xuzhijun 发表于:2013-01-07 11:41:10

谢谢dbaselller!

你的方法我试过,提示“编译错误,方法和数据成员未找到”,在语句“已安置”处提示错误,是不是应该改成这个组合框的名“是否安置”,请指教



久石让的粉丝 发表于:2013-07-02 20:27:42
建议可以把条件语句先打上单引号,然后一个一个排查找出是哪个句子出了问题

沈军 发表于:2013-07-03 13:57:27
    '判断【拆迁户编号】条件是否有输入的值
    If Not IsNull(Me.是否安置) Then  strWhere = strWhere & "([拆迁户编号] is not null) AND "
 

蒋元根 发表于:2013-07-03 16:01:53
在学习了沈军老师

方法上面修改完成的。

供参考

点击下载此附件



蒋元根 发表于:2013-07-03 16:03:44
If Not IsNull(Me.拆迁户编号) And (Me.拆迁户编号) = "已安置" Then
    strWhere = strWhere & "([拆迁户编号] is not null) AND "
    
    End If
    
    If Not IsNull(Me.拆迁户编号) And (Me.拆迁户编号) = "未安置" Then
    strWhere = strWhere & "([拆迁户编号] is null) AND "
    
    End If


沈军 发表于:2013-07-04 08:03:25
“拆迁户编号”不是窗体控件名称,“是否安置”才是控件名称,“拆迁户编号”是字段名称

总记录:9篇  页次:1/1 9 1 :