FileMaker Pro 18 Advanced:如何识别同时选修同一教师两门课程的学生
识别FileMaker中同时选修教师两门课程的学生
优先推荐非脚本方案,利用FileMaker的关系和计算字段即可实现需求:
非脚本方案
方法1:用计算字段直接获取重合学生ID
假设你的表结构如下:
StudentCourses(学生选课表):包含StudentID(学生ID)、CourseID(课程ID)及其他学生数据,每条记录对应一个学生-课程组合TeacherCourses(教师课程表):包含TeacherID(教师ID)、Course1ID(第一门课程ID)、Course2ID(第二门课程ID),每条记录对应一位教师的两门固定课程
操作步骤:
- 在关系图中,给
StudentCourses添加一个表别名(比如StudentCourses_2),建立两个从TeacherCourses到学生选课表的关系:- 关系1:
TeacherCourses::Course1ID = StudentCourses::CourseID(对应第一个门户的数据源) - 关系2:
TeacherCourses::Course2ID = StudentCourses_2::CourseID(对应第二个门户的数据源)
- 关系1:
- 在
TeacherCourses表中创建一个计算字段(结果类型选「文本」),命名为CommonStudentIDs,公式写:
这个字段会自动返回同时选修该教师两门课程的学生ID列表,每个ID占一行。FilterValues( List( StudentCourses::StudentID ); List( StudentCourses_2::StudentID ) ) - 如果需要展示这些学生的详细信息,可以基于这个计算字段创建新门户,或者直接在现有门户中标记重合学生。
方法2:用条件格式高亮门户中的重合学生
如果只需要在现有两个门户中直观看到哪些学生重复出现,不需要单独列表:
- 确保已建立好上述的两个关系(
StudentCourses和StudentCourses_2) - 打开第一个门户的布局,选中门户内的
StudentID字段(或其他标识学生的字段),添加条件格式:- 条件选择「计算结果为真」,输入公式:
PatternCount( List( StudentCourses_2::StudentID ); StudentCourses::StudentID ) > 0 - 设置满足条件时的样式(比如背景色设为浅黄、文字加粗)
- 条件选择「计算结果为真」,输入公式:
- 对第二个门户做同样的设置,公式改为:
这样两个门户中同时出现的学生就会被高亮标记,一目了然。PatternCount( List( StudentCourses::StudentID ); StudentCourses_2::StudentID ) > 0
脚本方案(非优先,适合批量操作/导出场景)
如果需要对重合学生进行批量处理(比如导出、批量修改数据),可以用脚本实现:
# 脚本名称:查找教师两门课程的重合学生 1. 进入布局 [ 布局名称: "TeacherCourses详情" ] # 确保当前是目标教师的记录 2. 设置变量 [ $Course1Students; 值: List( StudentCourses::StudentID ) ] 3. 设置变量 [ $Course2Students; 值: List( StudentCourses_2::StudentID ) ] 4. 设置变量 [ $CommonStudents; 值: FilterValues( $Course1Students; $Course2Students ) ] 5. 进入布局 [ 布局名称: "StudentCourses列表" ] 6. 执行查找 [ 恢复; 标准: StudentCourses::StudentID = $CommonStudents ] # 自动筛选出重合学生 7. # 后续可添加导出、标记等操作
内容的提问来源于stack exchange,提问作者Wayne Henderson
相关产品推荐
相关产品推荐

