みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
WIN7 FM14 adv
WIN2008 FMS14
いつもご質問させていただいておりありがとうございます。
集計?LIST?どうしたらいいかわからず困っている内容です。
1レコード1貨物1運転手が基準のレコードがあります。
Aさんの1日の配達状況を配達日で絞り込むと(発地↓着地↓ソート)
大阪 神戸
大阪 神戸
大阪 神戸
大阪 神戸
神戸 大阪
神戸 大阪
神戸 大阪
大阪 名古屋
大阪 名古屋
大阪 名古屋
というレコードが集まります。
この運転手の日報(別ファイル)に
スクリプトで
フィールド配達内容
のところに
大阪⇒神戸:4 神戸⇒大阪:3 大阪⇒名古屋:3
といった形でデータを入力したいです。(集計結果と呼ぶんですかね?)
元ファイルを開く
該当運転手の氏名・配達日で検索
発地↓着地↓でソート
????
????
日報ファイルへ戻る
フィールド設定::配達内容:::??????
ステップはこんな感じがいいなと思いつつ一番大事なところができませんでした。
教えて頂ければ幸いです。
根本的に不可であれば違った方法も教えて頂ければ幸いです。
Offline
1日のうちで、神戸⇒大阪、大阪⇒神戸、神戸⇒大阪、という様な動きがあると思いますので、その中の神戸⇒大阪 の2回を区分するための情報が必要です。何かありますか。
Offline
1日のうちで、神戸⇒大阪、大阪⇒神戸、神戸⇒大阪、という様な動きがあると思いますので、その中の神戸⇒大阪 の2回を区分するための情報が必要です。何かありますか。
ご指摘ありがとうございます。
今回そこに関しては評価する必要はありません。
神戸⇒大阪:4が午前、
神戸⇒大阪:3が夕方最終
という運行になっても日報には
神戸⇒大阪:7というデータが入れば問題ありません。
よろしくお願いします。
Offline
配達テーブル(勝手に命名しました^^)
で自己リレーション
運転手
and
日付
and
発地
and
着地
(全て「=」で照合)
として、計算フィールド
Count (自己リレーション::運転手 )
で目的の集計は出来ます。
これを、日報のレイアウトにポータルを置いて表示できます。
このままでは関連レコード全て表示されます。
集計結果だけの表示なら、
発地 & 着地
ごとに各ひとつずつ表示する工夫が必要ですね。
お分かりにならなければお尋ね下さい。
Offline
チポさま
ありがとうございます。
自己リレーション後
テストフィールドに全置換にて
COUNTしてみました
大阪 神戸 4
大阪 神戸 4
大阪 神戸 4
大阪 神戸 4
神戸 大阪 3
神戸 大阪 3
神戸 大阪 3
大阪 名古屋 3
大阪 名古屋 3
大阪 名古屋 3
カウントの結果は正しく表示されました。
申し訳ありませんがポータルを表示させるのではなく
この結果から同テーブルのグローバルフィールドや変数でも構いませんので
大阪⇒神戸:4 神戸⇒大阪:3 大阪⇒名古屋:3
この形を入力させる方法は難しいでしょうか。
日報テーブルはレイアウトの構造上(寸法上?)
ポータルの配置は難しく(ポータルはフィルタをかけて上記結果だと3行必要ですよね)
実現しようとしている集計の情報は小さくメモ程度で表示させたいので
ひとつのフィールドに上記結果を入れていきたいです。
Offline
同グループの内ひとつだけに表示するようにカウントのフィールドを変更します。
シリアル番号等ユニークなフィールドを作り、
計算式
Case ( シリアル = 自己リレーション::シリアル ; 発地 & "⇨" & 着地 & ":" & Count (自己リレーション::運転手 ) )
日報で、このフィールドのListを得て、
その ¶ を空白等に変換すればいいですね。
Offline
見た目が1行になっていればいいなら、
ExecuteSQL ( "select \"発地\",\"着地\",count(*) from \"テーブル\" group by \"発地\",\"着地\"" ; "" ; " " )
戻り値:大阪,名古屋,3 大阪,神戸,4 神戸,大阪,3
"発地⇒着地" という表示が固定なら 発地 & "⇒" & 着地 という計算フィールドを作ります。
例)「発着地」として作成した場合、
ExecuteSQL ( "select \"発着地\",count(*) from \"テーブル\" group by \"発着地\"" ; ":" ; " " )
戻り値:大阪⇒名古屋:3 大阪⇒神戸:4 神戸⇒大阪:3
とか、、、思いつきですが。
フィールド名は適宜実際にあわせてく獺祭。
Last edited by Moz (2016-02-16 14:35:33)
Offline
配達日と担当者があるのですな(汗)
ExecuteSQL ( "select \"発着地\",count(*) from \"テーブル\" where \"担当者\" = ? and \"配達日\" = ? group by \"発着地\"" ; ":" ; " " ; 担当者フィールド ; 配達日フィールド )
こんな感じで。
追記)
すみません。切れとりました。
Last edited by Moz (2016-02-16 14:35:05)
Offline
同グループの内ひとつだけに表示するようにカウントのフィールドを変更します。
シリアル番号等ユニークなフィールドを作り、
計算式
Case ( シリアル = 自己リレーション::シリアル ; 発地 & "⇨" & 着地 & ":" & Count (自己リレーション::運転手 ) )日報で、このフィールドのListを得て、
その ¶ を空白等に変換すればいいですね。
Case ( シリアル = 自己リレーション::シリアル ; 発地 & "⇨" & 着地 & ":" & Count (自己リレーション::運転手 ) )
これすごいです。
あとは改行削除で望み通りになりました。
もともとユニークなシリアルのデータはあったので。
でもなぜシリアル=自己リレーション::シリアルを加えるだけで
ひとつだけに表示されたんでしょうか。
差し支えなければ解説頂ければ幸いです。
Offline
配達日と担当者があるのですな(汗)
ExecuteSQL ( "select \"発着地\",count(*) from \"テーブル\" where \"担当者\" = ? and \"配達日\" = ? group by \"発着地\"" ; ":" ; " " ; 担当者フィールド ; 配達日フィールド )
こんな感じで。
追記)
すみません。切れとりました。
ExecuteSQL
この単語、SQLという単語から今も逃げてます。汗
いきなり難しい見た目になりますよね。
そろそろそういう視点も勉強していこうと思うので参考になりました、ありがとうございます。
Offline
リレーションには、照合順が有ります。
リレーションの設定でソート順が有りますが、その設定が有ればソートされた順
設定がなければ、レコード作成順(レコードID順ですね)になります。
で
自己リレーション::シリアル
これは照合順1番の値を返します。
ですから、
前の計算式は、照合順1番のレコードのみ値が入り、
他は空白になります。
Offline
お求めの日次集計結果をFM標準関数から計算式で取得する作例。
データ入力・編集を反映した集計結果を即時自動更新できます。
●サンプル「配達管理.fmp12」→ http://yahoo.jp/box/eQe645
Offline
リレーションには、照合順が有ります。
リレーションの設定でソート順が有りますが、その設定が有ればソートされた順
設定がなければ、レコード作成順(レコードID順ですね)になります。で
自己リレーション::シリアル
これは照合順1番の値を返します。
ですから、
前の計算式は、照合順1番のレコードのみ値が入り、
他は空白になります。
解説ありがとうございます。
納得できて非常に助かりました。
またよろしくお願いします!!
Offline
お求めの日次集計結果をFM標準関数から計算式で取得する作例。
データ入力・編集を反映した集計結果を即時自動更新できます。●サンプル「配達管理.fmp12」→ http://yahoo.jp/box/eQe645
サンプル拝見しました。
作りを勉強して活用させてもらいます。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 553.35 KiB (Peak: 574.26 KiB) ]