みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
Case関数の使い方で悩んでいます。
フィールド 種類 に次のような価があります。
長野産リンゴ紅玉
長野産リンゴふじ
青森産リンゴつがる
青森産リンゴ紅玉
山梨産ブドウマスカット
山梨産ブドウ巨峰
岡山産ブドウしえん
そして、ネットで調べて 異なるフォールドに
Case (
IsEmpty ( 種類 ) ; "---" ;
( 名称 ="*リンゴ*" ) ; "倉庫A" ;
( 名称 = "*ブドウ*") ; "倉庫B" ;
"倉庫C"
)
のようにして、収納する倉庫を表示するようにしたいのですが、すべて 倉庫C になってしまうのです。
試しに
Case (
IsEmpty ( 種類 ) ; "---" ;
( 名称 ="長野産リンゴ紅玉" ) ; "倉庫A ";
( 名称 = "長野産リンゴふじ") ; "倉庫A ";
中略
"倉庫C"
)
のように、完全に位置するようにすると、倉庫A とか 倉庫B と表示する様になります。
いろいろと試して
Case (
IsEmpty ( 種類 ) ; "---" ;
( 名称 ="*リンゴ*" ) ;( "倉庫A" );
( 名称 = "*ブドウ*") ; ( "倉庫B") ;
"倉庫C"
)
のように()で囲ったりしても同様で悩んでおります。
IF関数も考えたのですが、条件が100近くあるのでCase関数で始めたのですが、上手く動かないので困っております。
良い方法がありましたら、ご教授ください。
お願いいたします。
Offline
> ( 名称 ="*リンゴ*" ) ;( "倉庫A" );
間違いが二つ
()が不要です
"*リンゴ*" 「*」は検索の演算子で、計算式では使えません。
PatternCount ( 名称 ; ”リンゴ” )が目的に合致していますね。
しかし、
分岐が多いのなら、別テーブルでその組み合わせを作って、
それを参照する方が簡単でしょう。
Offline
= は完全に一致するときに真を返しますので、"長野産リンゴ紅玉"="リンゴ" が偽になります。
また、その式の中で修飾子は使えません。
Case で分類したいのでしたら、
PatterCount ( 名称 ; "リンゴ" ) を使うか、Filter ( 名称 ; "リンゴ" ) を使って文字列を抜き出すか、でしょう。
ただ、計算式を組んでしまうと、倉庫が変わったときに計算式そのものを変更する必要があり、非常に面倒ですし、ファイルの安全面でも不安です。
ですから、別に商品と倉庫を管理するテーブルを作り、倉庫をルックアップする運用にされることを、強くお勧めします。
https://www.dropbox.com/s/2gbxhwypr3m72 … 7.zip?dl=0
Offline
お世話になります。
アドバイス、ありがとうございます。
PatternCount ( 名称 ; ”リンゴ” )
で、無事に動作をいたしました。
* が使えると思っていたので、勉強になりました。
また、別テーブルやルックアップのアドバイスもありがとうございます。
調べて、勉強してみます。
助かりました。
ありがとうございます。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 552.3 KiB (Peak: 579.23 KiB) ]