0

我使用这个 XML 文件作为我的水晶报表的数据源。

<Person>
    <name></Name>
    <Family></Family>
    <BirthDate type="datetime"></BirthDate>
</Person>

但是当我使用它作为数据源并且水晶报表引擎根据给定的 XML 生成我的报表列时,我看到 BirthDate 字段是一个字符串。我不能改变它的类型,我想我的 XML 格式可能有问题

有没有人能帮帮我?!谢谢

4

2 回答 2

1

可能为时已晚,但我希望这对那些现在正在寻找答案的人有所帮助。不要使用 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 将正确识别生日的类型。

于 2017-11-17T20:27:53.700 回答
0

您可以使用 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"

于 2013-02-20T23:02:09.183 回答