[Seasar-user:7575] Re: readXlsWriteDb でスペースを設定するには

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 5月 10日 (木) 18:30:08 JST


小林 (koichik) です.

Date:    Thu, 10 May 2007 11:03:30 +0900
From:    "o.h." <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:7568] readXlsWriteDb でスペースを設定するには

> S2TestCase で事前条件の設定に readXlsWriteDb を用いようと
> しています.
> 
> で、テスト用データとして文字列フィールドにスペースを設定したい
> のですが、データもとの Excel ファイルにスペースを設定しても
> 実際に発行されている SQL を見てみると null が設定されているよう
> です.

XlsReader では文字列をトリミングしているため,
半角スペースのみのセルは null になってしまうのが
現在の仕様です.
これは

Date:    Fri, 23 Feb 2007 15:33:49 +0900
From:    Yasuo Higa <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:6308] Re: テスト用Excelファイル内の半角スペースについて

> Excelがたまに(?)空なのに半角スペースを返すことがあり、
> それに対応するために、半角スペースをtrimしています。

ということらしいです.
しかし,

> #フィールドは固定長文字列で Not Null 制約付きです

これだと対処のしようがなくなってしまいますね...

XlsReader をちょっと修正して trim しないよう
指定できるようにしてみました.

readXlsWriteDb(path, false);

のように第 2 引数に false を指定すると Excel の
読み込み時に trim しなくなります.
以下に SNAPSHOT を置いたのでご確認ください.

http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.13-rc2-SNAPSHOT/s2-framework-2.4.13-rc2-20070510.092454-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.13-rc2-SNAPSHOT/s2-extension-2.4.13-rc2-20070510.092454-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.13-rc2-SNAPSHOT/s2-tiger-2.4.13-rc2-20070510.092652-3.jar


ただし,SqlReader の方は対応していないので,
テーブルを読み込むと trim されてしまいます.
こちらについても必要であれば対応を検討しますが,
ちょっと修正範囲が広くなってしまうのと,DataSet
機能全体の整合性が保てるか確認が必要なので
少々時間がかかるかもしれません.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




Seasar-user メーリングリストの案内