我正在尝试制作一份Crystal Report,显示我们客户的MAIN和ALTERNATE联系方式。
如果客户同时拥有两种类型的地址(即MAIN和ALTERNATE),那么一切正常,但对于只有MAIN地址的客户,根本不会报告。因此,总而言之,所有客户都将拥有MAIN地址,但只有一些客户将拥有MAIN和ALTERNATE地址。
我需要获取报告,以便为所有客户打印表格,不管是否存在第二个地址(在本例中我们的数据库中为Addresses2.AddressType为ALTERNATE或NULL)。
我的选择公式如下所示:
{SubscriptionMembers.Current} and
{Categories.CategoryType} = "M" and
{SubscriptionMembers.MainSubscription} and
{Addresses.AddressType} in ["MAIN"] and
{Addresses2.AddressType} in ["ALTERNATE"] and
{Addresses.Country} = "United Kingdom" and
not {SubscriptionMembers.Lapsed} and
not {Contacts.Deleted}
答案 0 :(得分:0)
我建议使用SQL表达式字段,包含类似(isnull({Addresses2.AddressType},' ALTERNATE'))并在记录选择公式中使用此字段 - 这样您就不依赖于报告有关处理NULL值等的选项。
答案 1 :(得分:0)
因为只有一些人有“替代地址”,所以选择公式只会向客户展示“主要”和“替代”。
我假设每个客户都有一个主要地址
我要处理的方法是取出{Addresses2.AddressType} in ["ALTERNATE"] and
然后将“替代”地址详细信息放在与主要地址相同的部分(组)中。
只要这些链接正确,它将显示来自其他选择参数的每个客户,因此将显示“主要”和拥有“替代”地址的客户。 应该如何看待:
组 - CustomerID
'MAIN' address details here 'ALTERNATE' address details here
组 - 详情
'DATA' here
答案 2 :(得分:-1)
由于您需要在任何一种情况下获得客户,因此在记录选择公式中,一种方法是不接受地址。而是创建一个公式来检查address2的空值
If isnull ({Addresses2.AddressType} in ["ALTERNATE"])
then your code
Else If (Addresses.AddressType} in ["MAIN"] or
{Addresses2.AddressType} in ["ALTERNATE"])
Then your calculation
通过这种方式,您可以轻松处理