ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:woolrich 【Access2000】抽出条件の設定について
困り度:
  • すぐに回答を!
Access2000の抽出条件について質問です。

下記のようなテーブルがあります。
番号が3桁、5桁のものが混在しています。
※3桁、5桁以外のものはありません。

キー | 番号 | 名前
001 | 11029 | りんご
002 | 332 | みかん
003 | 10154 | ばなな

番号を加工する条件として、
A. 5桁の場合、頭から2桁目から3桁の値を取る
B. 3桁の場合は、そのまま値を取る
があります。

フィールドの記述は
A. 番号加工後: Mid(Left([番号],2) ,3)
というところまでは分かりました。

上記の条件をもとにクエリで実行したいのですが、抽出条件はどのように書けばよろしいでしょうか?

識者の方、ご教示いただけますと幸いです。
質問投稿日時:08/03/20 16:18
質問番号:3879441
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答10pt

回答者:noname#60992 mid([番号],(len([番号])-1)/2,3)
とすれば
5桁の場合は2番目から3文字
3桁の場合は1番目から3文字
抽出すると思います。
4桁の場合は2番目から3文字取ってくるようですので、おっしゃっておられる以外のパターンがある場合は更なる工夫が必要です。

いろいろな複雑なパターンがある場合はモジュールにファンクションを作ってしまうのが簡単だと思いますが、VBAの知識が必要になります。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/20 20:39
回答番号:No.2
この回答へのお礼ご返答ありがとうございます。

ご教示いただいた式で、希望の結果が得られました。
条件式を拝見すると、なるほど納得の記述ですね。
目から鱗が落ちました。

回答

良回答20pt

回答者:kurodai2 番号は テキストですかね?

式1: IIf(Len([テーブル1]![番号])>3,Mid([テーブル1]![番号],2,3),[テーブル1]![番号])
この結果は
102
332
015です
番号の長さが3文字以上であれば、2桁目から3文字 そうでなければ
番号全てとしています。
クエリの項目に書きます
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/20 17:35
回答番号:No.1
この回答へのお礼ご返答ありがとうございます。

番号はテキストになります。
ご教示いただいた式をクエリの項目で実行したところ、所望の値が取れました。

条件式をフィールドに記述できることを、恥ずかしながら初めて知りました。
勉強になりました。
 
最新から表示回答順に表示良回答のみ表示