一、学员问题描述:
中级班:张家口--穗康鲜食-148期 13:11:12
请问老师,我在用
Access快速开发平台的
进销存培训教程做出来的库存查询,打开商品分类树菜单后是73项,有2项停用也显示了,
如何实现让商品分类树的已停用的数据项不显示出来?如下图:
二、解决方法:
见更改后的商品分类树代码,用下面整段代码替换教程里面的该段代码,重点见下图图示框出来的代码区红色字样的条件:
Public Function RunQuery(WhereCondition As String)
Dim strWhere As String
Dim objNode As Object 'MSComctlLib.Node
Set objNode = Me.ocx分类树.SelectedItem
'自定义的多条件查询中,每个条件生成表达式的时候,可以把If Then写到一行,这样比较紧凑
'条件再多也基本上一屏之内可以显示全,方便阅读
If Not objNode Is Nothing Then
If objNode.Key <> "K" Then strWhere = " AND 分类编号 Like '" & Mid(objNode.Key, 2) & "*'"
End If
If Len(WhereCondition) > 0 Then strWhere = strWhere & " AND " & WhereCondition
'前面根据每个条件生成的表达式前面都有 “ AND ”,因此到最后最前面的就是多余的,需要去掉
'因此这里用 Mid 函数从左起第6个字符开始取(AND加上前后的空格共5个字符),前面的就被去掉了
strWhere = Mid(strWhere, 6)
'如果条件不为空,则在前面加上 Where 关键字,用于生成 SQL 语句的 Where 子句
If Len(strWhere) > 0 Then
strWhere = " Where " & strWhere
Else
strWhere = " Where 已停用=False"
End If
'通过重置数据列表子窗体“记录源”属性的方式来实现查询
Me.sfrList.Form.RecordSource = "Select 商品信息表.商品编码, 商品信息表.品名规格, 商品信息表.拼音码, 商品信息表.分类编号, 商品信息表.外包装, 商品信息表.内包装, 商品信息表.内包装数量, 商品信息表.小包装数量, 商品信息表.单位, [内包装数量]*[小包装数量] AS 单位数量, 商品信息表.库存数量, [内包装数量]*[小包装数量]*[库存数量] AS [库存数量(穗)], 商品信息表.最新进价, 商品信息表.最新售价, 商品信息表.库存下限, 商品信息表.库存上限, 商品信息表.备注, 商品信息表.已停用 FROM 商品信息表 " & strWhere
End Function
如下图:
这样就实现了让商品分类树打开就只显示在用的所有库存数据了,如下图: