在Crystal Reports中使用0填充一列时链接表

时间:2011-10-26 19:59:57

标签: crystal-reports crystal-reports-2008

我有一个数据库,它有两个需要链接的表,但是在一个表中,数据用零填充。例如,表格可能如下所示:

  

CUSTOMER.CUSTNUM = 00000000123456

     

CUSTOMERPHONE.CUSTNUM = 123456

我无法弄清楚如何让这些表正确加入。

我现在要做的是通过向选择专家添加以下内容来欺骗Crystal Reports指定Join子句:

  

右({CUSTOMER.CUSTNUM})= {CUSTOMERPHONE.CUSTNUM}

虽然这不起作用,但我的报告中根本没有记录。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

首先,为什么CUSTOMER.CUSTNUM首先会有前导零?在我看来,它应该是NUMERIC数据类型而不是VARCHAR。 CUSTNUM应该在所有表中保持一致。只是一个想法。

无论如何,要回答你的问题,你可以尝试在Crystal中创建一个SQL命令来加入这两个表。在连接中,只需使用数据库的函数将varchar转换为数字。例如,在Access中你可以这样做:

SELECT *
FROM `Customer`
LEFT OUTER JOIN `Orders` ON `Orders`.`Numeric Customer ID` = CLng(`Customer`.`Varchar Customer ID`)

答案 1 :(得分:1)

Crystal不喜欢异构连接。

选项:

  • 使用命令对象,它可以让您更好地控制链接
  • 创建一个执行所需连接的SQL表达式;链接记录选择公式中的字段
  • 使用链接表的子报表
  • 更改表以使数据类型兼容
  • 创建执行连接的SQL视图

答案 2 :(得分:0)

如果最快的性能不是问题,您可以使用“选择专家”完成此操作。我认为问题是你的公式。

尝试更改您的公式:

{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM})

到此:

{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM}, Length({CUSTOMERPHONE.CUSTNUM}))