2012-06-14 39 views
1

我正试图在Crystal Reports中加载公司徽标。为了做到这一点,我在我的DataSet中创建了另一个DataTable(除了包含所有详细信息的那个,我称之为ReportData),它被称为ReportSetup,它只有一个名为LogoData的System.Byte []类型的列。然后,我将LogoData字段拖放到我的报告中,并希望在我运行报告后显示图像。仅在Crystal Report有详细信息时才会加载徽标

但是,虽然徽标实际上出现在报告中,但只有当其他数据表(ReportDate)具有条目时才会执行此操作。如果我的报告中没有任何详细信息,则徽标不会显示。当我调试时,我可以看到加载我的数据表的代码正在执行,所以正确的数据被放入ReportSetup数据表中,它只是不显示。任何想法为什么?

+0

这听起来过于复杂。为什么不把标志作为图像添加到报告中? – HardCode

+0

我们计划将这些报告用于多家公司,因此我们需要动态加载徽标。这很奇怪,但似乎在数据集中传递图像是Crystal Reports中此问题的“最佳”方法。人们会认为如此普遍的做法会更容易,更快捷,但似乎并非如此。 – Antrim

回答

0

我认为你需要使用一个子报表。如果您的数据源中有多个不相关(未连接)的表,CR会给您一个警告。问题是CR不知道从哪个表开始。

0

我认为你可以在代码中改变图像源,所以你可以只添加一个占位符标志作为@HardCode建议的图像,然后在运行时替换它。

0

如果徽标数量过多,您可以将每个图像嵌入其自己的部分,然后添加一个条件抑制公式,该公式可以对参数做出反应。

//add a conditional-suppression formula for each section that contains a logo 
//change name to match logo 
Local Stringvar companyName:="Acme"; 
{?CompanyName}<>companyName;