Access交流中心

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

查询问题请见上页

阴阳平衡  发表于:2014-05-18 00:09:34  
复制

程序为:

Private Sub Command7_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 & "([联系日期] >= #" & Format(Me.联系日期开始, "yyyy-mm-dd") & "#) AND "
    End If
    If Not IsNull(Me.联系日期截止) Then
        '【开始日期截止】有输入 
        strWhere = strWhere & "([联系日期] <= #" & Format(Me.联系日期截止, "yyyy-mm-dd") & "#) 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
End Sub

有哪位老师知道怎么编写呀。谢谢

 

Top
红尘如烟 发表于:2014-05-18 17:26:41

帖子帮你弄到一个里面了。

Private Sub Command7_Click()
    Dim strWhere As String
   
    If Not IsNull(Me.客户名称)     Then strWhere = strWhere & " AND [客户名称] like '*" & Me.客户名称 & "*'"
    If Not IsNull(Me.联系日期开始) Then strWhere = strWhere & " AND [联系日期] >=" & Format(Me.联系日期开始, "\#yyyy-mm-dd\#")
    If Not IsNull(Me.联系日期截止) Then strWhere = strWhere & " AND [联系日期] <=" & Format(Me.联系日期截止, "\#yyyy-mm-dd\#")

    strWhere = Mid(strWhere, 6)
    
End Sub

最简单的就是直接用“>=”和“<=”,这样任何一个日期为空都不影响,而用“Between #开始日期# And #截止日期# ”的话,必须要两个日期条件都不为空,还要去判断开始日期是否晚于截止日期,更加麻烦复杂。



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