過去の桐井戸端BBS (桐ver.8)
4471 表引きと条件選択の混在した項目計算式 高木一美 2000/02/05-11:26
いつもお世話になります。
項目計算式で、どうしてもうまくいかないので教えて下さい。

#cond(#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE]),[表紙]=1,1,[表紙
]=2,20,([エコー企画種別]=c .and [大分類CD]=5 .and [仕入先
CD]=3707),99,[エコー企画種別]=c,40,[大分類CD]=5,16,([エコー企画種別
]<>a .and [予備]=1),17,([エコー企画種別]<>a .and [予備
]=2),18,1,#tlu([KEY],=,”CHU.TBL",[KEY],[ページ]))

この計算で何がしたいかと言いますと、[ページ]という数値項目で
まず、PAGE.TBLに該当する[商品CD]が存在した場合は表引きでページを入れ
該当する[商品CD]が存在しない場合は、そのあとの計算で順にいれていき
最後にどれにも当てはまらない場合は、CHU.TBLから表引きしてくるというこ
とです。
CHU.TBLで当てはまらないということはないはずなのですが、
絶対とはいいきれません。
上の計算式だと、#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE])で完結し
てしまいそれ以降の計算が無効になってしまいます。
また、[表紙]=1,1は[表紙]に1がたっておれば[ページ]に1を入れるというい
みですが、,1を”それ以外”と言う意味に判別してしまう恐れもあり、
困っています。

皆さんお知恵を貸してください。
4473 Re:表引きと条件選択の混在した項目計算式 幅田 2000/02/05-12:15
記事番号4471へのコメント
高木一美さん、こんにちは

>
>#cond(#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE]),[表紙]=1,1,[表紙
>]=2,20,([エコー企画種別]=c .and [大分類CD]=5 .and [仕入先
>CD]=3707),99,[エコー企画種別]=c,40,[大分類CD]=5,16,([エコー企画種別
>]<>a .and [予備]=1),17,([エコー企画種別]<>a .and [予備
>]=2),18,1,#tlu([KEY],=,”CHU.TBL",[KEY],[ページ]))

>上の計算式だと、#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE])で完結し
>てしまいそれ以降の計算が無効になってしまいます。


いまいち、複雑すぎて実務を知っていないと何をしたいのかよくわからない式ですが、
#CONDの()の中は、(条件式,計算式,条件式,計算式..)という風に
条件式ならば計算式という風に2つの式がかならず対で指定することになります。
すなわち奇数番目の式が、条件式で、偶数番目の式が計算式となります。

上記の式だと、最初のほうで(#tlu(..),[表紙]=1,..)となって
いますので、[表紙]=1のほうが条件式みたいな感じですが、計算式のところに
書いてあります。
ですから、下記の式のように、
#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE])<>""を最初に加えて、
もし表引きの結果が未定義でないなら、表引き結果を次に[表紙]が1なら1を
という風にしていけばいいと思います。

#cond(#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE])<>"",#tlu([商品
CD],=,"PAGE.TBL",[商品CD],[PAGE]),[表紙]=1,1,[表紙]=2,20,([エコー企画種別]=c .and
[大分類CD]=5 .and [仕入先CD]=3707),99,[エコー企画種別]=c,40,[大分類CD]=5,16,([エコ
ー企画種別]<>a .and [予備]=1),17,([エコー企画種別]<>a .and [予備
]=2),18,1,#tlu([KEY],=,”CHU.TBL",[KEY],[ページ]))



>また、[表紙]=1,1は[表紙]に1がたっておれば[ページ]に1を入れるというい
>みですが、,1を”それ以外”と言う意味に判別してしまう恐れもあり、
>困っています。

,1,の部分は、条件式のところ(奇数番目の式)に書いてあれば、それ以外という
意味になりますが、計算式のところ(偶数番目の式)に書いてあれば、1を入れる
という意味になりますので、正しい使い方をすれば、「...しまう恐れもあり」
という心配はありません。

4478 ありがとうございました 高木一美 2000/02/05-14:42
記事番号4473へのコメント
幅田さんは No.4473「Re:表引きと条件選択の混在した項目計算式」で書きました。

早速の御返事ありがとうございました。
教えて頂いた通りやってみましたらできました。
4479 Re:表引きと条件選択の混在した項目計算式 悲しげ 2000/02/05-15:15
記事番号4473へのコメント
どもっ、高木さん、幅田さん、

うまく動いたとのことですので、さらに付け加えると云うのも
ナンですが、せっかく書いたので挙げておきます。(^^;)

#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE])
を2回書くと、同じ関数処理を2度呼び出す訳で、その分わず
かに処理速度が遅くなるので、次のように#計算(#代入(…
を使ってみました(^^;)。「_」はスペースのつもりです。

#計算(#代入(&秒,#tlu([商品CD],=,"PAGE.TBL",[商品CD],[PAGE]))\
___,#cond(&秒,&秒\
______,[表紙]=1,1\
______,[表紙]=2,20\
______,[エコー企画種別]="c" .and [大分類CD]=5 .and [仕入先CD]=3707,99\
______,[エコー企画種別]="c",40\
______,[大分類CD]=5,16\
______,[エコー企画種別]<>"a" .and [予備]=1,17\
______,[エコー企画種別]<>"a" .and [予備]=2,18\
______,1,#tlu([KEY],=,"CHU.TBL",[KEY],[ページ])\
______)\
___)

4520 勉強になりました 高木一美 2000/02/07-10:53
記事番号4479へのコメント
ありがとうございます。

今まで使った事のない式を知ることができ、勉強になりました。
早速、ためしてみます。

以前の質問で、悲しげさんのアドバイスによい返事が出来なっかたので、
見捨てられたかと、思ってました。

コメントいただけて、うれしいです。

戻る