アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2003を使っています。

1つのフィールドに入っている文字列が何種類かあります。
ここでは10種類あるとします。
それぞれ、

在庫あり/在庫わずか/お取り寄せ/商品なし/販売終了/品切れ中4月21日入荷/品切れ中5月14日入荷/品切れ中6月1日入荷/品切れ中7月31日入荷/品切れ中8月31日入荷/

これを、在庫あり/在庫わずか/お取り寄せ は「0」に、それ以外は「1」にしたいのです。

いろいろ調べた結果、Replace関数というものを知り、使ってみたのですが、

Replace(Replace(Replace(Replace(Replace(Replace([在庫],"在庫あり","0"),"在庫わずか","0"),"お取り寄せ","0"),"商品なし","1"),"販売終了","1"),"品切れ中*","1")

としても、最後の「"品切れ中*"」がうまく働きませんでした。どうやら「*」は使えないようです。

ただ、10種類ならまだ10回カッコを書いていくだけでいいですが、品切れ中の日付が100日分などとなるとそうも行きません。ですので何かいい方法をお持ちの方、おしえていただけませんでしょうか?よろしくお願いいたします。

(特にReplace関数にこだわっているわけではありません。ただ、あまりAccessには詳しくないので、クエリのデザインビューで紐付ける程度のことしかやっておりません。お手数をお掛けしますがよろしくお願いいたします。)

A 回答 (3件)

随分難しく考えていらっしゃる様ですが、下記程度ではいかがでしょうか。

ご参考まで。
式1: IIf(([在庫] Like "在庫*") Or [在庫]="お取り寄せ",0,1)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
そうですまさにこういうことをやりたかったのです。どうやらIIFは基本的なことのようですね…。でも知らなかった私にはとてもありがたかったです。どうもありがとうございました。それからもうちょいAccess勉強します。

お礼日時:2011/03/31 17:04

質問表現があいまいだが、1(というか各レコードというか)レコードの1フィールドにおいて、/で区切られた文字列のうちのどれか1つが這いいているということですよね。


エクセルでは決った空きの列のせるに項目と隣列に対応コードを入力し、VLOOKUP関数で簡単に索引できる課題ですが、アクセスはVLOOKUPはなく、DLOOKUPは似ているといえます。
しかしアクセスでは文言とコードの対応表をテーブルとしてもって、クエリの画面で
テーブル コード振り
ID文言コード
1aa1
2bb1
3cc2
4dd3
5ee2
6ff2
7gg1
質問ではaa は「在庫あり」にあたる(漢字入力手抜きでこうした)。
ーーー
テーブル 文言索引で
IDコード文言
1aa
2bb
3cc
4ff
5dd
6ee
とあるとする。コード列は空白。
ーーー
クエリで
tableの表示 コード振りと文言索引
文言と文言を結合線を引いておく
コードフィールドで
ビルド画面を出して、
コード: DLookUp(コード振り.コード,"コード振り",コード振り.文言=文言索引.文言)
を入れて、OK
クエリ実行で
IDコード文言
11aa
21bb
32cc
42ff
53dd
62ee
とコードのフィールドにコードが振られる。
クエリをテーブル化も可能。
ーーーー
質問者は、エクセル式発想がアクセスでも、前に出すぎているようだ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
確かにおっしゃるとおり、ExcelとAccessとごっちゃになるときがよくあります。出来る人はちゃんとそのあたりも区別されているんですね。関数についてはもっと勉強しないとなあとひしひしと感じました。どうもありがとうございました。

お礼日時:2011/03/31 17:08

標準モジュールに以下を保存します。



Function funcJudge(str As String) As Integer
Select Case str
Case "在庫あり"
funcJudge = 0
Case "在庫わずか"
funcJudge = 0
Case "お取り寄せ"
funcJudge = 0
Case Else
funcJudge = 1
End Select
End Function

この関数をReplace関数のかわりに使用します。
たとえば、クエリで、


SELECT テーブル1.在庫, funcJudge([在庫]) AS 判定
FROM テーブル1;

のように。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほどモジュールを使ったやり方もあるんですね。勉強になります。正直ぱっと見では理解が出来ませんが、ちゃんと復習して理解したいと思います。どうもありがとうございました。

お礼日時:2011/03/31 17:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています