みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
共有設定でメインPCとサブPCとで同じデータファイルを使っています。
レコードを一覧にし、その中から選択して編集が出来る仕組みにしているので、
メインPCとサブPCとで同じレコードを開かないように明示的な排他をかけたいと思い、
以下のような手順を取りました。
例)メインPCが先にレコードを編集する場合
メインPCで一覧から1レコードを選択し、編集画面へ
↓
そのレコードのキー情報を別テーブルへ登録
↓
サブPCが一覧から同じレコードを選択した場合、選択したレコードのキー情報で
別テーブルを検索。
↓
該当するレコードが存在する場合はダイアログで「別のPCが使用中」と表示。
↓
メインPCが編集終了した時点で、別テーブルのレコードを削除
という手順にしたのですが、メインPCが別テーブルへキー情報を書き込んだ後なのに
サブPCでもそのレコードが開いてしまいました。
[管理]→[データベース]→[テーブル]の手順で別テーブルを見ると、詳細の欄に表示されているレコード数が0のままです。
しかし、メインPCで同手順で見ると1レコードとなっており、さらにその後にサブPCで見ると1レコードに変わっています。
共有設定で上記のようなことはできないのでしょうか・・・
情報をいただけたら嬉しいです。
Offline
>そのレコードのキー情報を別テーブルへ登録
この時レコードを確定してないのでは。
全く無用な処理です。
明示的排他は、「レコードを開く」スクリプトで可能。
>そのレコードのキー情報を別テーブルへ登録
>この時レコードを確定してないのでは。
>全く無用な処理です。
>明示的排他は、「レコードを開く」スクリプトで可能。
回答ありがとうございます。
すいません、もうちょっと詳しく教えて欲しいのですが
1.レコードを確定とは、どういう処理になりますか?
2.「レコードを開く」スクリプトでダイアログにメッセージを出す事ができるのでしょうか?
よろしくお願いいたします。
Offline
画面上の余白をクリックとか、スクリプトでやってるでしょうから「レコード確定」ステップです。
同じレコードを他のPCで開こうとすれば自動的にダイアログが出ます。
「レコードを開く」をしなくても、フィールドに入力し始めた時点で自動的にロックされますし。
「レコードを開く」は、実際に入力する前にあらかじめロックしたい場合だけ必要です。
排他のダイアログメッセージを変更したい場合も、必要か...
エラー処理[オン]
レコードを開く
If[Get(最終エラー)=なんだっけ]
カスタムダイアログを表示["誰かが使用中です"]
EndIf
画面上の余白をクリックとか、スクリプトでやってるでしょうから「レコード確定」ステップです。
同じレコードを他のPCで開こうとすれば自動的にダイアログが出ます。
「レコードを開く」をしなくても、フィールドに入力し始めた時点で自動的にロックされますし。
「レコードを開く」は、実際に入力する前にあらかじめロックしたい場合だけ必要です。排他のダイアログメッセージを変更したい場合も、必要か...
エラー処理[オン]
レコードを開く
If[Get(最終エラー)=なんだっけ]
カスタムダイアログを表示["誰かが使用中です"]
EndIf
申し訳ないです。
説明を楽にするために端折った部分があります。
一覧を表示しているテーブルはSQLServerのView(リンクサーバでPervasiveを紐付け、Pervasiveの中身をViewで参照)でして、そこから編集に移った際にFileMakerのテーブルにレコードを作り、編集完了時にFileMakerDBからまた別のDB(SQLServerを介してリンクサーバに設定しているPervasive)へ書き込みを行っています。
よって、一覧から開くというよりも、一覧から選択されたキーを元に、FileMaker上では新しいレコードを生成、それをPervasiveへUPDATEする、という仕組みにしています。
なので、FileMakerテーブルに登録されているか否かを判断する必要がありました。
Offline
FMのレコードじゃないんですね。。。
最初に書いたとおり、作成したレコードは確定するまで他のクライアントからは見えませんから、レコード確定すればいいです。
>メインPCで同手順で見ると
モード変更とかレイアウト切り替えでも確定します。
キーをユニークに制限しておけば、検索しないでいきなり作成でよさそう。
FMのレコードじゃないんですね。。。
最初に書いたとおり、作成したレコードは確定するまで他のクライアントからは見えませんから、レコード確定すればいいです。
>メインPCで同手順で見ると
モード変更とかレイアウト切り替えでも確定します。キーをユニークに制限しておけば、検索しないでいきなり作成でよさそう。
回答ありがとうございます。
「レコード確定」ですね。やってみます。
Offline
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 516.37 KiB (Peak: 520.91 KiB) ]