初心者のFileMaker pro Q&A

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

#1 2019-04-23 17:01:40

ひろさん
ゲストユーザー

[解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

FileMaker Server 17での、WebDirect使用時について教えて下さい。

WebDirectで、開いているデータベースのウインドウを閉じる時、スクリプトを実行出来ないでしょうか?

FileMakerアプリケーションで開いている場合は、
スクリプトトリガ、OnLastWindowCloseにスクリプトを指定しています。
アプリケーション上では、正常に動いています。

同じスクリプトをWebDirectでログインして、ブラウザウインドウを閉じる時に
スクリプト実行したいのですが、方法が分かりません。

どなたかご教授頂けないでしょうか。よろしくお願い致します。

#2 2019-04-23 19:09:24

qb_dp
メンバー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

OnLastWindowClose - FileMaker WebDirect  でのサポートは、「はい」になっているので大丈夫なようですが...。
WebDirect 非対応のスクリプトを使っているとか?
スクリプトワークスペースで「互換性」-「FileMaker WebDirect 」を選択すると、非対応のスクリプトはグレーアウトします。

OnLastWindowClose
https://fmhelp.filemaker.com/help/17/fm … close.html

オフライン

#3 2019-04-24 12:07:08

ひろさん
ゲストユーザー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

qb_dp様

ありがとうございます。

WebDirect 非対応のスクリプトになっていないか、確認しましたが問題ありません。

実行したいスクリプトは以下の通りです。

エラー処理[オン]
変数を設定[$IDA; 値:Get(アカウント名)]
レイアウトの切り替え[(「IDテーブル」(IDテーブル);アニメーション:なし]
#検索条件(IDテーブル::アカウント名==$IDA)で検索
検索実行[記憶する]
If [IDテーブル::ログイン=1]
#通常の終了時は0にする
   フィールド設定 [IDテーブル::ログイン;0]
Else
#重複エラーから終了の時は1にする
フィールド設定 [IDテーブル::ログイン;1]
End If


※ログイン時に、IDテーブルのログインフィールドを1にしてからログインしています。
終了する時に、1から0に戻して終了させて、重複ログインを防いでいます。

もしかしたら、全く別の方法でやりたい事ができるのかもしれませんが、
こんな方法しか思いつきませんでした。
重複ログイン出来ないようにする、別の方法があったらそれでもいいのですが…。

よろしくお願い致します。

#4 2019-04-24 19:09:58

qb_dp
メンバー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

ログイン時に、「IDテーブル::ログイン;1 」の値を何かに書き換えているのでしょうか?もしそうならその処理はおすすめしませんが...。

サーバーサイドスクリプトのデバッグには、手間がかかりますが、一度以下のような方法でデバッグをおすすめします。

サーバーサイドスクリプトのデバッグ|初心者のFileMaker pro Q&A
https://fm-aid.com/bbs2/viewtopic.php?pid=25792#p25792

FileMaker Go や FileMaker Server 上のスクリプトのデバッグ
https://qbxxdp.blogspot.com/2018/02/fil … gging.html

※何かトラブルでログアウトの処理が出来なかった場合、「IDテーブル::ログイン;1 」がのこったままになり、ログイン出来ないことがあり得るので、
重複ログインの規制処理はおすすめしません。
重複ログインだと困る事とは、どの様な事でしょう?目的が分かれば、他に解決策があるような...。

オフライン

#5 2019-04-24 19:32:02

qb_dp
メンバー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

おっと、以下に答えがありました。

FileMaker 17 WebDirect ガイド
https://fmhelp.filemaker.com/docs/17/ja … ts_scripts

Web ユーザがブラウザウインドウを閉じるか、または Web ブラウザの更新ボタンをクリックした場合、FileMaker WebDirect はサインアウト、または OnWindowClose および OnLastWindowClose スクリプトトリガをアクティブにすることなく現在のセッションを離れます。Web ユーザが更新ボタンをクリックすると、FileMaker WebDirect は OnFirstWindowOpen および OnWindowOpen スクリプトトリガをアクティブにして FileMaker Server または FileMaker Cloud への新しい接続を作成します。

OnLastWindowClose は、WebDirect自体のメニュー「ファイルを閉じる」のみに反応するようです。

オフライン

#6 2019-04-25 14:06:24

ひろさん
ゲストユーザー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

qb_dp様

お調べ頂き、誠にありがとうございます。
マニュアルのチェックを怠らないように気をつけます。

おっしゃる通り、「IDテーブル::ログイン;1 」がのこったままになり、ログイン出来ない状態になっていました。
これはまた別の方法を考えようと思っていました。

重複ログインだと「困る」という訳ではないのですが、「出来ない」様にしたかったということです。

なぜかと言うと、少し話がそれますが、以前開発したデータベースで、
Excelデータを読み込ませるテーブルを指定しておき、データインポートして検索させるスクリプトを作りました。
そのテーブルを、複数のユーザが同時にインポートしたらデータが置き換わってしまいますよね。

それを防ぐ為に、アカウント毎にインポート用テーブルを作る方法しか分からず、テーブルをどんどん増やしてしまいました。
そんな作り方をしてしまった為、万が一同じアカウントでログインすると、テーブルのデータが変わってしまうので
重複ログイン出来ないようにしようとした経験があります。(実際にはやっていませんが、まだこのまま放置しています)

そんな経験から、今回質問した開発中データベースでは、初めから重複ログイン出来ないようにした方がいいかと思い、
前に書いたスクリプトを使う事にしました。

ところが開発途中で、ブラウザで使用したいという要望が出ましたので、
WebDirectでの動作確認をすると、スクリプトが動かなかったという経緯です。

おそらく、基本的なやり方を理解できていないのが原因だと思っています。
今回のスクリプトは使わず、運用面での対策を考えたいと思います。

長文、乱文、誠に失礼致しました。
qb_dp様、貴重なお時間を頂き、感謝しています。

#7 2019-04-26 14:28:35

qb_dp
メンバー

Re: [解決] WebDirectでブラウザのウインドウを閉じる時のスクリプト実行

例えば、
ログイン時に Get (UUID 番号) でセッションIDを作成。
Excelデータインポート時にセッションIDを設定。
こうすれば、セッションID で、検索対象となるレコードが判別出来ます。
検索は、 セッションID AND キーワードで。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer