みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
今回も初歩的かもしれませんがどうしてもできなかったのでアドバイスいただければありがたいです。
ファイル1に
メーカー品番 仕入先 リレーション
BAT1 A社 バット
BAT2 B社 バット
というのがあり、
ファイル2に
品番 品名 リレーション名 仕入先
BAT1-001 金属バットA バット
BAT1-002 木のバットA バット
BAT2-001 金属バットB バット
BAT2-002 木のバットB バット
というのがあったとします。
それで、ファイル2のメーカー品番にもA社というフィールドを自動で入れたいのですが、
ファイル2のメーカー品番の計算式に
If(Left(品番;4) = ファイル1::メーカー品番; ファイル1::仕入先; 該当なし)
というものを入れたのですが全て該当なしになってしまいます。。。
ファイル2の品番の最初の4文字がファイル1のメーカー品番と同じ場合、ファイル1の仕入先名を返すという方法です。
caseにして1つ1つ追加した場合はちゃんと出るのですが、
メーカーがどんどん増えてきた時に毎回そこのシステムも対応しないのは手間なので、
なんとかならないかと考えています。
お時間ありましたらご教授いただければ幸いです!
Offline
リレーションの設定が分かりません。
このサイトで、
表の様に表示するには半角スペースで縦位置を合わせないとダメです。
全角スペースは半角になってしまいます。
Last edited by チポ (2018-07-03 11:59:58)
Offline
・自己と同じ仕入先の関連テーブル::メーカー品番で 一覧リストを取得して、
・このメーカー品番 リストから1行づつ取り出して、
・自己と同じ品番(前部4文字)が含まれるかを検査し、
・あれば、そのメーカー品番からメーカー名だけを切り出して、ループ終了、
・なければ、次のリスト行へシフト、繰り返しループ試行する、
そんな再帰ループ式で算出する試案:
Let(
[
$lst=List(ファイルAテーブル::メーカー品番);
$key=Left(品番; 4);
$cnt=0;
$res="";
$fnc=
"Case(IsEmpty($res)=0 or $cnt=ValueCount($lst); Choose(IsEmpty($res); $res; \"該当なし\");
Let([
$cnt=$cnt+1;
#itm=GetValue($lst; $cnt);
$res=Case(PatternCount(#itm; $key); Middle(#itm; 6; Length(#itm)))
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
Offline
提示されているデータは、1行1レコードですよね。
ファイル2で、Left ( 品番 ; 4 ) というフィールド「メーカー品番」を作っておきます。
メーカー品番とリレーション名をリレーションしておけば、仕入先は関連レコードとして参照できますし、ルックアップしてもいいと思います。
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 509.05 KiB (Peak: 515.84 KiB) ]