Office中国论坛/Access中国论坛
标题:
如何点击窗体文本框筛选交叉表查询窗体
[打印本页]
作者:
天涯沦落20131
时间:
2018-10-29 17:45
标题:
如何点击窗体文本框筛选交叉表查询窗体
本帖最后由 天涯沦落20131 于 2018-10-30 08:58 编辑
建了一个“生产_欠单”窗体,想通过点击“产品料号”、“工单编号”实现交叉表查询窗体筛选。问题点:交叉表查询为动态列,点击文本框“产品料号”没有显示,请高手帮我看看!非常感谢!同时谢谢此论坛,让我们学到更多知识!为了方便解决问题(请用第二附件)
作者:
roych
时间:
2018-10-30 11:21
我猜你要的结果应该是这样吧(但愿没有猜错)。
[attach]62901[/attach]理论上没什么难的,应该是传递参数时有误。打开带条件的窗体,写法是正确的,但你这个“生产_订单_情况”窗体,并不是一个真正意义上的窗体。我的意思是说,它在里面嵌套了一个child控件,通过child控件绑定查询数据源来实现的。
打个比方,你本来是要找个妹纸谈恋爱的,结果你却把鲜花送给了媒婆,你以为媒婆会把鲜花送给女神,结果她没有。
那么,能不能让“媒婆”把鲜花转交给“女神”呢。理论上是可以,但实际操作并不简单。因为child是控件,而不是窗体,因此并不方便将where部分传入。openform肯定是不行的了,因为它不是一个form。我试过在“媒婆”【生产_订单_情况】上使用加载事件,把where传递过去,但使用filter时无效。
换句话说,还是需要重写查询数据源的SQL。既然如此,又何必再传递参数呢?直接修改数据源,打开窗体就好了呀。于是便有了这个附件。
理论上,应该还有一个相对简单的法子,不过就不能使用打开窗体了,而是把这两个窗体放在同一个主窗体下,通过点击“生产_欠单”的物料号或者订单号来显示对应的“生产_订单_情况”。这个时候可以考虑使用ADO,current事件。在子窗体上是可以通过。即点击A子窗体的ID,显示B子窗体对应ID的其他信息。当然,child依然是一个绕不过的问题,能否实现的关键还得看它。
最后附上一段实现的代码,详细查看附件:
Private Sub 产品料号_Click()
Dim strNum As String
Dim strSQL As String
Dim qry As QueryDef
Set qry = CurrentDb.QueryDefs("临时表")
qry.SQL = "TRANSFORM Sum(生产数量) AS 生产数量总计 SELECT 模号, 工单编号, 产品料号, Sum(生产数量) AS 总计 FROM 生产_数据统计表" _
& " WHERE 产品料号='" & Me.产品料号 & "' GROUP BY 模号, 工单编号, 产品料号 PIVOT 生产日期"
qry.Close
DoCmd.OpenForm "生产_订单_情况"
End Sub
复制代码
[attach]62900[/attach]
作者:
天涯沦落20131
时间:
2018-10-30 14:35
roych,谢谢你!我也在想用交叉表查询生成本表的方式作为窗体的数据源,满足条件功能,为此我整了1天时间,同时我也学了不少!谢谢你讲的故事!受教了!你帮我解决了一个看是简单,确是我不能完成的困难,感谢你的无私奉献。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3