過去の桐井戸端BBS (桐ver.7)
2514 商品マスタの中から一番安い価格を表引きしたい さくら 1999/8/26-17:12
桐初心者です。いつも勉強させていただいています。
桐7を使っているのですが、つまずいてしまいました。
どなたか、よきアドバイスを宜しくお願いします。

使用する表と項目
1 販売.TBL
顧客名  商品名(型番含む) 定価 仕切価格 仕入先・・・・

2.商品マスター.TBL
商品名 型番 定価 仕入先A 仕切価格(A) 仕入先B 仕切価格(B)・・・

やりたい事
「販売.TBL」のデータ入力に「商品マスター.TBL」のレコードを使用したいのです
が、その際に下記のような条件があるのです。

1.商品名・・・商品名/型番を一つの項目にしたい
2.定価
3.仕切価格・・全仕入先の価格を比較し一番安い金額のデータにしたい
4.仕入先・・・3の仕切価格(安い)の会社名にしたい

超初心者な質問&わかりにくかったらごめんなさい。
お返事待ってます。
2515 Re: 宮城 1999/8/26-18:43
記事番号2514へのコメント
いくつか疑問点がありますが・・・。

>1.商品名・・・商品名/型番を一つの項目にしたい

まず、型番・商品名はユニークなんでしょうね? 型番から商品名をひかせた
ほうが賢明な気がしますが、2項目をつなぎたいというだけでしたら、
[型番]+[商品名]として置換すればOKです。

次は商品マスターを次のように並べ替えます。以後、型番だけで説明します。

[型番]文字符号順(文字列ですよね?)、[仕切価格]昇順

そして、[型番]で絞り込み→単一化を行います。同一型番の先頭のレコード
(=もっとも[仕切価格]が安い)ものだけに絞り込まれますので、この状態で
販売.TBLを商品マスターで併合→置換を行います。

もちろん、[型番]で照合、[仕切価格][仕入先]を複写にします。

これでいかがでしょうか。
2524 Re: さくら 1999/8/27-11:05
記事番号2515へのコメント
宮城さん早速のお返事に感激!ありがとうございます。
私の書き方がまずかったみたいです。ごめんなさい。
>>1.商品名・・・商品名/型番を一つの項目にしたい
>まず、型番・商品名はユニークなんでしょうね? 

はい(笑)。本来の型番の後に独自の判別記号が付いている場合が有ります。
また、やっかいな事に商品データ自体は私が入力するわけではないので、
どれに付いているのかは神のみぞ知る・・・・状態です。

>型番から商品名をひかせたほうが賢明な気がしますが・・・・
そう思うのですが、どこにどうすればよいのかがさっぱりわかりません。とほほ・・

>次は商品マスターを次のように並べ替えます。以後、型番だけで説明します。
>[型番]文字符号順(文字列ですよね?)、[仕切価格]昇順
>そして、[型番]で絞り込み→単一化を行います。同一型番の先頭のレコード
>(=もっとも[仕切価格]が安い)ものだけに絞り込まれますので、この状態で
>販売.TBLを商品マスターで併合→置換を行います。
>もちろん、[型番]で照合、[仕切価格][仕入先]を複写にします。

「商品マスター」の作りは、型番に対してずらーっと横にのびているんです。
ですから、[A社の仕切価格]と、[B社の仕切価格]も横に並んでいます。
つまりどちらも項目なわけです。「項目を比較して、安い方を判断させなおかつその
価格はどの会社のものか」を販売.TBLに反映させたいんですが・・・。
何かよい方法はないでしょうか?項目どうしの比較なんて、無理なんですか?
ご存じの方宜しくお願いします。
2529 Re: 宮城 1999/8/27-13:27
記事番号2524へのコメント
>はい(笑)。本来の型番の後に独自の判別記号が付いている場合が有ります。
>また、やっかいな事に商品データ自体は私が入力するわけではないので、
>どれに付いているのかは神のみぞ知る・・・・状態です。

