- ベストアンサー
アクセスで文字列をつなげる
おはようございます。たびたびお世話になります。 文字列の連結で フィールド1 フィールド2 フィールド3 材料a 材料b 材料c 材料a 材料d 材料c というデータがあり、クエリで&を使用し文字の連結をしています。 材料a,材料b,材料c 材料a,材料d 材料c というようにしたいのですが、そのまま連結してしまうと、 材料a,材料b,材料c 材料a,材料d, 材料c,, となってしまいます。 適当な関数も見つからず、不要な『,』を置換で消してしまう事も考えているのですが、うまくいきません。 良い方法はないでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
式1: [Field1] & IIf([Field2],",","") & [Field2] & IIf([Field3],",","") & [Field3]
その他の回答 (4)
- mshr1962
- ベストアンサー率39% (7417/18945)
#3のmshr1962です。 >実際作業してみたところ「式に未定義関数'Replace'があります。」というメッセージが出てしまいました。 新しい VBA 関数を式で使用できない http://support.microsoft.com/kb/225956/ja 確認しました。この症状みたいですね。ユーザー定義関数として設定する必要があるみたいです。
お礼
ありがとうございました。勉強になりました。やっと関数を使えるレベルなので、いろいろな方の意見を参考にできて勉強になります。これからも宜しくお願いします。
- mshr1962
- ベストアンサー率39% (7417/18945)
=Replace(Trim([フィールド1]&" "&[フィールド2]&" "&[フィールド3])," ",",") では如何でしょうか
お礼
ありがとうございます。実際作業してみたところ「式に未定義関数'Replace'があります。」というメッセージが出てしまいました。
NO1です。 質問を読み違えていたようですね。 すみません。 1.2つのカンマを1つに置き換える。 2.最後の文字がカンマだったらそれを消す。 作業を行えばよいわけで 1.は Replace([対象データ],",,",",") 2.は vbaで下記のような関数を作るのが楽かな function DelRtComma(taishostr) as string delrtcomma = taishostr if right(taishostr,1) = "," then delrtcomma = left(taishostr,len(taishostr)-1) end if
お礼
たびたびありがとうございます。1については私も本で調べてやってみたのですが、『式に未定義関数'Replace'があります。』というメッセージがでてしまいまいした。 2.もやってみたのですが、ちょっとうまくいかないみたいです。結果が代わりませんでした(,がついたままです)。どこか置き換える文字があるのでしょうか?
文字列としてつなげるのには & を使います。 [フィールド1] & [フィールド2] & [フィールド3] とすればできるはずですが、前後にスペースなどが入っているのであれば、trimなどを使って省く必要があります。
お礼
すみません補足し忘れましたが、文字間に,を入れたい為、 [フィールド1] &"," &[フィールド2] &"," &[フィールド3]としています。
補足
早速ご回答ありがとうございます。ご指摘のように連結すると、フィールドにデータがないところにも『,』が入ってしまうため、語尾に不要の『,』ができてしまいます。この語尾の『,』削除できる関数というのはあるのでしょうか?
お礼
ありがとうございます。この式で出来そうです。