みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Server 17での、WebDirect使用時について教えて下さい。
WebDirectで、開いているデータベースのウインドウを閉じる時、スクリプトを実行出来ないでしょうか?
FileMakerアプリケーションで開いている場合は、
スクリプトトリガ、OnLastWindowCloseにスクリプトを指定しています。
アプリケーション上では、正常に動いています。
同じスクリプトをWebDirectでログインして、ブラウザウインドウを閉じる時に
スクリプト実行したいのですが、方法が分かりません。
どなたかご教授頂けないでしょうか。よろしくお願い致します。
OnLastWindowClose - FileMaker WebDirect でのサポートは、「はい」になっているので大丈夫なようですが...。
WebDirect 非対応のスクリプトを使っているとか?
スクリプトワークスペースで「互換性」-「FileMaker WebDirect 」を選択すると、非対応のスクリプトはグレーアウトします。
OnLastWindowClose
https://fmhelp.filemaker.com/help/17/fm … close.html
Offline
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に戻して終了させて、重複ログインを防いでいます。
もしかしたら、全く別の方法でやりたい事ができるのかもしれませんが、
こんな方法しか思いつきませんでした。
重複ログイン出来ないようにする、別の方法があったらそれでもいいのですが…。
よろしくお願い致します。
ログイン時に、「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 」がのこったままになり、ログイン出来ないことがあり得るので、
重複ログインの規制処理はおすすめしません。
重複ログインだと困る事とは、どの様な事でしょう?目的が分かれば、他に解決策があるような...。
Offline
おっと、以下に答えがありました。
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自体のメニュー「ファイルを閉じる」のみに反応するようです。
Offline
qb_dp様
お調べ頂き、誠にありがとうございます。
マニュアルのチェックを怠らないように気をつけます。
おっしゃる通り、「IDテーブル::ログイン;1 」がのこったままになり、ログイン出来ない状態になっていました。
これはまた別の方法を考えようと思っていました。
重複ログインだと「困る」という訳ではないのですが、「出来ない」様にしたかったということです。
なぜかと言うと、少し話がそれますが、以前開発したデータベースで、
Excelデータを読み込ませるテーブルを指定しておき、データインポートして検索させるスクリプトを作りました。
そのテーブルを、複数のユーザが同時にインポートしたらデータが置き換わってしまいますよね。
それを防ぐ為に、アカウント毎にインポート用テーブルを作る方法しか分からず、テーブルをどんどん増やしてしまいました。
そんな作り方をしてしまった為、万が一同じアカウントでログインすると、テーブルのデータが変わってしまうので
重複ログイン出来ないようにしようとした経験があります。(実際にはやっていませんが、まだこのまま放置しています)
そんな経験から、今回質問した開発中データベースでは、初めから重複ログイン出来ないようにした方がいいかと思い、
前に書いたスクリプトを使う事にしました。
ところが開発途中で、ブラウザで使用したいという要望が出ましたので、
WebDirectでの動作確認をすると、スクリプトが動かなかったという経緯です。
おそらく、基本的なやり方を理解できていないのが原因だと思っています。
今回のスクリプトは使わず、運用面での対策を考えたいと思います。
長文、乱文、誠に失礼致しました。
qb_dp様、貴重なお時間を頂き、感謝しています。
例えば、
ログイン時に Get (UUID 番号) でセッションIDを作成。
Excelデータインポート時にセッションIDを設定。
こうすれば、セッションID で、検索対象となるレコードが判別出来ます。
検索は、 セッションID AND キーワードで。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 521.58 KiB (Peak: 526.48 KiB) ]