映射函数的意外结果

时间:2012-02-14 13:41:04

标签: crystal-reports

我的重要人物在履行职责时使用了Crystal Reports,并向我寻求帮助。她已经编写了一个映射函数,如下所示,并且当客户端有多张卡时,它会获得下降值(参见图表)。

diagram

在此模型中,当客户进行护理访问时,客户的卡应该在客户访问记录中显示,以便进行政府报告。虽然卡ID在概念上不是可选的,但是很可能在记录访问详细信息时卡不存档,因此他们的系统允许暂时不填充该卡。此状态由下面的映射函数中的“无卡”条件表示。

我的回答不满意,这意味着她的条件都没有达到,她已经让我发出求助的上诉。

下面是她的映射函数中的Crystal Basic代码。她知道在最后一个条件下有一个未处理的情况,在这种情况下会显示一个空白,这不是观察到的行为。图中的名称与映射函数代码中的名称不匹配,因为该图是我挥手和解释的综合,而代码直接从报表中粘贴并包含实际的字段名称。

if ({awt_temp.Service_code} = "DOM") and ({Card_Type.Card_Type_ID} = 21) then 
  {Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "MANT") and ({Card_Type.Card_Type_ID} = 25) then
  {Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "PC") and ({Card_Type.Card_Type_ID} = 22) then 
  {Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "RES") and ({Card_Type.Card_Type_ID} = 24) then 
  {Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "SOC") and ({Card_Type.Card_Type_ID} = 23) then
  {Card_Holder.Card_No}
else if not ({Card_Type.Description} startswith "vhc") then 
  "no card"

没有必要提到映射函数最好通过连接到查找表来处理。她无法重新设计架构。

1 个答案:

答案 0 :(得分:0)

它可能与NULL值有关。您应该始终在公式的开头测试空值:

if Isnull({awt_temp.Service_code}) OR Isnull({Card_Type.Card_Type_ID}) then 
  ...