Crystal Reports中对比邮箱字段实现签到标记的问题求助
解决Crystal Reports中员工目录数据消失并标记签到状态的问题
问题根源
Crystal Reports默认使用**内连接(Inner Join)**关联两个数据源,这种连接只会保留两边邮箱匹配的记录,导致未签到员工的目录数据被过滤掉,所以添加公式后完整目录消失。
解决步骤
1. 修改表连接为左外连接(Left Outer Join)
- 打开
Database Expert,找到两个数据源之间的连接线条 - 右键点击连接线,选择
Link Options - 在弹窗中选择Left Outer Join(确保员工目录表作为左表,即所有记录都被保留的一侧)
2. 调整状态标记公式
原公式未处理右表(调查问卷)无匹配时的空值,修改后的公式如下:
If Not IsNull({survey_emails}) And {directory_emails} = {survey_emails} THEN "x" Else "o"
也可以简化为:
If {survey_emails} = {directory_emails} THEN "x" ELSE "o"
(Crystal Reports会自动处理空值比较,不过显式判断IsNull能避免潜在的异常)
效果验证
修改连接类型并更新公式后,报表会完整显示所有员工目录,同时在对应列用"x"标记已签到员工,"o"标记未签到员工。
内容的提问来源于stack exchange,提问作者jarmend_view
相关产品推荐
相关产品推荐

