Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2010)
選択クエリのフィールドの文字列のフォーマットについて
投稿日時: 17/11/24 18:18:49
投稿者: 馬車道停留所

こんにちは
 
表題について2つ質問があります。

投稿日時: 17/11/24 18:19:30
投稿者: 馬車道停留所

1つ目は、テーブル@のアカウントフィールドに、7桁でランダムの数字が入っています。選択クエリ@を作成し、基となるテーブルをテーブル@として、選択クエリ@に、IDフィールドを作成し、ID: [アカウント]として表示しています。
 
IDのフォーマットとして、アカウントフィールドの7桁の数字の左から1番目の数字が、2,4,5,6,であれば、Bを、それ以外の数字であれば、何のアルファベットも付けないでそのまま表示させる方法をご教授いただきたいです。
 
例: テーブル@
アカウント: 1234567
                        0006789
                        2134567
                        4123567
                        5123467
 
例: 選択クエリ@
ID: B2134567
      B4123567
      B5123467
      0006789
      1234567

投稿日時: 17/11/24 18:20:25
投稿者: 馬車道停留所

2つ目は、テーブルAにIDというフィールドがあり、7桁の数字の左隣に、アルファベットが一文字、あるいは、同じアルファベットが二文字入力されています。
 
選択クエリAを作成し、基テーブルをAとし、選択クエリAにアカウントフィールドを作成し、IDフィールドの頭に付いているアルファベット(左から1つ付いている場合と、2つ連続して付いている場合があります)を取り除いた、7桁の数字のみを表示させる方法をご教授いただきたいです。
 
例: テーブルA
ID: 1234567
      0006789
      BB2134567
      B4123567
      B5123467
 
例: 選択クエリA
アカウント: 2134567
                       4123567
                       5123467
                       0006789
                       1234567
よろしくお願いします。

回答
投稿日時: 17/11/25 00:41:56
投稿者: mayu.

こんな感じでいいのでしょうか。
 
[1つ目]

SELECT アカウント
     , IIf( Left$( アカウント, 1 ) IN ( '2', '4', '5', '6' ), 'B' ) & アカウント As ans1
     , IIf( Left$( アカウント, 1 ) Like '[2,4,5,6]', 'B' )          & アカウント As ans2
FROM [テーブル@]

[2つ目]
SELECT ID, Right$( ID, 7 ) As ans FROM [テーブルA] ;

回答
投稿日時: 17/11/25 09:31:25
投稿者: hatena
投稿者のウェブサイトに移動

mayu.さん、細かい突っ込みご容赦。
 

mayu. さんの引用:
[1つ目]
SELECT アカウント
     , IIf( Left$( アカウント, 1 ) IN ( '2', '4', '5', '6' ), 'B' ) & アカウント As ans1
     , IIf( Left$( アカウント, 1 ) Like '[2,4,5,6]', 'B' )          & アカウント As ans2
FROM [テーブル@]

 
Likeを使う場合、カンマはいならいのでは。カンマを入れるとそれにも反応します。
 
Left$( アカウント, 1 ) Like '[2456]'
 
Likeを使うなら、下記でもいいですね。
 
アカウント Like '[2456]*'
 
 

回答
投稿日時: 17/11/25 10:12:12
投稿者: mayu.

引用:
Likeを使う場合、カンマはいならいのでは。カンマを入れるとそれにも反応します。

まさしくおっしゃるとおりです。ちゃんと試して回答しないとダメですね...。( ̄◇ ̄;)
フォローいただき、ありがとうございます。

投稿日時: 17/11/25 21:50:28
投稿者: 馬車道停留所

Mayuさん
hatenaさん
 
ご回答いただきありがとうございました。
 
自分で確認すればよいことだとは思うのですが、週末で、手元にアクセスがないのでお伺いさせていただきます。
 
入力する際は、それぞれの選択クエリの各フィールドに次のように入力したらよろしいでしょうか。それとも、それぞれのクエリのデザインビューでSQLとして入力するのでしょうか。
 
[1つ目] 
 
ID: SELECT アカウント , IIf( Left$( アカウント, 1 ) IN ( '2', '4', '5', '6' ), 'B' ) & アカウント As ans1 , IIf( Left$( アカウント, 1 ) Like '[2456]', 'B' ) & アカウント As ans2 FROM [テーブル@]
 
Likeを使うなら、下記でもいいですね。 
アカウント Like '[2456]*' 
 
[2つ目] 
アカウント: SELECT ID, Right$( ID, 7 ) As ans FROM [テーブルA] ;

回答
投稿日時: 17/11/25 23:22:39
投稿者: mayu.

引用:
それとも、それぞれのクエリのデザインビューでSQLとして入力するのでしょうか。

こちらです。
hatenaさんの回答も合わせて SQL文に組み込んでおきましたので
SQLビューで入力し、データシートビューで確認いただけますか。
 
※ 返信は馬車道停留所さんのペースでゆっくりどうぞ。
 
[1つ目]
SELECT アカウント
     , IIf( Left$( アカウント, 1 ) IN ( '2', '4', '5', '6' ), 'B' ) & アカウント As ans1
     , IIf( Left$( アカウント, 1 ) Like '[2456]', 'B' )             & アカウント As ans2
     , IIf( アカウント Like '[2456]*', 'B' )                        & アカウント As ans3
FROM [テーブル@]

[2つ目]
SELECT ID
     , Right$( ID, 7 ) As ans1
     , Mid$( ID, 1 + IIf( ID Like '[A-Z][A-Z]???????'
                        , 2
                        , IIf( ID Like '[A-Z][!A-Z]??????', 1, 0 ) 
                     )
       ) As ans2
FROM [テーブルA]

投稿日時: 17/11/26 00:36:29
投稿者: 馬車道停留所

Mayuさん
 
ご返信いただきありがとうございます。
来週中に確認してご返信させていただきます。

投稿日時: 17/12/01 12:44:28
投稿者: 馬車道停留所

Mayuさん
 
ご連絡が遅くなりました。
 
[1つ目] は、まだ、試せていないのですが、
[2つ目] は、たしか、ans1のフィールドには、IDの9文字以降が入っているものがありました。かといって、前の8文字が全て非表示であったかというとそうではないようでした。また、IDが数字を含まないものであると、途切れたものが表示されていたようでした。
 
ですが、, Right$( ID, 7 ) As ans1 の箇所を除くと正しく表示されました。
 
ありがとうございました。
 
1つ目についても確認次第、ご連絡をさせいただきます。

投稿日時: 17/12/10 00:09:59
投稿者: 馬車道停留所

Mayuさん
hatenaさん
 
ご返信に時間がかかってしまいすみません。
その後、[2つ目]だけで事が足りてしまい。
[1つ目]を使用する機会がなくなってしまったため、未だに試せていません。
 
ご回答に、これ以上、時間がかかってしまうのは申し訳ないので、
本件は、解決とさせていただこうと思います。
 
今後、どこかで使う場面が出てくるので、その時には、使わせていただきますので無駄にはしません。
 
感謝します。