AccessのReplace関数を使うときに注意すべきポイントとは?
- Access2003を使用している場合、フィールド内の文字列を置換する必要がある場合、Replace関数を使用することができます。
- ただし、Replace関数ではワイルドカード「*」を使うことはできません。
- したがって、品切れ中の日付が複数存在する場合、個別にReplace関数を記述する必要があり、煩雑になる可能性があります。代替案をご存知の方は教えていただけると助かります。
- ベストアンサー
AccessでReplace関数を使うときに…
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には詳しくないので、クエリのデザインビューで紐付ける程度のことしかやっておりません。お手数をお掛けしますがよろしくお願いいたします。)
- qwerqwer15
- お礼率87% (29/33)
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
随分難しく考えていらっしゃる様ですが、下記程度ではいかがでしょうか。ご参考まで。 式1: IIf(([在庫] Like "在庫*") Or [在庫]="お取り寄せ",0,1)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
質問表現があいまいだが、1(というか各レコードというか)レコードの1フィールドにおいて、/で区切られた文字列のうちのどれか1つが這いいているということですよね。 エクセルでは決った空きの列のせるに項目と隣列に対応コードを入力し、VLOOKUP関数で簡単に索引できる課題ですが、アクセスはVLOOKUPはなく、DLOOKUPは似ているといえます。 しかしアクセスでは文言とコードの対応表をテーブルとしてもって、クエリの画面で テーブル コード振り ID 文言 コード 1 aa 1 2 bb 1 3 cc 2 4 dd 3 5 ee 2 6 ff 2 7 gg 1 質問ではaa は「在庫あり」にあたる(漢字入力手抜きでこうした)。 ーーー テーブル 文言索引で ID コード 文言 1 aa 2 bb 3 cc 4 ff 5 dd 6 ee とあるとする。コード列は空白。 ーーー クエリで tableの表示 コード振りと文言索引 文言と文言を結合線を引いておく コードフィールドで ビルド画面を出して、 コード: DLookUp(コード振り.コード,"コード振り",コード振り.文言=文言索引.文言) を入れて、OK クエリ実行で ID コード 文言 1 1 aa 2 1 bb 3 2 cc 4 2 ff 5 3 dd 6 2 ee とコードのフィールドにコードが振られる。 クエリをテーブル化も可能。 ーーーー 質問者は、エクセル式発想がアクセスでも、前に出すぎているようだ。
お礼
ご回答ありがとうございます。 確かにおっしゃるとおり、ExcelとAccessとごっちゃになるときがよくあります。出来る人はちゃんとそのあたりも区別されているんですね。関数についてはもっと勉強しないとなあとひしひしと感じました。どうもありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
標準モジュールに以下を保存します。 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; のように。
お礼
ご回答ありがとうございます。 なるほどモジュールを使ったやり方もあるんですね。勉強になります。正直ぱっと見では理解が出来ませんが、ちゃんと復習して理解したいと思います。どうもありがとうございました。
関連するQ&A
- REPLACE関数が使えません
ACCESS2000を使っているのですが、REPLACE関数が使えなくて困っています。 Private Sub 置換_Click() MSG = Replace("ABC", "A", "B") MsgBox MSG End Sub こういう単純なもので試してもうまくいきません。 「プロシージャの呼び出し、または引数が不正です」 とのエラーが出てしまいます。 どんな原因が考えられますか?
- ベストアンサー
- Visual Basic
- アクセスでReplace関数を使用しているクエリがエクセルに読み込めない
ヴァージョンは2003です。 アクセスのクエリをエクセルへ落としたいので エクセル→データ→外部データの取り込み→新しいデータベースクエリでアクセスのファイルを選択し、 読み込みたいクエリを選択して「>」を押すと 『式に未定義関数 'Replace' があります。 』 と言うメッセージがでてしまい回避できません。 たしかにそのクエリではReplace関数を使用しています。 しかしアクセスでは問題なく表示できます。 アクセスに戻り、指定のクエリからReplace関数をなくせば エクセルに読み込むことができます。 以上 回避方法をご存知の方、 ヒントだけでもいいのでご教授よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Replace関数は文字数の制限あるのでしょうか?
アクセス2003のVBAでReplace関数で置換元のデータが大きい場合以下のエラーになります。アクセスのVBAはVB6と同じ?だと思いますが サイズの制限が存在するのでしょうか? 対策もあれば教えて欲しいです。 dim str_express as string <-- ここにアクセスのTEXT型のデータを入れている modori = Replace(str_express, str_find, str_replace) 実行時エラー'-2147352567(80020009)' 指定されたデータ量がフィールドサイズを超えています。 データ量を減らし、挿入または貼り付けを行ってください。
- ベストアンサー
- Visual Basic
- Access_2002 Replace方法
Accessにてシステムを構築しておりますが、テーブルのデータのReplaceについて悩んでおります。 TableA 〔NO〕 〔型番〕 01 多分ABC 02 DEFGとのこと 03 HIだそうです 04 JKL 05 MNO・ この様なTableAの型番から余分な文字を削除する処理を行いたく、現在は更新クエリにてReplace関数を使用し 行っています。 Replace(Replace(Replace(Replace([型番],"多分",""),"とのこと",""),"だそうです゜",""),"・","") ↓ TableA 〔NO〕 〔型番〕 01 ABC 02 DEFG 03 HI 04 JKL 05 MNO この「余分な文字」は現在100以上あり、今後もどんどん増えていきます。 クエリでのReplaceは見にくくメンテナンスもしづらいです。 「余分な文字」をまとめたテーブルでも作成しそれを使ってうまい事出来ないか考えていますが アイデアが浮かびません(;_;)。 皆様のお知恵をお貸しくださいませm(_ _)m
- ベストアンサー
- その他(データベース)
- DB2でREPLACEによる文字列の置換
ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。
- 締切済み
- その他(データベース)
- accessで困っています
access2000で、簡単な在庫管理ソフトを作っています。 商品マスタ(商品No、商品名、在庫初期値) 入荷マスタ(日付、商品名、入荷数) 出荷マスタ(出荷履歴No、日付、得意先名、商品名、出荷数) をテーブルに設け、商品を出荷入力すれば、初期値ー出荷数+入荷数をクエリ上で計算し、在庫数とし表示させています。 これに、出荷入力をしてそれを納品書として印刷させます。当たり前ですが、1商品出荷につき1枚の納品書しか印刷されません。 商品マスタに、商品名2や商品名3を設け、1枚に3種類まで印刷させようとすると、在庫計算方法がよく分からなくなります。 初心者で、どの様に作っていけば良いのかわかりません。 皆様のお知恵をお貸しいただけますでしょうか。 宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- 教えてアクセス2007!「在庫管理を求める方法」
教えてアクセス2007!「在庫管理を求める方法」 アクセス2007を扱うのは初心者ですが在庫管理のデーターを作っていて フォームを開いた時に商品の在庫だけが表示される方法を教えて下さい たとえば 入荷 出荷 商品 日付 入荷数 商品 日付 出荷数 りんご 5/1 10 りんご 5/10 10 いちご 5/5 10 ばなな 5/15 10 ばなな 5/10 10 みかん 5/16 10 みかん 5/11 10 メロン 5/13 10 この場合、いちごとメロンが残ってます フォームを開いた時、残ってる商品だけを表示させたいのですが どうしたら良いでしょうか?教えて下さい。
- ベストアンサー
- Microsoft ASP
- アクセスのソフトで関数を使う
今在庫管理のソフトをアクセスでつくっていますが、日本から輸入したものを中国元に変換します。 レートは常に変わりますが、インボイス単位で税金が(17%)決定します。たとえば100万円のインボイスで税金が10957.758元になると レートは0.0644574になります。 商品を何種類も金額が違う場合に一商品あたりの単価*数量と合計金額の人民元合計を一致させたいのです。関数で四捨五入などがありますが 何かの方法で丸め込めるような方法は無いのでしょうか?
- 締切済み
- オフィス系ソフト
- エクセルの関数について
一つのセルに二つの計算式を入れる場合には、どうすればよいでしょうか。エクセルで商品の在庫管理表を作成したく、入荷を記入する列と、出荷を記入する列、在庫数の列を設け、在庫数の列に、入出荷の自動計算が入るようにしたいと思っております。IF関数を使ってみたのですが、うまくできず、どなかた教えていただけますようお願いいたします。
- ベストアンサー
- Windows系OS
- エクセル関数を教えてください。
エクセル関数を教えてください。 A B C D E F G ・ ・ ・ 1 4月 5月 ・ 2 商品 購入数 販売数 在庫数 購入数 販売数 在庫数 ・ ・ ・ 3 ペン 5 3 2 6 3 3 ・ ・ ・ 上の表でペンの年間販売数を計算したいのですが、SUN(C2,F6,・,・,)は分かります。 指定した条件列(ペン)で、指定した条件行(販売数)を集計するような関数を教えてもほしいのですが、宜しくお願いします。
- 締切済み
- Windows XP
お礼
ご回答ありがとうございます。 そうですまさにこういうことをやりたかったのです。どうやらIIFは基本的なことのようですね…。でも知らなかった私にはとてもありがたかったです。どうもありがとうございました。それからもうちょいAccess勉強します。