设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 纠结的主窗体和子窗体设置

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-25 23:35:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 williamwangc 于 2011-6-25 23:53 编辑

我这里有一个劳防用品发放的计划表。但是我现在碰到一个非常纠结的问题。
我这里有一个“劳防用品的标准”。主要的字段为
物料代码,商品名称,规格型号,价格,单位等信息,这些都是从EXCEL上直接导入的。这个是基础表。
为了每月做计划,
我自己做了一个每月采购计划表。
主要字段为:月份,物料代码,数量
然后我以这两个表作为依据做了一个简单的以物料代码为联系的查询作为每月采购的采购的清单。
主要的字段为:月份,物料代码,数量。。。。。。。。
很简单吧。
现在我要做一个包含子窗体的窗体
主窗体是我每月录入月份,物料代码,数量的表;子窗体是每月采购的清单。
如下图
file:///e:/图1.png
因为子窗体是原来的查询,应该是主窗体跟着子窗体动的。
我的要求是:
1.主窗体只负责录入,子窗体显示所有录入数据的查询
2.主窗体指针在哪个条目,子窗体应该跟随主窗体指针变化。反之亦然。
然而我现在碰到的问题是这样的:
1.我做子窗体时以物料代码作为主链接字段发现子窗体只有一条查询,但是他是跟随主窗体的条目指针一起变化的。
2.如果我不做主链接字段,然后编写:SET 子窗体.form.RECORDSET=me.recordset命令时,会出现指针一起变化了,但子窗体的如产品名称等信息无法正常显示出来的问题。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-6-26 06:07:15 | 只看该作者
有意思的题目。

有没有可能用 2 - n 个子窗体来解决这个问题呢?

点击这里给我发消息

3#
发表于 2011-6-26 06:14:46 | 只看该作者
所谓主子窗体,主表示主动,子表示被动,当然这种关系是建立的主子连接字段的基础之上。因此,如果不是这种主动和被动的关系的主子窗体关系的话,那么就应该去除主子连接字段,一切指针的移动,均依靠自行编写的VBA代码来完成。
4#
 楼主| 发表于 2011-6-26 08:19:35 | 只看该作者
谢谢你的解答,我现在大方向明白了。
那肯定是要消除主链接字段的。
我猜测RECORDSET的命令是由于主窗体字段和子窗体字段不完全一致造成的。这里我再详细说明一下情况。
主窗体的控件来源:表:每月劳防计划
字段:月份、物料代码、数量
子窗体的控件来源:查询:每月劳防用品计划金额
这个查询是由两个表组合而成:
表一:即主窗体控件来源:表:每月劳防计划
表一字段:月份、物料代码、数量
表二:劳防用品价格
表二字段:物料代码、材料名称、规格型号、计量单位、计划单价、税后价
查询:每月劳防用品计划金额
查询字段:月份、物料代码、材料名称、规格型号、计量单位、数量、计划单价、税后价、总额(税后价*数量)
现在要求是
1.主窗体只负责录入,子窗体显示所有录入数据的查询
2.主窗体指针在哪个条目,子窗体应该跟随主窗体指针变化。反之亦然。

那我应该这么解决呢?
应该是还少一个参数。
5#
发表于 2011-6-26 08:57:33 | 只看该作者
williamwangc 发表于 2011-6-26 08:19
谢谢你的解答,我现在大方向明白了。
那肯定是要消除主链接字段的。
我猜测RECORDSET的命令是由于主窗体字 ...

简单问题不要复杂化。可以这样处理:
1、以查询为数据源建立一个数据表子窗体或连续子窗体;
2、建立一个未绑定主窗体,该窗体上建立月份、物料代码、数量等未绑定控件,并将已建好的子窗体拖入主窗体中;
3、在子窗体的成为当前事件中,将子窗体的数据传递给主窗体,方法为:
Me.Parent.Form.Controls("物料代码").Value = Me.物料代码.Value
......
4、在主窗体上建立一个保存按钮、其功能在于保持修改后的数据,方法为:
Me.子窗体.Form.Controls("物料代码").Value = Me.物料代码.Value
......
6#
 楼主| 发表于 2011-6-26 11:22:01 | 只看该作者
Private Sub Command12_Click()
DoCmd.Save
Me.每月劳防计划金额.Form.Controls("物料编号").Value = Me.物料编号.Value
我点击保存后,出现记录集不可更新。
7#
 楼主| 发表于 2011-6-26 11:30:10 | 只看该作者
我是菜鸟,这个指针还是弄不来啊。

点击这里给我发消息

8#
发表于 2011-6-26 15:13:52 | 只看该作者
我觉得主窗体只是一个容器,你的问题应该是子窗体与子窗体之间的问题,所以主窗体与子窗体之间不应该有连接字段,说白了就是主窗体与子窗体没有任何关系,只是一个容器,你需要把两个子窗体中的一个用来做数据录入,而另一个浏览数据,两个子窗体之间记录指针同步用代码来维护联。用到的东西,Requery/Find/BookMark....

换成这个思维方式去想想。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 18:19 , Processed in 0.117054 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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