我的数据库中有一些表格如下。它们已使用Database Expert添加到Crystal Reports中,并使用各种相应的ID列在“链接”选项卡中链接在一起:
CUSTOMER_PUBLIC_ID
------------------
CUSTOMER_ID
STORE_ID
PUBLIC_ID
STORE
-----
STORE_ID
STORE_NAME
PURCHASE
--------
PURCHASE_ID
CUSTOMER_ID
STORE_ID
PRICE
每位客户为他们购买的每家商店都有不同的公共ID。例如,以下是客户的一些行,其中CUSTOMER_ID =' 1'来自CUSTOMER_PUBLIC_ID表:
CUSTOMER_ID / STORE_ID / PUBLIC_ID
1 / 10 / 100500
1 / 11 / 3400
1 / 99 / 900800
STORE_ID 99是一个虚构的商店,用于为任何特定客户保留与商店无关的客户公共ID。
Crystal Reports'默认自动生成的SQL语句正在按照我的预期检索每次购买的所有客户信息:如果在STORE_ID =' 11'的商店中进行了购买,那么我为该客户获取STORE_ID =的PUBLIC_ID = ' 11&#39 ;.我的报告显示如下:
Purchase ID: 600, Store ID: 11, Customer Public ID: 3400, Price: 5.99
我还想为我的客户检索与商店无关的PUBLIC_ID(使用STORE_ID =' 99'),所以我可以显示这样的内容:
Purchase ID: 600, Store ID: 11, Customer Public ID: 3400, Customer Global ID: 900800, Price: 5.99
在Crystal Reports中执行此操作的正确方法是什么?现在,我有一个Public_ID公式字段,可以按如下方式检索值:
Stringvar CustomerPublicID := {CUSTOMER_PUBLIC_ID.PUBLIC_ID};
这将检索与进行购买的STORE_ID相对应的PUBLIC_ID。什么是检索全球客户ID的正确方法" (正如我之前在Crystal Reports中所说的那样)是吗?
答案 0 :(得分:0)
您可以使用Sub Report
解决此问题。
由于每位客户都会检索数据,因此请按CUSTOMER_ID
对主报表进行分组。
在@Store
中创建一个公式detail section
,并压制详细信息。
Shared Numbervar Store;
if STORE_ID=99
Then Store:=PUBLIC_ID
现在获取子报告并将其放在Customer
组的组页脚中。
使用@Store
将子报告与Change sub report links
相关联。
在子报告中创建公式@Retrive
并写下以下代码。同样在子报告中,创建与主报告相同的分组层次结构。
Shared Numbervar Store;
Store
现在,您可以使用子报告中的公式Retrive
进行显示,并在子报告中显示您的数据,并压缩主报告中除子报告部分之外的所有部分。
希望这有帮助