我有一个数据库,它有两个需要链接的表,但是在一个表中,数据用零填充。例如,表格可能如下所示:
CUSTOMER.CUSTNUM = 00000000123456
CUSTOMERPHONE.CUSTNUM = 123456
我无法弄清楚如何让这些表正确加入。
我现在要做的是通过向选择专家添加以下内容来欺骗Crystal Reports指定Join子句:
右({CUSTOMER.CUSTNUM})= {CUSTOMERPHONE.CUSTNUM}
虽然这不起作用,但我的报告中根本没有记录。
有什么想法吗?
答案 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不喜欢异构连接。
选项:
答案 2 :(得分:0)
如果最快的性能不是问题,您可以使用“选择专家”完成此操作。我认为问题是你的公式。
尝试更改您的公式:
{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM})
到此:
{CUSTOMERPHONE.CUSTNUM} = Right({CUSTOMER.CUSTNUM}, Length({CUSTOMERPHONE.CUSTNUM}))