当粘贴报表部件的链接信息时,“上下文报表部件”选项主要影响链接的数据上下文;对于“粘贴链接”列表中的任何可用选项,“选自”字段(报表 URI)和“对象名称”字段始终是相同的。本节提供各种方案,并介绍程序如何为每种方案创建数据上下文。
方案 1
如果源报表包含数据(即,如果报表处于“预览”视图中),则对于选定字段的所有子项,“上下文报表部件”数据上下文(在目标报表中)为源报表的“预览”数据上下文。例如,您可能会在“数据上下文”字段中看到以下内容:/Country[USA]/Region[*]。否则,程序会使用源报表的“设计”视图数据上下文作为目标报表中的“上下文报表部件”数据上下文。
方案 2
如果源报表和目标报表是同一个报表,并且选作源的对象来自“预览”视图,那么当您选择链接到的目标对象处于高于源对象的级别时,数据上下文将被留为空白。例如,当源数据上下文为 /Country[Australia]/ChildIndex[5] 且目标数据上下文为 /Country[Australia] 时,“上下文报表部件”数据上下文将被留为空白。
方案 3
如果源报表和目标报表是同一个报表,并且选作源的对象来自“预览”视图,那么当您选择链接到的目标对象处于低于源对象的级别时,所粘贴的数据上下文为“设计”视图数据上下文(以公式的形式)。例如,当源数据上下文为 /Country[Australia] 且目标数据上下文为 /Country[Australia]/ ChildIndex[5] 时,“上下文报表部件”数据上下文为 "/"+{Customer.Country}。
交叉表
如果您在源报表中复制的对象属于交叉表的一部分,则“上下文报表部件”数据上下文将基于嵌入交叉表中的选定对象。通过跟踪交叉表中的选定对象是行、列还是单元格,Crystal Reports 将创建数据上下文。接着,程序将检索行名和列名。然后,它将分析“设计”视图报表上下文。最后,如果数据上下文公式中的组出现在先前检索到的行名或列名中,程序将通过添加 GridRowColumnValue 函数来生成“上下文报表部件”数据上下文。例如,您可能会看到如下数据上下文:
"/"+GridRowColumnValue("Customer.Country")+"/"+GridRowColumnValue("Customer.Region")