Private Sub cmd查询_Click()
On Error GoTo Err_cmd查询_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 & "([订购日期] >= #" & 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
Dim str As String
str = Me.Graph40.RowSource
If InStr(1, str, "where") < 1 Then
str = Left(str, InStr(1, str, "group by") - 1) & " where " & strwhere& " " & Mid(str, InStr(1, str, "group by"))
Else
str = Left(str, InStr(1, str, "where") + 4) & strwhere & " " & Mid(str, InStr(1, str, "group by"))
End If
Me.Graph40.RowSource = str
Exit_cmd查询_Click:
Exit Sub
Err_cmd查询_Click:
MsgBox Err.Description
Resume Exit_cmd查询_Click
End Sub