みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Listist様、チポ様
何とも説明が分かりにくく申し訳ございません。
整理してみたのですがかなり無理があります。
flagで集計をする等別の方法を考えてみます。
ありがとうございました。
-----------------------------------------------------------------
以下書きながら無理があると思ったのでボツとさせて下さい
-----------------------------------------------------------------
受注::品名を追加して説明させて下さい。
受注::品名[1月号] 受注::ID[133001] 受注::LastID[ ]
受注::品名[2月号] 受注::ID[133002] 受注::LastID[133001]
受注::品名[3月号] 受注::ID[133003] 受注::LastID[133002]
受注::品名[4月号] 受注::ID[133004] 受注::LastID[133003]
受注::品名[5月号] 受注::ID[133005] 受注::LastID[133004]
受注::品名[6月号] 受注::ID[133006] 受注::LastID[133005]
受注::品名[7月号] 受注::ID[133007] 受注::LastID[133006]
と7レコードあるとします。
受注::品名[6月号]は受注::品名[5月号]を複製したレコードです。その際に複製元IDとして受注::LastID[133005]を入力します。
受注::品名[7月号]は受注::品名[6月号]を複製したレコードです。その際に複製元IDとして受注::LastID[133006]を入力します。
この様に1月号から毎月複製されたレコードとなっている状態です。
各々のレコードには関連レコードとして複数の日報テーブルのレコードが存在しています。
受注テーブルから見ると日報::Timeの合計が以下の値とします。
※受注::合計時間を追加させて下さい
受注::品名[1月号] 受注::合計時間[60]
受注::品名[2月号] 受注::合計時間[80]
受注::品名[3月号] 受注::合計時間[50]
受注::品名[4月号] 受注::合計時間[40]
受注::品名[5月号] 受注::合計時間[70]
受注::品名[6月号] 受注::合計時間[90]
受注::品名[7月号] 受注::合計時間[20]
受注::品名[6月号]のレコードでは60+80+50+40+70=300となり平均は60となるようにしたいのです。
さらに欲を言えば日報::IDに受注::品名IDを入力すると同様の値が取れないかという事です。
いつも勉強させていただいております。
以下の事が出来るかどうかご教授いただければと思います。
環境はWin7Pro FM12Adv(Server12Adv)です。
テーブルは受注テーブルと日報テーブルの2つです。
受注テーブル
1.受注を行うと受注::IDにユニークな値が自動入力されます。
2.その受注がリピート同等の場合(雑誌4月号に対して5月号を受注したイメージ)は受注::LastIDに前回の受注::IDの数値を手入力します。
テーブル
受注
フィールド
受注::ID
受注::LastID
日報テーブル
1.作業者は日報に作業をする受注::IDを日報::IDに手入力します。
2.日報::LastIDに前回の受注::IDがルックアップされます(受注::IDと日報::IDのリレーション)。
3.作業者は作業時間を日報::Timeに手入力します。
テーブル
日報
フィールド
日報::ID
日報::LastID
日報::Time
この様に入力を行うのですが日報::IDを起点をして過去5回分の日報Timeの平均時間を出すことは可能なのでしょうか?
過去5回分とは以下の様なイメージです。
日報::ID 1331001 日報::LastID ****** 日報::Time 10分
日報::ID 1331001 日報::LastID ****** 日報::Time 20分
日報::ID 1331002 日報::LastID 1331001 日報::Time 05分
日報::ID 1331002 日報::LastID 1331001 日報::Time 15分
日報::ID 1331003 日報::LastID 1331002 日報::Time 30分
日報::ID 1331004 日報::LastID 1331003 日報::Time 02分
日報::ID 1331005 日報::LastID 1331004 日報::Time 08分
日報::ID 1331006 日報::LastID 1331005 日報::Time 30分
日報::ID 1331006を現在のレコードとした場合は1331001~1331005までの日報::Timeの平均時間
なお、日報::LastIDは日報::IDに対して必ずしもひとつ前の番号とは限りません。
私は検索モードで新規検索条件を5個作って検索をすれば良いかな?と思ったのですが、作業者からは過去5回分の番号を調べるのが手間なので現在のレコードの日報::LastIDから自動で遡れないかと要望しています。
そんなことが出来るものなのでしょうか?
fujisan様
私も同様の症状で不思議に思っていました。
情報ありがとうございます。
環境:Mac Os X 10.7.5 FileMakerPro12 Adv
チポ様
ありがとうございます。
ご指南いただきました方法で作ることにいたしました。
FM12使っていないので、
ExecuteSQL関数
分かりませんが。。Scheduleテーブルでグローバルフィールドを作り、onと入力。
これと、Switchとでリレーションして、その動的値一覧でいいでしょう。
SQLExecuter様
Scheduleテーブル側のフィールド値によって値一覧を変えるわけではないので動的という言葉を使うか迷いました。
やはりStaffテーブルのフィールド値の変更によって値一覧の内容を制御するのは難しそうですね。
みなさまありがとうございました。
ゲスト様
すいません、ExecuteSQL使ってみたかったので。
この例だと、Staffテーブルのフィールドにして
Case(Swith="on";Name)
でいいので、ExecuteSQLの必要性がないですし。
ゲスト様
やはり動的には使えないですよね。
う~ん、もう少し考えてみます。
計算結果を保存しないと値一覧に使えないと思いますが、そうするとSwitchを変更しても計算結果が変わらないので動的になりません。
Staffテーブルのグローバルフィールドにして、Evaluate(ExecuteSQL(~~);Switch)とか。
しかしレコードの追加(はいいのかな?)・削除時には反映されそうにない...
新しい掲示板を作っていただきましてありがとうございます。
今後もよろしくお願いいたします。
環境:Win7 FMPro12Adv
テーブル名:Staff
フィールド名:Name
フィールド名:Switch
テーブル名:Schedule
フィールド名:Name
フィールド名:VL_Name(ExecuteSQLの計算フィールド)
ExecuteSQLを使用してStaff::Switchがonの場合にはSchedule::NameにStaff::Nameが表示される動的値一覧を作ってみようと思い以下の計算式を作成してみました。
ExecuteSQL ( "SELECT Name FROM Staff WHERE Switch = ?" ; "" ; "" ; "on" )
この場合、Staff::SwitchをonするとStaff::Nameは値一覧に表示されました。
しかし、Staff::Switchをブランクにしても値一覧に表示されてしまいます。
まだExecuteSQLがよく分かっていないので以下の式にしてみました。
ExecuteSQL ( "SELECT Name FROM Staff WHERE Switch = 'on'" ; "" ; "" )
挙動が同じだけで意味はありませんでした。この2式の違いもよく分かっていませんが・・・
索引の問題かと思い、Schedule::VL_Nameの索引をフィールド定義にてクリアすると期待通り値一覧に表示されなくなりました。
この挙動からするとExecuteSQLを動的値一覧的に使用することには無理があるのでしょうか?
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 544.94 KiB (Peak: 565.85 KiB) ]