我无法弄清楚如何从辅助表中提取值,以用作每条记录的选择标准。
我在 Windows 7 上使用 Crystal Reports 2011,通过 ODBC 连接到 Oracle 11g 数据库。
我正在创建一个使用来自两个位置的信息的员工目录:
- 表:教师
- 视图:PVSIS_CUSTOM_TEACHERS
教师表设置有您可预测的字段:id、lastname、firstname、telephone、address、city、state、zip 等等等。
该视图具有以下可用字段:
- 教师ID
- FIELD_NAME
- TEXT_VALUE
我正在使用的数据库应用程序允许我创建与主教师表相关的“自定义字段”。事实上,我创建的字段实际上存储在一个单独的表中,但随后可以通过 PVSIS_CUSTOM_TEACHERS 视图访问。由于数据库应用程序允许创建任意数量的“自定义字段”,因此视图中可以包含任意数量的记录,这些记录可以绑定到教师表中的记录。
已经创建了许多自定义字段,但就我当前项目的目的而言,其中只有 3 个很重要:
- empDirSupRecord
- empDirSupPhone
- empDirSupAddr
我的个人教师记录的视图如下所示:
TeacherID Field_Name Text_Value 1 empDirSupRecord 1 empDirSupPhone 1 1 empDirSupAddr 1 1 另一个字段 another_value 1 YetAnotherField yetanother_value
(这表明我已要求隐藏我的电话和地址,但仍希望我的名字包含在目录中)
如果用户要求不公开他们的电话号码或地址,或者如果我们需要完全隐藏整个记录,这些字段将包含一个“1”。
当我第一次开始我的报告时,我将表和视图都拉到了数据库专家中,并将它们与 teacher.id = pvsis_custom_teachers.teacherid 链接在一起。但是,这会导致每个教师的姓名在报告上打印一次,每个记录在视图中都有教师 ID。由于这不是我想要的行为,我从数据库专家中删除了视图,并尝试使用 SQL 表达式字段来检索自定义字段的内容。这是我目前陷入困境的地方。我需要为每个教师记录选择正确命名的字段,因为报告正在处理记录。
目前,我的 sql 表达式语句写成:
(SELECT text_value FROM pvsis_custom_teachers WHERE field_name = 'empDirSupRecord' AND teacherid = '1')
我需要做的是弄清楚如何让报告智能地选择teacherid =的记录(无论当前正在处理什么teacherid)。我不确定 SQL 表达式字段是否是完成此任务的方法,因此如果我当前的方法不起作用,我绝对愿意接受其他建议。
谢谢参观。:-)