谢谢WS.J,代码使用说明得很详细,连我这个菜鸟都大致能看懂,很易套用到实际数据库中。VB代码的优点是可一步到位,而查询(尤其ACCESS的查询设计视图)对VB代码不熟悉和初学ACCESS者(象我这类)来说是比较直观易懂的,而且比较容易设置条件对数据进行筛选。
在实际使用中我还遇到些问题(所以之前我说“套用”不是“应用”,因我水平还不够),麻烦帮手解决:
1.我在窗体查询中加多了一个查询条件“产品编号”的文本框,你原来的条件代码是:
If IsNull(Me.输入日期) Or Me.输入日期 = "" Then
MsgBox "请输入库存查询日期."
End If
GoTo Exit_Cmd_开始查询_Click
我想要的查询结果是:输入产品编号或日期两个条件之一也可进行查询;另外同时输入两个条件可进行精确查找。
请问代码要怎样修改?
2.我在查询窗体中加多了个“清除”按钮,用于清除查询条件并刷新子窗体(刷新后使字窗体数据不显示数据),代码这样写有问题吗:
Private Sub 清除_Click()
Me.输入日期 = Null
Me.产品编号 = Null
Me.子窗体_日库存查询.Requery
End Sub
1.我在窗体查询中加多了一个查询条件“产品编号”的文本框,你原来的条件代码是:
If IsNull(Me.输入日期) Or Me.输入日期 = "" Then
MsgBox "请输入库存查询日期."
End If
给你思路不直接在示例上改了。如果不输入日期,实际日期条件为NOW()。虽然为空但实际是有条件的,在代码或查询中改一下条件即可。
2.我在查询窗体中加多了个“清除”按钮,用于清除查询条件并刷新子窗体(刷新后使字窗体数据不显示数据),代码这样写有问题吗:
Private Sub 清除_Click()
Me.输入日期 = Null
Me.产品编号 = Null
Me.子窗体_日库存查询.Requery
End Sub
有几种方法,看你的实际情况:
子窗体是用的临时表就直接删除后刷新;
另一种就是把子窗体上直接把可见设置为否;
把子窗体的数据源设一个为假的条件也就是此查询执行是查不到数据的。
第一个问题.
在[开始查询]按钮中的刷新子窗体代码前(Me.子窗体_日库存查询.Requery)加入如下代码.
' 检查文本[产品编号]有否输入
If Not IsNull(Me.产品编号) Then
' 有输入则更改子窗体数据源,只显示符合文本[产品编号]条件的记录
Me.子窗体_日库存查询.Form.RecordSource = "SELECT 日库存查询.* " & _
"FROM 日库存查询 " & _
"WHERE (((日库存查询.产品编号)= """ & Me.产品编号 & """));"
Else
' 没有输入则显示全部记录记录
Me.子窗体_日库存查询.Form.RecordSource = "SELECT 日库存查询.* " & _
"FROM 日库存查询 " & _
"ORDER BY 日库存查询.产品编号;"
End If
这里偷了个懒,直接按条件修改子窗体的数据源,按道理应该是需要修改所有查询的条件的.(输入日期是一定要输入的,这是查询的基础)
第二个问题.
在Me.子窗体_日库存查询.Requery代码前最好清空[日库存查询]表,代码之前已经有了,拷贝下来即可