みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
レイアウト左側に画像、右側にタブ数枚にそれぞれポータルを設置しています。
リレーションを主キーと外部キー(ポータルごと)しています。
レイアウト全体で登録とキャンセルで制御したいです。
登録ボタンとキャンセルボタンを設置していますが、左側画像のテーブルのみの制御で
タブのポータルに追加や修正したときには対応できていません。
説明が下手ですが、よろしくおねがいします
なんとか制御ができるようになってきた?
ポータルでレコード番号を表示しています。
キャンセルボタンを押しても内容は消えるのですが、レコード番号が残ってしまいます。
レコード番号を表示させないようにしても空白の行が残ってしまいます。
ポータルの右に設置したゴミ箱(ポータル行の削除)では削除できるのですが・・・
onRecordCommitのトリガスクリプトの話ですか?
最近出たFM19.6ではトランザクションが導入されましたね。
onRecordCommitを設定してみたのですが、うまくいかないです・・・
キャンセルをしてもポータルの行が残ってしまいます。
どのようにしたらいいんでしょうか?
新機能のトランザクションが最適ですが。
キャンセルの時には、レコードの復帰を行えば、そのレコードの編集を始めた時点に戻るはずです。ポータルの表示は戻らないことがありますが、関連レコードの実体も戻っているはずです(表示は残ることがあるようですが)。
Offline
ありがとうございます。
新機能のトランザクションが最適ですが。
とのことですが、どのようにすればいいのでしょうか?(当方、初心者です)
キャンセルボタンでレコード復帰にしていますが、レコード番号がのこってしまいます。
簡単な実験してみましたが、レコード復帰してもポータル行だけ残るという状況は再現できませんでした。
共有ファイルですか?バージョンは?
「(表示は残ることがあるようですが)」というので、ウィンドウ内容(かオブジェクト)の再表示しても直りませんか?
トランザクションは、まだ出たばかりの機能なのでちょっと調べてみましたが、「トランザクション」なのでユーザが編集するというのはあんまり想定してない(スクリプトで一気に処理する、途中で問題があった場合に復帰する)みたいな感じもします。(「新規ウインドウ、ウインドウを閉じる、ウインドウを選択」するとトランザクションが確定)
スクリプトを一時停止すると手動で「新規レコード」ができなくなりますから、いろいろ作りこまないと完全なテストはできないようです。
開始と確定がペアになってるので、条件分岐で確定と復帰を選択するようにするとスクリプトの字下げがおかしくなります。
復帰だけステップに条件が付けられるので、開始確定ペアの中に書いて、復帰したら確定ステップの次に自動的に進んでくれるようです。
トランザクションを開く[]
スクリプト一時停止[]
//ユーザが作業。これだと新規レコードはできないのでフィールドとポータル内の新規レコードだけテストした。
カスタムダイアログを表示
トランザクション復帰[Get(最終メッセージ選択)=]
//復帰するとここのステップは実行されない
トランザクション確定
ありがとうございます。
共有で19になります。
キャンセルボタンでレコードの復帰と再表示にしましたが、ポータル内で入力して確定(他をクリック)してから
キャンセルボタンを押しても戻らないです。
トランザクションを開き、確定するには、トランザクションを確定 します。
キャンセルするには、トランザクションを復帰 して、トランザクションを確定 します。
まだ、実用で試していないので、ヘルプを参照ください。
レコード番号が残ってしまう点ですが、関連レコードを作成した後で、レコードを確定していませんか。
ファイルを見せていただくと、色々とわかると思いますが。
Offline
共有といっても正確には共有する予定のものを作成中です。
ポータル上部に明細追加の十字ボタンを設置しています。
そのときにフィールド設定でキーをセットしてるんのですが、それが残ってしまうんでしょうか?
レコードの確定・・・フィールドを抜けたときに確定してしまうのでしょうか?
初心者質問ですみません。
ファイルメーカーサンプル集の車輌管理を参考(コピー)してレイアウトやスクリプトを修正しました。
サンプルには登録キャンセルボタンがなかったので、追加したいのですが・・・
トランザクションを使わないなら、「ポータル内で入力して確定(他をクリック)」してから何をやっても手遅れです。
確定しようとした瞬間にonRecordCommitのトリガスクリプトが実行されて、その中でレコード復帰する処理が必要です。
トランザクションを使う場合は
登録ボタンにトランザクションの開始と確定(この2行+ウィンドウの再表示)だけですか?
キャンセルボタンにトランザクションの復帰
試したら条件を入れないといけないようですが、どのような条件にしたらいいのでしょうか?
キャンセル押してさらにダイアログでキャンセルするか?返答とか?
>トランザクションを使う場合は
違います。キャンセルする可能性のある編集を始める前に「トランザクション開始」しないといけません。
なので人間の作業をトランザクションに入れたい場合は、スクリプトを開始するまで編集が一切できない状態にしておかないとだめです。
#7に流れを書いてますが、
「レイアウト全体で登録とキャンセルで制御したい」わけだから、そのレイアウトに入るonLayoutEnterとか、別のレイアウトのスクリプトからレイアウト切り替えと一緒に「トランザクションを開く」するということも考えられるけど、
そもそもトランザクションの途中でスクリプト一時停止するというのはヘルプの例に出てないので、想定されてる使い方なのかちょっと微妙です。
トランザクションで対応するのはむずかしそうですね。
試行錯誤しながら進めてみます。
またよろしくお願いします。
レイアウトの構成を考えないいけないですが。
トランザクションは簡単ですよ。
トランザクションを開始、トランザクションを確定 の2ステップのスクリプトができます。その間に、必要な処理を入れていきます。手入力が必要なところは、スクリプトを一時停止しておくといいです。そのスクリプトを、OnLayoutEnter と、OnRecoedLoad トリがーで起動させます。
レイアウト上に、確定 と キャンセル のボタンを作り、それぞれ、スクリプトの再開、トランザクションの復帰 を定義しておけばいいだけです。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 592 KiB (Peak: 608.54 KiB) ]