みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMP13Adv Win で開発を行っています。
独学でずっとやっているので初歩的な質問になってしまっていたら申し訳ありません。
いつも困っていて避けていることがあります。
テーブルA
AのユニークID クライアント名 次回提出期限
A000001 ○○様
テーブルB
BのユニークID リレーション用AのID レポート名 提出期限 提出済
B000001 A000001 定例報告 14/12/31 1
B000002 A000001 売上報告 15/01/08 1
B000003 A000001 売上報告 15/01/10
B000004 A000001 売上報告 15/02/16
このような構成の時、テーブルAの「次回提出期限」に「テーブルBの提出済みフラグの入っていない最小の日付」を抽出したいのですが、その方法がわかりません。
また、可能であればレポート名もAに引っ張って来たいです。
こちらを実現できるようなリレーションシップの組み方、関数やスクリプトの組み方はありますでしょうか。
リアルタイム更新がベストですが、深夜1回のスクリプト更新でもかまいません。
アドバイスお待ちしています。よろしくお願いいたします。
Bのレコードを表示するポータルを作成し、ソート順を日付の昇順にします。
ポータルフィルタに「提出済フラグが入っていないもの」を設定します。
ポータルに表示された最初のレコードが「テーブルBの提出済みフラグの入っていない最小の日付」のレコードです。
ポータルに移動して好きなフィールドの値を取得すればよいでしょう。
Offline
ポータルを使ってですが
こんなの作ってみました。
Bのテーブルオカレンスを作って、提出期限>Aの日付とします。
もういっこA_idを=で結び、
Aの入力画面に1行か2行の次回提出期限用ポータル(ソート近い順)(ポータルフィルタ IsEmpty ( テーブルB 2::提出済 ) を入れます)を設置すればOK
ダウンロード
(FM13 Win)
あ、
Aテーブルの日付は計算式でGet(日付)非保存じゃないとおかしいですねぇ、ごめんなさい。
アップし直しました。
今、両テーブルにリレーションが設定されているのなら
Aに計算フィールド(式は=1)を作って
A B
ID = AのID
計算フィールド ≠ 提出済み
の新しいリレーション(B2)を作ってB側を提出期限の昇順ソート設定すると
次回提出期限はB2::提出期限
レポート名はB2::レポート名
Offline
>Mozさん
>バロムワンさん
>旅人さん
皆様ありがとうございます!
大変参考になりました。
バロムワンさんには実際にファイルまで作っていただき恐縮です。
実際ポータル式、リレーション式の両方動かしてみましたが、レイアウト表示の自由が効く旅人さんの方法で実装してみようかと思います。
この処理でデータベースが重くなってしまうようであればポータル式に切り替えます。
とても助かりました。ありがとうございます。
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 516.82 KiB (Peak: 521.73 KiB) ]