みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております
ポータル内に新規レコードを作成した時に、それがすぐに表示されない件で質問です
状況としては、テーブルA と テーブルB をリレーションしており、テーブルAからは、テーブルBをポータル表示させています
(バージョン5からの変換のため、テーブルBは別ファイルになっています)
テーブルBに新規レコードを作成する際は、テーブルAのレイアウトにてスクリプトを実行。
そのスクリプトでは、テーブルBのスクリプトをサブスクリプトとして実行し、そのテーブルBのスクリプトでレコードを新規作成、必要なコード等を埋め込んで、テーブルAに戻る。といった方法で新規レコードを作成しています
このスクリプトを実行した後、テーブルBを表示させているポータル内に、作成したレコードがすぐに表示されません
ウインドウ内の、フィールドやボタン以外の場所をクリックしてやると表示されます
これでは、この状況を理解しない人が、再度、新規レコードを作ってしまいます
考えられたのは「ウインドウの再表示」をスクリプトステップに入れる方法ですが、上手く行きませんでした。「キャッシュ結合結果を書き込む」にチェックを入れても、変わりがありません
ウインドウを選択「現在のウインドウ」などもスクリプトに入れてみましたが変わりません
試した中で唯一、ウインドウのズームを一旦150%などにし、再度100%に戻すという2つのステップを入れたところ、表示されるようにはなりました。
ただ、この方法ってものすごく邪道かと思います。本来はどうすべきでしょうか?
Offline
FileMakerのバージョンは18です
元々バージョン5で作られていたものを、一旦Ver10を介して18に対応するファイルへと2段階の変換をしていて上手く行かなかったスクリプトを修正しようとしているところです
Offline
クリックすると表示されるのであれば、当該レコードが未確定だということでしょう。
テーブルBのサブスクリプト内の新規作成→フィールド設定の一連の処理の最後に
「レコード/検索条件確定」を入れて、レコードを確定すれば良いと思います。
https://fmhelp.filemaker.com/help/18/fm … uests.html
Last edited by koeda (2019-07-29 01:51:59)
Offline
リレーションの設定で、
新規レコード作成に許可を与えると、
ポータルの最終行に入力ができ、それで関連レコードが作成されます。
これを使えば、
スクリプトの行ったり来たりがなくなり、
ポータルの表示も問題なくなりますよ。
Offline
今のままで動かすのでしたら、ファイルBのスクリプトの最後にレコード確定をいれて、さらに、ファイルA からサブスクリプトを呼び出した後に、ポータルの更新かウィンドウの再表示(キャッシュを保存)を行えばいいはずです。
Offline
koedaさん、チポさん、Shinさんありがとうございます
koedaさん、Shinさんの言われるようにしてみましたが、状況は変わりませんでした
ポータルの更新もウインドウの再表示も両方入れてみましたが、やはりどこかをクリックしないと新規レコードが現れないです
チポさんの言われる案も参考に。考えてみます。
Offline
やはりどこかをクリックしないと新規レコードが現れないです
クリックすれば現れる(=レコードは作成されている)、
ポータル更新やウインドウの再表示を実行してもダメ、
ということは、やはり元のレコードが確定されていないということだと思います。
「レコード/検索条件確定」ステップが、確実に実行される位置に置かれていないのではありませんか?
ポータル最下行からの新規追加は私もよく使いますが、それが最適かどうかはケースによって判断すべきと思います。
例えばひと月31日分を一気に作成したい、ユーザーが簡単に新規追加できないように制限したい、など
今回のようにスクリプトで処理したいケースもあると思います。
Last edited by koeda (2019-07-29 17:30:09)
Offline
レコード確定は、ファイルBのスクリプトの最後
ポータルの更新かウィンドウの再表示(キャッシュを保存)は、ファイルA スクリプトの最後
に入れるのですよ。
Offline
関連レコードを作るのに、
ポータルではなく、関連テーブルで作るメリットって何でしょう?
少なくとも、
#7で挙げられた二つの例では、ポータル上で問題なくできますよね。
Offline
関連レコードを作るのに、
ポータルではなく、関連テーブルで作るメリットって何でしょう?少なくとも、
#7で挙げられた二つの例では、ポータル上で問題なくできますよね。
ポータルの最終行が空白行として表示されるのを嫌うユーザがたまにいるからです。
現行システムでは売上明細は追加ボタンを押してから記入する仕様だった。同じ操作仕様に揃えて。
日報に31日分の明細が既に作成されているのに、なぜ32行目があるの?
5つある支店A、B、C、D、Eがすでに表示されているのだから、6行めは表示しないで
…など
例えば日報システムで、明細は前月末に月次バッチで(でなくても良いけど)1ヶ月分X人数を
あらかじめ作ってしまうという設計にした場合、ユーザに明細行を追加されては困りますので、
リレーションを利用したレコード作成はオフにし、フィールド更新だけできるようにしています。
Last edited by koeda (2019-07-30 09:42:30)
Offline
> ひと月31日分を一気に作成したい、ユーザーが簡単に新規追加できないように制限したい
これがポータル上ではできない様に書かれたので、
そうではないよ、できますよ。
と書いたまでです。
これ以上はスレ主さんにご迷惑でしょうから、以上で打ち切りです。
Offline
ポータルの更新もウインドウの再表示も両方入れてみましたが、やはりどこかをクリックしないと新規レコードが現れないです
ファイルA のスクリプトにも「レコード/検索条件確定」を入れてみましょう。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 545.02 KiB (Peak: 565.92 KiB) ]