零落成泥 发表于:2011-06-22 10:59:31
在一个窗体里面有两个对等的子窗体,两个子窗体的数据源的表的关系是一对多的关系,也就是一个是主表,一个是子表。问题是当它们同为一个窗体的子窗体时,应该怎么样把它们关联起来,如:当选取第一个子窗体(主表)里面的某一个记录(假设是一条采购单记录)时,在第二子窗体(子表)中就表显示它的明细记录(这就那张单的明细记录).几年前见有人做个这样的列子,就是要在每二子窗体的属性里的数据项里的"连接子字段"和"连接主字段"把两个有关联的字段连起来,但我忘记了它的语法该么写了.请哪位老师不吝赐教,谢谢!!
建议将子表的数据源设置为条件查询,条件即位为主表子窗体
在子窗体的当前事件中加入代码:
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
请查看示例
点击下载此附件
曹老师:可能是我没有说清楚,因为这两个窗体是不用代码的,远没我们想像的那么复杂,我把它传上来了,你看看吧.
点击下载此附件
在作为主表的子窗体的窗体成为当前事件中,做作为子表窗体的筛选即可。
可参见《印染管理系统》一文中的排缸管理窗体下的两个子窗体的处理。
最后还煮江品茶教师来给我解决,麻烦了,谢谢!
我还是没有明白这“在作为主表的子窗体的窗体成为当前事件中,做作为子表窗体的筛选即可。”这话的意思,我想是我这里
的设置错了,我以前这样做过,没有用任何代码。
呵呵,你以为没有用任何代码而已。系统在你建立这种链接的时候,已经帮你在窗体的当前事件中写了一段代码。我告诉你的东西和系统帮你写的东西原理是一样的,区别只在于我们是自己写,还是交由系统帮助写罢了。
明白了,辛苦教师了,原来您是在真正的“授之以渔”呀,不胜感激。
总记录:10篇 页次:1/1 9 1 :