设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2861|回复: 2
打印 上一主题 下一主题

如何点击窗体文本框筛选交叉表查询窗体

[复制链接]
跳转到指定楼层
1#
发表于 2018-10-29 17:45:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 天涯沦落20131 于 2018-10-30 08:58 编辑

建了一个“生产_欠单”窗体,想通过点击“产品料号”、“工单编号”实现交叉表查询窗体筛选。问题点:交叉表查询为动态列,点击文本框“产品料号”没有显示,请高手帮我看看!非常感谢!同时谢谢此论坛,让我们学到更多知识!为了方便解决问题(请用第二附件)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2018-10-30 11:21:40 | 只看该作者
我猜你要的结果应该是这样吧(但愿没有猜错)。
理论上没什么难的,应该是传递参数时有误。打开带条件的窗体,写法是正确的,但你这个“生产_订单_情况”窗体,并不是一个真正意义上的窗体。我的意思是说,它在里面嵌套了一个child控件,通过child控件绑定查询数据源来实现的。

打个比方,你本来是要找个妹纸谈恋爱的,结果你却把鲜花送给了媒婆,你以为媒婆会把鲜花送给女神,结果她没有。
那么,能不能让“媒婆”把鲜花转交给“女神”呢。理论上是可以,但实际操作并不简单。因为child是控件,而不是窗体,因此并不方便将where部分传入。openform肯定是不行的了,因为它不是一个form。我试过在“媒婆”【生产_订单_情况】上使用加载事件,把where传递过去,但使用filter时无效。

换句话说,还是需要重写查询数据源的SQL。既然如此,又何必再传递参数呢?直接修改数据源,打开窗体就好了呀。于是便有了这个附件。

理论上,应该还有一个相对简单的法子,不过就不能使用打开窗体了,而是把这两个窗体放在同一个主窗体下,通过点击“生产_欠单”的物料号或者订单号来显示对应的“生产_订单_情况”。这个时候可以考虑使用ADO,current事件。在子窗体上是可以通过。即点击A子窗体的ID,显示B子窗体对应ID的其他信息。当然,child依然是一个绕不过的问题,能否实现的关键还得看它。
最后附上一段实现的代码,详细查看附件:
  1. Private Sub 产品料号_Click()
  2.     Dim strNum As String
  3.     Dim strSQL As String
  4.     Dim qry As QueryDef
  5.     Set qry = CurrentDb.QueryDefs("临时表")
  6.     qry.SQL = "TRANSFORM Sum(生产数量) AS 生产数量总计 SELECT 模号, 工单编号, 产品料号, Sum(生产数量) AS 总计 FROM 生产_数据统计表" _
  7.             & " WHERE 产品料号='" & Me.产品料号 & "' GROUP BY 模号, 工单编号, 产品料号 PIVOT 生产日期"
  8.     qry.Close
  9.     DoCmd.OpenForm "生产_订单_情况"
  10. End Sub
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2018-10-30 14:35:16 | 只看该作者
roych,谢谢你!我也在想用交叉表查询生成本表的方式作为窗体的数据源,满足条件功能,为此我整了1天时间,同时我也学了不少!谢谢你讲的故事!受教了!你帮我解决了一个看是简单,确是我不能完成的困难,感谢你的无私奉献。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-23 19:37 , Processed in 0.114552 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表