Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

子窗体连接

零落成泥  发表于:2011-06-22 10:59:31  
复制

在一个窗体里面有两个对等的子窗体,两个子窗体的数据源的表的关系是一对多的关系,也就是一个是主表,一个是子表。问题是当它们同为一个窗体的子窗体时,应该怎么样把它们关联起来,如:当选取第一个子窗体(主表)里面的某一个记录(假设是一条采购单记录)时,在第二子窗体(子表)中就表显示它的明细记录(这就那张单的明细记录).几年前见有人做个这样的列子,就是要在每二子窗体的属性里的数据项里的"连接子字段"和"连接主字段"把两个有关联的字段连起来,但我忘记了它的语法该么写了.请哪位老师不吝赐教,谢谢!!

 

Top
丘山 发表于:2011-06-22 12:10:14
建议将子表的数据源设置为条件查询,条件即位为主表子窗体

曹光耀 发表于:2011-06-22 13:09:05

在子窗体的当前事件中加入代码:

Private Sub Form_Current()
Dim str  As String
If Nz(Me.级别) <> "" Then
str = Me.级别
    Forms![窗体1]![子窗体2].Form.RecordSource = "select * from 表2 where 级别='" & str & "'"
Else
    Forms![窗体1]![子窗体2].Form.RecordSource = "select * from 表2"
End If
End Sub

请查看示例

点击下载此附件

下午三点 发表于:2011-06-22 14:03:17

附件怎么打不开?

 



下午三点 发表于:2011-06-23 06:28:05
曹老师:可能是我没有说清楚,因为这两个窗体是不用代码的,远没我们想像的那么复杂,我把它传上来了,你看看吧.点击下载此附件

煮江品茶 发表于:2011-06-23 09:05:05

在作为主表的子窗体的窗体成为当前事件中,做作为子表窗体的筛选即可。

 

可参见《印染管理系统》一文中的排缸管理窗体下的两个子窗体的处理。



下午三点 发表于:2011-06-23 09:59:55
最后还煮江品茶教师来给我解决,麻烦了,谢谢!

下午三点 发表于:2011-06-23 11:27:54
我还是没有明白这“在作为主表的子窗体的窗体成为当前事件中,做作为子表窗体的筛选即可。”这话的意思,我想是我这里的设置错了,我以前这样做过,没有用任何代码。

煮江品茶 发表于:2011-06-23 16:12:10
呵呵,你以为没有用任何代码而已。系统在你建立这种链接的时候,已经帮你在窗体的当前事件中写了一段代码。我告诉你的东西和系统帮你写的东西原理是一样的,区别只在于我们是自己写,还是交由系统帮助写罢了。

煮江品茶 发表于:2011-06-23 16:28:45


下午三点 发表于:2011-06-23 16:43:30
明白了,辛苦教师了,原来您是在真正的“授之以渔”呀,不胜感激。

总记录:10篇  页次:1/1 9 1 :