よろずやネット

最近はLibreofficeにハマっています。

データがXMLのレポートデザイン(2)

前前回、VB.NETで印刷用データをinvoice1.xmlという名前でXML出力して、
前回、それを元にRDLレポートのデザインをしたが、
RDLソースのデータセットの中で、
本来数値であるはずのquantity、unit_price、amountがデータ型がString型となっている。
気持ち悪いので、Float型に改めてみた。

 

 <DataSets>
  <DataSet Name="Data">
   <Query>
    <DataSourceName>DS1</DataSourceName>
    <CommandText>url=File:///C:/invoice1.xml; RowsXPath=invoice/row;</CommandText>
   </Query>
   <Fields>
    <Field Name="report_id">
     <DataField>report_id</DataField>
     <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="code">
     <DataField>code</DataField>
     <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="name">
     <DataField>name</DataField>
     <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="color">
     <DataField>color</DataField>
     <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="quantity">
     <DataField>quantity</DataField>
     <rd:TypeName>System.Float</rd:TypeName>
    </Field>
    <Field Name="unit_price">
     <DataField>unit_price</DataField>
     <rd:TypeName>System.Float</rd:TypeName>
    </Field>
    <Field Name="amount">
     <DataField>amount</DataField>
     <rd:TypeName>System.Float</rd:TypeName>
    </Field>
   </Fields>
  </DataSet>
 </DataSets>

 

ついでにそれらの文字の配置を右揃えにする。

 

しかし、である。
このようにしても数値のフォーマット(例えば#,##0)が反映されない。

 


f:id:yorozuyanet:20190730130142j:plain

img_0


数値のフォーマットを反映させるには、
テキストボックスのValueの値を
=Fields!amount.Value
から
=Convert.ToDouble(Fields!amount.Value)
に変更すれば良いようだ。

 

変更前

f:id:yorozuyanet:20190730130156j:plain

img_1

 

変更後

f:id:yorozuyanet:20190730130212j:plain

img_2

 

ちなみにConvert.ToDouble関数以外にも様々な関数が用意されている。