【问题标题】:Define Column type in xml file to use as Crystal report data source在 xml 文件中定义列类型以用作 Crystal 报表数据源
【发布时间】:2013-02-19 13:07:22
【问题描述】:

我将此 XML 文件用作水晶报表的数据源。

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

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

有没有人可以帮助我?! 谢谢

【问题讨论】:

    标签: xml crystal-reports


    【解决方案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 将正确识别生日的类型。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 2014-02-07
        • 1970-01-01
        相关资源
        最近更新 更多