おろ、ここが一番大事なんですよ。レコード・行どちらでもわかりやすい用語で
考えてもらえればいいんですけど、それを特定するkeyがあやふやであれば、ど
うにもなりません。[商品名]が型番と品名をカンマつなぎで入力されている場合、

0001,テレビ
0001,てれび
0001,テレビ

これらは立派な別物です。一字一句違えば、パソコンはアンマッチと扱います。
さらにはスペースがついているかいないかでも。

かような場合は、まず型番の整理から入ります。4桁の半角数字であるが、全角
の場合もあり文字列と仮定します。

#半角(#部分列([商品名],1,4))

先頭から4文字取り出し、半角化する操作をまとめて記述したものです。わかり
ますよね。これで型番はすべて 0001になります。

商品名は別途なんとかマスターという表をつくってそこから項目計算で引かせま
す。

表:なんとかマスター
[型番][商品名]
0001 テレビ

#表引き([型番],=,"なんとかマスター",[型番],[商品名])

いろんなやりかたがありますが、keyだけはしっかり保証して下さい。でないと、
なにやっても無駄です。「入力した人が悪い」 そのいいわけはたぶん通りませ
んでしょう。少なくとも、私はしません。

さて、お次は商品マスターのデータ構造ですが、ちと首をひねります。横にずら
っと持っているなら、入力時、最も安い1件を選んで入れればいいだけのこと。

まあ、それは置いておいて、であれば構造を変えてしまいます。3件持っている
と仮定します。

[型番][仕入先1][仕切価格1][仕入先2][仕切価格2][仕入先3][仕切価格3]

新商品マスターを定義して下さい。

[型番][仕入先][仕切値]

これに商品マスターを3回読み込みます。

1回目:読み込み 表,"商品マスター"¥
          ,{[型番]  [型番]¥
           ,[仕入先] [仕入先1]¥
           ,[仕切価格][仕切価格1]¥
           }
2回目:読み込み 表,"商品マスター"¥
          ,{[型番]  [型番]¥
           ,[仕入先] [仕入先2]¥
           ,[仕切価格][仕切価格2]¥
           }
3回目:読み込み 表,"商品マスター"¥
          ,{[型番]  [型番]¥
           ,[仕入先] [仕入先3]¥
           ,[仕切価格][仕切価格3]¥
           }

これで私の想定していた構造になります。

変数を定義し、仕切価格1から3まで比較しより安ければ変数を当該仕切価格で置
き換えてもいいんですけど、こちらのほうが簡単でしょう。
2530 Re: 宮城 1999/8/27-13:54
記事番号2529へのコメント
>新商品マスターを定義して下さい。
>
>[型番][仕入先][仕切値]

[仕切値]は[仕切価格]のミスです。

ついでにもう一つ。既存マスターに項目追加する手も。

[採用仕入先][採用仕切価格]

項目計算で次のように定義します。

[採用仕切価格]
#横最小2([仕切価格1],[仕切価格2],[仕切価格3])

[採用仕入先]
#条件選択([採用仕切価格]=[仕切価格1],[仕入先1]¥
     ,[採用仕切価格]=[仕切価格2],[仕入先2]¥
     ,1,[仕入先3])

あまりお薦めはしませんが、こういうこともできます。当然、[採用仕入先]
[採用仕切価格]で併合します。
2555 ありがとうございました さくら 1999/8/31-11:39
記事番号2530へのコメント
週末休んでたもんで、お礼が遅くなってごめんなさい。

[採用仕切価格]
#横最小2([仕切価格1],[仕切価格2],[仕切価格3])

[採用仕入先]
#条件選択([採用仕切価格]=[仕切価格1],[仕入先1]¥
     ,[採用仕切価格]=[仕切価格2],[仕入先2]¥
     ,1,[仕入先3])
この式には、本当に感動しました。的確かつ丁寧なご説明ありがとうございました
。これで、何とか、一歩前進です。またちょくちょく寄せていただくと思いますが
、宜しくお願いします。

戻る