初心者のFileMaker pro Q&A (旧掲示板)

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

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-01-17 09:02:56

mecchi
Member

共有設定でレコードの反映が遅い?

お世話になります。

共有設定でメインPCとサブPCとで同じデータファイルを使っています。
レコードを一覧にし、その中から選択して編集が出来る仕組みにしているので、
メインPCとサブPCとで同じレコードを開かないように明示的な排他をかけたいと思い、
以下のような手順を取りました。

例)メインPCが先にレコードを編集する場合

メインPCで一覧から1レコードを選択し、編集画面へ

そのレコードのキー情報を別テーブルへ登録

サブPCが一覧から同じレコードを選択した場合、選択したレコードのキー情報で
別テーブルを検索。

該当するレコードが存在する場合はダイアログで「別のPCが使用中」と表示。

メインPCが編集終了した時点で、別テーブルのレコードを削除

という手順にしたのですが、メインPCが別テーブルへキー情報を書き込んだ後なのに
サブPCでもそのレコードが開いてしまいました。

[管理]→[データベース]→[テーブル]の手順で別テーブルを見ると、詳細の欄に表示されているレコード数が0のままです。
しかし、メインPCで同手順で見ると1レコードとなっており、さらにその後にサブPCで見ると1レコードに変わっています。

共有設定で上記のようなことはできないのでしょうか・・・

情報をいただけたら嬉しいです。

Offline

#2 2014-01-17 09:07:09

opener
Guest

Re: 共有設定でレコードの反映が遅い?

>そのレコードのキー情報を別テーブルへ登録
この時レコードを確定してないのでは。

全く無用な処理です。
明示的排他は、「レコードを開く」スクリプトで可能。

#3 2014-01-17 09:26:01

mecchi
Member

Re: 共有設定でレコードの反映が遅い?

>そのレコードのキー情報を別テーブルへ登録
>この時レコードを確定してないのでは。

>全く無用な処理です。
>明示的排他は、「レコードを開く」スクリプトで可能。

回答ありがとうございます。

すいません、もうちょっと詳しく教えて欲しいのですが

1.レコードを確定とは、どういう処理になりますか?
2.「レコードを開く」スクリプトでダイアログにメッセージを出す事ができるのでしょうか?

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

Offline

#4 2014-01-17 10:37:58

mice
Guest

Re: 共有設定でレコードの反映が遅い?

画面上の余白をクリックとか、スクリプトでやってるでしょうから「レコード確定」ステップです。

同じレコードを他のPCで開こうとすれば自動的にダイアログが出ます。

「レコードを開く」をしなくても、フィールドに入力し始めた時点で自動的にロックされますし。
「レコードを開く」は、実際に入力する前にあらかじめロックしたい場合だけ必要です。

排他のダイアログメッセージを変更したい場合も、必要か...
エラー処理[オン]
レコードを開く
If[Get(最終エラー)=なんだっけ]
カスタムダイアログを表示["誰かが使用中です"]
EndIf

#5 2014-01-17 10:48:01

mecchi
Member

Re: 共有設定でレコードの反映が遅い?

mice wrote:

画面上の余白をクリックとか、スクリプトでやってるでしょうから「レコード確定」ステップです。

同じレコードを他のPCで開こうとすれば自動的にダイアログが出ます。

「レコードを開く」をしなくても、フィールドに入力し始めた時点で自動的にロックされますし。
「レコードを開く」は、実際に入力する前にあらかじめロックしたい場合だけ必要です。

排他のダイアログメッセージを変更したい場合も、必要か...
エラー処理[オン]
レコードを開く
If[Get(最終エラー)=なんだっけ]
カスタムダイアログを表示["誰かが使用中です"]
EndIf

申し訳ないです。
説明を楽にするために端折った部分があります。

一覧を表示しているテーブルはSQLServerのView(リンクサーバでPervasiveを紐付け、Pervasiveの中身をViewで参照)でして、そこから編集に移った際にFileMakerのテーブルにレコードを作り、編集完了時にFileMakerDBからまた別のDB(SQLServerを介してリンクサーバに設定しているPervasive)へ書き込みを行っています。

よって、一覧から開くというよりも、一覧から選択されたキーを元に、FileMaker上では新しいレコードを生成、それをPervasiveへUPDATEする、という仕組みにしています。

なので、FileMakerテーブルに登録されているか否かを判断する必要がありました。

Offline

#6 2014-01-17 13:35:17

opener
Guest

Re: 共有設定でレコードの反映が遅い?

FMのレコードじゃないんですね。。。
最初に書いたとおり、作成したレコードは確定するまで他のクライアントからは見えませんから、レコード確定すればいいです。
>メインPCで同手順で見ると
モード変更とかレイアウト切り替えでも確定します。

キーをユニークに制限しておけば、検索しないでいきなり作成でよさそう。

#7 2014-01-17 13:41:11

mecchi
Member

Re: 共有設定でレコードの反映が遅い?

opener wrote:

FMのレコードじゃないんですね。。。
最初に書いたとおり、作成したレコードは確定するまで他のクライアントからは見えませんから、レコード確定すればいいです。
>メインPCで同手順で見ると
モード変更とかレイアウト切り替えでも確定します。

キーをユニークに制限しておけば、検索しないでいきなり作成でよさそう。

回答ありがとうございます。
「レコード確定」ですね。やってみます。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 516.34 KiB (Peak: 520.88 KiB) ]