我使用这个 XML 文件作为我的水晶报表的数据源。
<Person>
<name></Name>
<Family></Family>
<BirthDate type="datetime"></BirthDate>
</Person>
但是当我使用它作为数据源并且水晶报表引擎根据给定的 XML 生成我的报表列时,我看到 BirthDate 字段是一个字符串。我不能改变它的类型,我想我的 XML 格式可能有问题
有没有人能帮帮我?!谢谢
我使用这个 XML 文件作为我的水晶报表的数据源。
<Person>
<name></Name>
<Family></Family>
<BirthDate type="datetime"></BirthDate>
</Person>
但是当我使用它作为数据源并且水晶报表引擎根据给定的 XML 生成我的报表列时,我看到 BirthDate 字段是一个字符串。我不能改变它的类型,我想我的 XML 格式可能有问题
有没有人能帮帮我?!谢谢
可能为时已晚,但我希望这对那些现在正在寻找答案的人有所帮助。不要使用 xml,而是使用 xsd。按照你的例子,它会是这样的:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Person" nillable="true" type="Person" />
<xs:complexType name="Person">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Family" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="BirthDate" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Crystal Report 将正确识别生日的类型。
您可以使用 Crystal 公式来转换“字符串”,而不是使用 XML 中的类型。
If IsDateTime({XML.BirthDate})
Then CDateTime({XML.BirthDate})
Else CDateTime(0)
我从未在 Crystal 中使用过 XML 源,所以我不完全确定这些字段在公式编辑器中是如何显示的。“{XML.BirthDate}”可以是不同的格式。
if/else 语句使它不会在 NULL 值(或非 DateTime 字符串)上崩溃。它们将显示为 DateTime 0: "12/30/1899 12:00:00AM"