下午开发者,
我有一个问题已经开始出现在我的灯芯上。我查看了谷歌和Crystal Reports的帮助,但仍然坚持寻求解决方案。
我们已经创建了一个XSD完整版,其中包含有关数据类型等的完整信息。 已创建一个链接到此XSD的报告(使用Microsoft的xsd.exe SDK生成的c#类),并使用字段信息填充报告。
从c#我们实例化这个报告,并用一个符合这个XSD的XML文件填充它,并且已经过验证。
现在的问题是虽然一切都没有错误验证(Crystal公式等)并且编译得很好,但是当我们运行应用程序并尝试填充Crystal Report时,报告似乎已经失去了所有关于数据输入的知识。
等公式
if ({LetProperty.lp_buildings_selected} = true) then
"Standard Cover With Accidental Damage Cover"
else
"Standard Cover";
回来“这里需要一个字符串。”错误。此公式应运行正常,因为引用的字段是布尔数据类型,Crystal Reports在设计时知道这一点。
为了让它工作,我们需要施放字段ToText并将其与'true'进行比较。 这是一个简单的解决方法,但我们将创建许多报告,并且不希望扭曲应该适用于“Fudged”凌乱代码的代码。
任何人都可以告诉我,如果我遗漏了一些明显的东西,或者是否有某些东西需要我设置,因为这让我们感到非常困惑!
非常感谢大家。
答案 0 :(得分:1)
右,
我只是想让任何人知道如果有人遇到同样情况我们如何解决这个问题。
我们需要做的是在从Xml文件填充创建的数据集(传递给Report)之前,我们将Xsd读入数据集,然后强类型并包含所有数据类型信息。< / p>
我不知道为什么crystal在创建它并将它链接到Xsd时不保留分配给它的所有数据类型信息,但这就是我们解决这个问题的方法。
答案 1 :(得分:0)
将LetProperty.lp_buildings_selected设置为XML文档中除“true”或“false”之外的任何内容(可能是空字符串)?如果是这样,这可能是Crystal Reports尝试将其用作字符串的原因。
我相信生成的XSD可能是通过预防来设置的,但我想我还是会把它扔出去。
答案 2 :(得分:0)
问题只是您需要在每个XML文件中包含架构吗?这样做会将完整的类型信息发送给Crystal,因为您告诉它XML文件是DataSource。我认为当我没有在XML文件的标题中包含XSD时,我遇到了一个问题。