みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM18を使っていますが、昔からこのような場合のスクリプトで迷っていました。
皆さんはどうされているでしょうか?
・ポータル行内に、ユーザーが入力できるフィールドがある
・ポータル行内に、スクリプトの実行ボタンがある
このような場合に、入力フィールドに文字を入れる→スクリプト実行ボタン とダイレクトに操作されてしまうと
入力フィールドが確定しないままスクリプトが進んでしまいます。
かといってフィールドの確定ステップを挟むと、ポータル1行目に対してスクリプトが実行されてしまいます。
「入力したらいったんフィールド外をクリックしてからスクリプト実行ボタンを押す」
というルールを作っても守られる保証がなく、トラブルのもとになります。
割とよくある問題かもしれませんが、どうやって解決されていますでしょうか。
フィールドを確定してそのフィールドに留まる。
がご希望なら、
次のフィールドへ移動
前のフィールドへ移動
とすればいいのでは。
Offline
「フィールドを確定」とは?
問題となるシーンがあまり具体的にイメージできないのですが…
https://fmhelp.filemaker.com/help/18/fm … -data.html
関連データ (ポータルに表示される関連レコードなど) への変更は、関連データを表示しているレコードが確定されるまで適用されません。
上記ヘルプにもあるように、ポータルなど関連レコードを確定させるには、元レコードを確定する必要があります。
レコード確定のために「レコード/検索条件確定」ステップを実行する
→その副作用としてポータル行からフォーカスが外れてしまう(「フィールド外をクリックする」のと同じことですので)
この解決が課題だとしたら、
以下のように
1)ボタンクリック時に行番号を覚えておき、
2)レコード確定後に、クリックしたポータル行へ再度移動する
のはどうでしょうか?
変数を設定 [ $activeLine; 値:Get ( アクティブポータル行番号 ) ]
レコード/検索条件確定[ ダイアログなし ]
オブジェクトへ移動 [ オブジェクト名: "PortalName" ]
ポータル内の行へ移動 [ $activeLine ] [ 選択; ダイアログなし ]
…
(以下、そのポータル行に/で行いたい処理)
Last edited by koeda (2020-06-17 09:41:00)
Offline
質問のしかたが曖昧で申し訳ありません。
チポさん、koedaさん ご想像のとおりの状態でした。
ポータル内のフィールドへ入力した内容を「レコード/検索条件確定」で確定しようとすると
ポータル行のフォーカスが外れ、ポータル1行目に対してその後のスクリプト処理が行われてしまう
という状態を解消したかったのです。
いくつものやり方があること、勉強になりました。
今回は入力欄以外の他のフィールドが無かったので
-------------------------------
変数を設定 [ $activeLine; 値:Get ( アクティブポータル行番号 ) ]
レコード/検索条件確定[ ダイアログなし ]
オブジェクトへ移動 [ オブジェクト名: "PortalName" ]
ポータル内の行へ移動 [ $activeLine ] [ 選択; ダイアログなし ]
-------------------------------
このやりかたで希望のイメージ通りの動作にすることができました。
ありがとうございます!
終わっていますが、、
私の方法はフィールド一つでも機能しますよ。
ポータルのフィールドならポータル行を移動します。
Offline
Pages: 1
[ Generated in 0.014 seconds, 9 queries executed - Memory usage: 513.9 KiB (Peak: 518.8 KiB) ]