我正在创建一个带有界面的数据库,以跟踪学校的学生数据。
我遇到的一个特殊问题是修改学生数据的表格,特别是显示学生已被分配到的课程的子表格。表格(带子表格)如下所示(红色箭头表示子表格):
子表单从使用主表单中的参数(MIS_ID字段)的查询中获取其数据。查询如下:
SELECT classes.classCode, subjects.subjectCode
FROM (subjects INNER JOIN classes ON subjects.[subjectID] = classes.[subjectID])
INNER JOIN studentClasses ON classes.[classID] = studentClasses.[classID]
WHERE (((studentClasses.MIS_ID)=[Forms]![modifyStudent]![MIS_ID]));
一切正常,直到我将此表单添加到导航表单选项卡。一旦我这样做,当我尝试打开导航表单时,我得到以下提示:
当我打开主修改学生表单时,不会出现此提示。另外,奇怪的是,如果我首先打开“修改学生”表单,然后打开“导航”表单 - 则不会出现提示。
如何阻止Access显示此提示。我的MS访问技巧并不是很棒,所以简单的解释会有所帮助。
谢谢!
答案 0 :(得分:0)
回答你的问题“为什么这不适用于导航形式” 导航控件有一个“navigationsubform”控件,您可以在其中加载表单。这意味着您的主表单(modifyStudent)被加载到“NavigationSubform”表单控件中,因此无法访问原始表单名称(ModifyStudent)。
从子表单中访问父值,您可以使用
me.parent!field.value
或
NavigationForm.NavigationSubform.field.value
或者只需使用linkMasterFiled和linkChildField绑定主表单和子表单。
或强>
如果你真的想构建SQL:
在sub-form_onOpen事件中执行并将其分配给me.recordSource
这样您就可以访问me.Parent.Field.value