プロが教えるわが家の防犯対策術!

ActivePerlからODBC経由でACCESSデータを取得するプログラムを作成しています。

作成中の下記プログラムですと、TABLE_AのKOUMOKU_A が
 ' '(半角スペース)がの場合     → ''(スペースなし)
 'BBB '(後ろスペースあり)の場合 → 'BBB'(後ろスペースなし)

で返ってきます。
登録されているすべての文字列を読み込みたいのですが、
何が原因で後ろスペースが切られるのかがわかりません。

ご存じのかた、ご教授願いますm(__)m

例)
============================================
use Win32::ODBC;

$sql = "select KOUMOKU_A from TABLE_A;";

while ( $db->FetchRow() ){
undef %FIELDS;
# データをハッシュに格納
%FIELDS=$db->DataHash();
print "'".$FIELDS{KOUMOKU_A}."'\n";
}
============================================

A 回答 (1件)

Access では、末尾の半角スペースは保存時に削除されるというのが仕様です。


解決法としては、定型入力 プロパティを & と設定することで、
半角スペースも保存することができます。

アクセスファイルには半角スペースが保存されていますか?

安全に対処するのであれば保存時に半角スペースは別文字に変えておくのがいいと思います。
本質的な解決策ではないですが・・・・

参考になりましたら。

この回答への補足

ご回答ありがとうございます。
ACCESSは勉強中なので、参考になります。

ただ今回は業者が作ったDBで、下記のcreate文で
テーブルを作成すると、同じテキスト型でも差があるようです。

create table (
AA char(5),  ←空白埋めあり
BB text(5)   ←空白埋めなし
)

char型で作成されたフィールドのデータで、
後ろについている空白の読込みができなくて困っています。

補足日時:2009/07/08 22:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!