みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも利用させていただいています。
まずは、前提としての質問として、リーレーション先の変更が
スクリプトで可能かということです。
ABCという3本のテーブルがあったとして
Aを起動したとき、条件によってリレーションするテーブルをBやCに
変更する。こんなことが可能なのでしょうか?
当方の環境は、
OS:Win7
FM:FM11Pro
です。
当方は、現在製品工場で工程管理と在庫管理などにファイルメーカーを
使用しています。
扱っている商品は、いろいろとありそれぞれが違う作業工程で製品が
製造されるんですが、一部共通の作業が入る部分があり
それを一つのテーブルで見れないかと思った次第です。
例に挙げた、ABCのテーブルというのは、1本1本が独立したファイルになって
います。
わかりづらい説明しかできなくて申し訳ありませんが
どなたかご教授いただけると幸いです。
どんなリレーションで、関連レコードをどのように利用したいのかが
分からないと答えようが無いような。
内容を見るだけならB用C用のレイアウトを作るだけ?
Offline
旅人様、早速の返信ありがとうございます。
どんなリレーションで、関連レコードをどのように利用したいのかが
分からないと答えようが無いような。
内容を見るだけならB用C用のレイアウトを作るだけ?
すいません。なかなかうまく説明ができなくて。
例えば、当方には検査出荷部という部門があります。
そこでは、製造ラインに関係なくそれぞれの製造ラインから
できた製品が集まってきて検査して出荷します。
検査をする際、前工程での情報を参照する必要があるので
前工程の情報をルックアップするためにリレーションを張ります。
生産データはそれぞれのファイルに保存されているので
それぞれのファイルに対してリレーションを張るためにスクリプトで
リレーション先を変更できないかと思ったわけです。
製品には、製品CDというユニークなコードがあるので
コード内容により、B、Cどちらの商品をかを判定するか
両方のテーブルを見て同じものがある方からデータを参照できないかと
いうわけです。
イメージとしては、
テーブルA テーブルB
製品CD--- 製品CD
製品名 \ 製品名
個数 \ など
など \
\ テーブルC
\製品CD
製品名
など
こんな感じにできないかと思っています。
テーブルBとテーブルCは一つのテーブルにして、どちらのラインで製造されたかを持たせるフィールドを作るのが、常套だと思いますが。そうすれば、リレーションも1個で済みますね。
ライン毎にアクセス制限を書けたいのならば、そのフィールドを基にしてアクセス制限可能です。
Offline
Shin様、返信ありがとうございます。
テーブルBとテーブルCは一つのテーブルにして、どちらのラインで製造されたかを持たせるフィールドを作るのが、常套だと思いますが。そうすれば、リレーションも1個で済みますね。
ライン毎にアクセス制限を書けたいのならば、そのフィールドを基にしてアクセス制限可能です。
う~~ん、そうしたいのはやまやまなんですが
BラインもCラインも同時進行で製造を行っているので同時入力が起こることが多いのです。
入力がストレスなく行えるように2つに分けました。
なので、2つのファイルから参照できるようにしたいのです。
ファイル共有を行なっているのでしたら、1テーブルへの複数のクライアントのアクセスは、独立して行なわれますし、相互にストレスとなる様なことはありません。もちろん、同じレコードへの同時変更は無理ですが、ラインが異なれば同じレコードへアクセスする事はあり得ませんので、同時入力も何ら問題有りません。
2個のリレーション先からの情報の参照は出来なくも有りませんが、構造や条件が複雑になり、そちらの方がストレスになると思いますが。
Offline
Shin様、返信ありがとうございます。
ファイル共有を行なっているのでしたら、1テーブルへの複数のクライアントのアクセスは、独立して行なわれますし、相互にストレスとなる様なことはありません。もちろん、同じレコードへの同時変更は無理ですが、ラインが異なれば同じレコードへアクセスする事はあり得ませんので、同時入力も何ら問題有りません。
2個のリレーション先からの情報の参照は出来なくも有りませんが、構造や条件が複雑になり、そちらの方がストレスになると思いますが。
なるほど、そうなんですね。ありがとうございました。
ただ、ちょっと説明が足りなかった部分がありました。
というのも、製品によって作業工程が違うということです。
例えば、製品Bは1から5までの行程を順番に行って完成しますが
製品Cは1から3までの行程で完成するという場合に出荷部として参照する
前工程は3と5の2つになります。
このような場合に、2つのファイルからデータを参照するためにリレーションを
都度変更できないかという質問でした。
説明不足で申し訳ありません。
それでも1テーブルがお薦めです。
製品の製造過程の1工程毎に、別テーブルへ1レコードとして記録してけば良いでしょう。
このようなデータベースの設計は、入力をベースに考えるか、商品をベースに考えるかですが、商品をベースに考えて、入力者側のインターフェースを変えていく方が、商品を管理するデータベースとしては正解だと思います。
Offline
Shin様、返信ありがとうございます。
それでも1テーブルがお薦めです。
製品の製造過程の1工程毎に、別テーブルへ1レコードとして記録してけば良いでしょう。
このようなデータベースの設計は、入力をベースに考えるか、商品をベースに考えるかですが、商品をベースに考えて、入力者側のインターフェースを変えていく方が、商品を管理するデータベースとしては正解だと思います。
なるほど。そうなんですね。
やっぱり普通そうシステム構築しますよね。
当方の環境としては、製造ラインが5ライン作業工程が最大で約30工程。
その工程ごとに、独立したファイルメーカーファイルを作成してそこに入力。
必要な時にそこからルックアップしてデータを参照するという感じでシステムが
構築されています。
私自身は、長年アクセスでの開発経験がありますがファイルメーカーでの
開発の現場は、今回が初めてで現場に入った時点ですでにこのような
やり方でシステムが構築されていました。
入った時点で、少し違和感がありましたがファイルメーカーではこうして組むのが
普通なのかと思っていましたが、どうやら当方の組み方がイレギュラーな
方法のようですね。
ただ、すでにシステムの大半がこのような形で構築されているので
それを変えるとなると、システムの根幹から作り変えないといけなくなってしまうので
それは現実的無理だと思います。(1派遣社員の力では到底無理です。)
なので、現状のシステム形態を維持しつつ開発せざるを得ないので
何か他の方法を考えてみます。
・・・無理して一つのファイルで読むのではなく1製造ラインに1つずつ、ファイルを作ってしまったほうが楽かな~~
私もShinさんと同意見ですが、
現状のファイル構成のままの方法を考えるとして、、
説明がよく分かりません。
テーブルAの製品CDによって、関連するテーブルは一つに決まるのですか?
決まったとして、
前工程の情報をルックアップするために
目的はルックアップだけですか?
また、
ルックアップするレコードはどのように決定できるのですか?
Offline
チポ様、返信ありがとうございます。
目的はルックアップだけですか?
そうですね、目的はルックアップです。
あ、でも集計もしたいので参照だけではないですね。
ルックアップするレコードはどのように決定できるのですか?
製品CDがユニークですので、見に行くテーブルは決定できます。
ならば、
ルックアップは
LookUp ( テーブルB ::ソースフィールド ; LookUp ( テーブルC ::ソースフィールド ; LookUp ( テーブルD ::ソースフィールド ;・・・ ) )
とネストすればいいでしょう。
集計は、
各関連テーブルの集計の合計でいいのでは。
Last edited by チポ (2015-12-16 10:24:21)
Offline
チポ様、返信ありがとうございます。
ならば、
ルックアップは
LookUp ( テーブルB ::ソースフィールド ; LookUp ( テーブルC ::ソースフィールド ; LookUp ( テーブルD ::ソースフィールド ;・・・ ) )
とネストすればいいでしょう。集計は、
各関連テーブルの集計の合計でいいのでは。
おお!やはりその方法ですか。
というのも、ここに相談させていただきながら他のサイトやネットに落ちてるサンプルファイルなどを
見て自分なりに解析してみたりすると、実現するにはチポ様の方法が一番いいのでは?
と思っていたところでした。
この方法で、試してみます。
ありがとうございました。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 555.77 KiB (Peak: 576.3 KiB) ]