こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS2007でフィールドの結合-空欄フィールドと日付フィールド

ACCESS2007でフィールドの結合-空欄フィールドと日付フィールド

またお世話になります。

一つのテーブル内の複数フィールドを結合して別フィールドを作りました。固定長で桁を全て揃えたデータが必要です。
table
F1(text 3)|F2(text 3)|F3(text 10)|F4(date)
001 | 006 | harumaki | 31.3.2010
002 | 001 | (空白) | 1.4.2010
003 | 007 | (空白) | (空白)

クエリ
select F1 & F2 & F3 & space (10-len(F3)) & F4 as ketsugo from table;

結果
ketsugo
001006harumaki 31.3.2010
エラー
エラー

問題1 空白フィールド
1つめのように全フィールドデータが入っていれば問題はないのですが、空白フィールドが入っている所でエラーが出てしまうようです。
F2を空白にして他を全て埋めた場合は、F2には固定長にするspaceが入っていないので詰まってしまうだけです。F3は10桁になるようデータの後ろにスペースが入ります。
クエリに問題があるのでしょうか。それともフィールドの定義でしょうか。

問題2 日付フィールド
日付を31.3.2010ではなく、31032010と直して変換したいです。
日付型ではなく、text 8にして、31032010とか01042010のように入力するしかないのでしょうか。

よろしくお願いいたします。

投稿日時 - 2010-04-08 15:57:33

QNo.5811615

すぐに回答ほしいです

質問者が選んだベストアンサー

このような感じ。

SELECT [F1] & [F2] & [F3] & (Space(10-Nz(Len(([F3]))))) & Format([F4],"ddmmyyyy") AS ketsugo
FROM table;

すべてのフィールドにNzをつけても
かまいませんが。必要なら。

SELECT Nz([F1]) & Nz([F2]) & Nz([F3]) & (Space(10-Nz(Len(Nz([F3]))))) & Format(Nz([F4]),"ddmmyyyy") AS ketsugo
FROM table;

投稿日時 - 2010-04-08 17:36:45

お礼

ありがとうございます。
教えていただいたことを使って次のようにしたら、どのフィールドが空っぽでも桁数分スペースが入り同じ長さのデータに変わりました。ここには直接入力したので ) の数が間違ってるかもしれません。

SELECT [F1] & (Space(3-Nz(Len([F1])))) & [F2] & (Space(3-Nz(Len([F2])))) & [F3] & (Space(10-Nz(Len([F3])))) & Format([F4],"ddmmyyyy") & (Space(8-Nz(Len(Format([F4], "ddmmyyyy"))))) AS ketsugo
FROM table;

一つ進んでは躓いていますが、やりながら覚えていきます。

投稿日時 - 2010-04-08 19:14:55

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問