设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3943|回复: 5

[窗体] 关于动态交叉表查询窗体的一点想法

[复制链接]
发表于 2018-11-1 12:38:01 | 显示全部楼层 |阅读模式
这个帖子是是根据天涯沦落20131的一个业务问题进行处理的结果(详细请点击这里)。大体是希望通过点击不同的订单或者物料,来查看某个订单或者某个物料的每天缺料情况。


我们知道,窗体控件是相对固定的。也就是说,一般情况下,创建好了,再添加控件是比较困难的。所以这里暂时不考虑点击时在隐藏状态下进入设计模式,根据查询来添加控件的做法,而是改为child子窗体控件的形式来处理。child控件最大的好处莫过于,它不介意数据来源到底是表还是查询,会根据实际情况进行控件自动适配。

关注我的帖子的版友们,可能都知道,前几天写过一个自动生成数据表窗体的示例,里面已经提到了实现思路。这里就不再重复了。这里仅提一下不同之处。我们知道,通过点击控件来显示数据,就必然涉及到传递参数,修改数据源的操作。在思路上,可以考虑在打开窗体时使用acDialog模式,也可以考虑直接用参数来修改数据源。经测试,用acDialog方式有些问题,没法实现。所以这里就直接通过修改查询数据源,再加载查询到源对象(SourceObject)上,从而达到自动更新目标窗体的目的。

实现的方式有2种。一种是打开新窗体,另一种则是嵌套子窗体。虽然楼主原先的想法是打开新窗体来查看,但是个人觉得,用嵌套子窗体或许更方便查看。所以两种方式都做了。具体见附件中“生产_欠单_打开新窗体”和“生产_欠单_嵌套子窗体”两个窗体。不管新窗体还是子窗体,这里用的都是“生产_订单_情况”,别问为什么(偷懒呗)。

还是老规矩,先贴一段代码吧:
  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.     Me.Parent!生产_订单_情况.Form!生产_工单.SourceObject = "查询.临时表"
  9.     Me.Parent!生产_订单_情况.Requery
  10. End Sub
复制代码
代码很简单,大体是利用QueryDef对象对查询进行设置SQL语句,然后把查询对象绑定到嵌套子窗体的child控件上,再刷新子窗体。这里就不一一解说了。需要注意的是,如何引用兄弟窗体的写法:先用Me,再引用Parent到父级(即主窗体)上,再引用兄弟窗体,后面的控件写法则与一般写法无异了。即:Me.Parent!兄弟窗体.Form!兄弟窗体控件.控件属性

喜欢的话,不放下载下来体验下?

本帖子中包含更多资源

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

x

点击这里给我发消息

发表于 2018-11-1 13:11:26 | 显示全部楼层
交叉查询的示例论坛一直不多,先顶一下。

点击这里给我发消息

发表于 2018-11-1 14:41:52 来自手机 | 显示全部楼层
roych 发表于 2018-11-1 12:38
这个帖子是是根据天涯沦落20131的一个业务问题进行处理的结果(详细请点击这里)。大体是希望 ...

用查询作为子窗体的sourceObject的确非常棒,完全体现了access易用的风格。这里如果用透视表视图也不错的,感觉还可以看明细,就是格式比较臃肿,哈哈。
来自: 微社区
发表于 2018-11-1 17:54:18 | 显示全部楼层
谢谢分享
回复

使用道具 举报

点击这里给我发消息

发表于 2021-3-11 09:41:04 | 显示全部楼层
谢谢
回复

使用道具 举报

发表于 2021-9-9 19:23:26 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 15:13 , Processed in 0.112059 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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