Microsoft Access 掲示板

クエリでフィールドの文字列の一部を使ってフィールドの結合をしたい

3 コメント
views
4 フォロー

Accessを独学で始めたばかりです。
職場でAccess2016を利用して簡単なシステムを構築したいと思って始めたのですがうまくいきません。
基本的なことになるかもしれませんが、ここ何日か調べても分からず、どなたか教えてください。

テーブルに、「顧客ID」と「氏名」というフィールドがあります。
これをクエリにて、「顧客ID」の前に「No.」と文字列を加え、「顧客ID」の後に空白を挟み、「氏名」の「姓」だけを結合させたいのです。

調べてみたところ、
クエリのフィールド列に下記を入力して、氏名の「姓」だけを取り出すことはできました。

姓:Left([氏名],Instr([氏名]," ")-1)

また、&を使った結合方法も分かりました。

下記のようにクエリのフィールドに入れてみましたが、できませんでした。

顧客IDと姓:"No."&[顧客ID] & " " & Left([氏名],Instr([氏名]," ")-1)

時間がなく、他は試していないのですが、「姓」フィールドを作成した上で、単純に
下記のようにさらにフィールドを追加すればうまくいくのでしょうか?

顧客IDと姓:"No."&[顧客ID] & " " & [姓]

自宅では、ACCESSを使える環境がなく、ちょっと急いで解決したい事情があります。
どうぞお力をお貸しください。

名前なし
作成: 2021/01/23 (土) 09:58:25
通報 ...
1

私の環境(Access2019)では、姓:"No." & [顧客ID] & " " & Left([氏名],Instr([氏名]," ")-1) のコード問題なく表示されました。環境が違うからかなぁ・・

顧客IDはオートナンバーと思いますが、まずは、姓:"No." & [顧客ID]で連結できるか試してみては?
姓:"No." & cstr([顧客ID]) として連結してみても出来ませんか?

2
chocotan 2021/01/24 (日) 09:30:10

saku様、早速ご教示いただいてありがとうございます。
姓:"No." & [顧客ID] & " " & Left([氏名],Instr([氏名]," ")-1) のコード問題ないのですね。
姓:"No." & [顧客ID]と、姓:"No." & cstr([顧客ID])ができるかどうか、すぐに試したいところなのですが、職場でしかできないため、明日、早速試してみたいと思います。
 

3
chocotan 2021/01/25 (月) 21:18:35

本日、解決したのでご報告です。
私は、Left([氏名],Instr([氏名]," ")-1) 部分が問題なのかと思っておりましたが、saku様のおっしゃる通り、姓:"No." & [顧客ID]の連結を試してみたところ、「指定されたフィールドSQLステートメントのFROM句にある複数のテーブルを参照しました。」というエラーで[顧客ID]がまずダメだと分かりました。

そこで
[顧客ID] →  [テーブル名].[顧客ID] としたところ、このエラーは回避できました。

さらにもう一つ、問題があったようで、
Left([氏名],Instr([氏名]," ")-1)  →   Left([氏名],InStr([氏名] & " "," ")-1)
と修正したところ、思い通りの文字列が取得できました。

一人で考えていたらまず考えつかなかったので本当に助かりました。
ありがとうございました。