入库管理 多条件查询
1 功能描述
我们针对从表[A0502入库明细]进行查询。
在查询条件区输入相应条件,如果相应值为空,表示不包含此属性条件。
点击[查询]按钮,下方表格会显示查询结果。
2 主要步骤
步骤1:清空原有的旧数据
步骤2:获取要查找的条件值
步骤3:遍历存储表中的所有行:如果符合条件,则添加到查询结果
3 完整代码
Sub query()
Dim name As String
Dim rowIndex As Integer
Dim rowIndexDest As Integer
Dim flag As Boolean
'查询条件
Dim supplyName As String '供应商
Dim purchaserName As String '采购员
Dim stockinDateBegin '开始时间
Dim stockinDateEnd '结束时间
Dim productName As String '商品
'步骤1:清空原有的旧数据
rowsIndexEnd = Worksheets("B05入库管理").Range("B33").End(xlDown).Row
Worksheets("B05入库管理").Range("34:" & rowsIndexEnd).Rows.delete
'步骤2:获取要查找的条件值
supplyName = Worksheets("B05入库管理").Range("B28").Value
purchaserName = Worksheets("B05入库管理").Range("C28").Value
stockinDateBegin = Worksheets("B05入库管理").Range("D28").Value
stockinDateEnd = Worksheets("B05入库管理").Range("E28").Value
productName = Worksheets("B05入库管理").Range("F28").Value
'步骤3:遍历存储表中的所有行
rowIndex = 2
rowIndexDest = 34
Do While Not IsEmpty(Worksheets("A0502入库明细").Range("A" & rowIndex).Value)
'判断是否符合条件
flag = True
flag = flag And ((supplyName = "") Or (InStr(Worksheets("A0502入库明细").Range("C" & rowIndex).Value, supplyName) > 0))
flag = flag And ((purchaserName = "") Or (InStr(Worksheets("A0502入库明细").Range("E" & rowIndex).Value, purchaserName) > 0))
flag = flag And ((stockinDateBegin = "") Or (stockinDateBegin <= Worksheets("A0502入库明细").Range("F" & rowIndex).Value))
flag = flag And ((stockinDateEnd = "") Or (DateAdd("d", 1, stockinDateEnd) > Worksheets("A0502入库明细").Range("F" & rowIndex).Value))
flag = flag And ((productName = "") Or (InStr(Worksheets("A0502入库明细").Range("H" & rowIndex).Value, productName) > 0))
If flag Then
'符合条件则添加到结果
Worksheets("B05入库管理").Range("B" & rowIndexDest & ":Q" & rowIndexDest).Value = Worksheets("A0502入库明细").Range("A" & rowIndex & ":P" & rowIndex).Value
rowIndexDest = rowIndexDest + 1
End If
rowIndex = rowIndex + 1
Loop
MsgBox "查询成功。", Title:="小步教程www.xiaobuteach.com"
End Sub
4 代码讲解
无
5 测试用例
正常用例1:所有查询条件为空,则查询结果为存储表所有数据。
正常用例2:依次输入各单个查询条件,则查询结果根据单个条件查询。
正常用例3:同时输入多个查询条件,则查询结果根据指定多个条件进行查询。