2013-02-19 54 views
0

我將此XML文件用作我的水晶報表的數據源。在XML文件中定義列類型以用作Crystal報表數據源

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

但是,當我按照給定的XML以此作爲數據源,水晶報表引擎生成我的報告專欄中,我看到了出生日期字段是一個字符串。我不能改變它的類型,我認爲也許我的XML格式有問題

有沒有任何機構可以幫助我? 謝謝

回答

0

不使用XML中的類型,您可以使用Crystal公式來轉換「字符串」。

If IsDateTime({XML.BirthDate}) 
    Then CDateTime({XML.BirthDate}) 
    Else CDateTime(0) 

我從來沒有使用水晶XML源,所以我不完全確定的字段如何在公式編輯器顯示出來。 「{XML.BirthDate}」可以採用不同的格式。

if/else語句使它不會在NULL值(或非DateTime字符串)上崩潰。他們將顯示爲DateTime 0:「12/30/1899 12:00:00 AM」

0

可能太晚了,但我希望這可以幫助那些現在尋找答案的人。 而不是使用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> 

水晶報表將正確識別生日的類型。

相關問題