みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
ファイルメーカPro11 Windows7を使用してます
レコードのフィールドに入力した後、そのレコード自体を書き換え禁止にすることはできるのでしょうか?
また、間違えてしまうことは必ずあると思うので暗証番号などで書き換え禁止を解除し、再度ロックをするなどはできるのでしょうか?
回答宜しくお願いします
アクセス権で設定するものでしょうけど、
簡単なのはOnObjectEnterのトリガでロックフィールドに「ロック」と入っている場合は
フィールドへ移動[指定しない]のスクリプトが動くようにするとそのフィールドには入れな
くはなります。
Offline
アクセス権で設定するものでしょうけど、
アクセス権でやってみようと思ったのですがよくわからなくて…
簡単なのはOnObjectEnterのトリガでロックフィールドに「ロック」と入っている場合は
フィールドへ移動[指定しない]のスクリプトが動くようにするとそのフィールドには入れな
くはなります。
なるほど・・・
やってみます。回答ありがとうございます。
重ねてすいません。
一度スクリプトを組んでみようと思ったのですがわからなくて・・
どのようなスクリプトを組めばいいのでしょうか?
どの時点でロックするか、によって処理はかわるでしょうね。例えば、最終修正から1時間は修正可能にする、その後は、ロック解除の手続きが必要、という運用も可能でしょう。
各レコードに、修正タイムスタンプを自動入力させたフィールドを作っておきます。そのフィールドと、現在のタイムスタンプを比較する計算式で、アクセス権セットで制限すれば良いです。
ロック解除を行った後は、そのタイムスタンプを変更してやるか、別のアクセス権で動くように変更するか、でしょう。
Offline
どの時点でロックするか、によって処理はかわるでしょうね。例えば、最終修正から1時間は修正可能にする、その後は、ロック解除の手続きが必要、という運用も可能でしょう。
各レコードに、修正タイムスタンプを自動入力させたフィールドを作っておきます。そのフィールドと、現在のタイムスタンプを比較する計算式で、アクセス権セットで制限すれば良いです。
ロック解除を行った後は、そのタイムスタンプを変更してやるか、別のアクセス権で動くように変更するか、でしょう。
shin様
回答ありがとうございます。
実は今までアクセス権はいじったことが無くて正直よくわからない状態です。
もしできればでよいのですが具体的な方法など教えていただけないでしょうか?
よろしくお願いします。
スクリプトの場合、簡単に書くと二つに分けて
A.ロックというフィールドを作る。
ロックするスクリプトを作る。
フィールド設定[ロックフィールド; "ロック"] の1ステップ
B.変更したくないフィールド用のスクリプトを作る。
If[ロックフィールド="ロック"]
フィールドへ移動[] ---移動先を指定しない
End If
ロック用のボタンを作ってAのスクリプトを割り当てる。
レイアウトモードにして変更されたくないフィールドにOnObjectEnter
のトリガを設定してBのスクリプトを指定する。
Offline
うわっ、間違ってます。フィールドのロックを書いてました。
本題はレコードのロックですね。失礼しました。
Offline
旅人様
回答ありがとうございます。
レコードのロックが出来れば一番なのですが。。。
全フィールドに一個一個ロックをかけるのはちょっとつらいので。
なにかいい方法ありませんかね?
全フィールドを選択しておいて一括でトリガを設定するといいのですが・・・
アクセス権の方は、ロックを掛けるアクセス権は置いといて・・・
レコードのカスタムアクセス権の設定で編集や削除の条件をロックフィールド≠"ロック"
としてみて下さい。ロックフィールドが"ロック"だと編集しようとすると「出来ません」
と怒られますから。
Offline
全フィールドを選択しておいて一括でトリガを設定するといいのですが・・・
アクセス権の方は、ロックを掛けるアクセス権は置いといて・・・
レコードのカスタムアクセス権の設定で編集や削除の条件をロックフィールド≠"ロック"
としてみて下さい。ロックフィールドが"ロック"だと編集しようとすると「出来ません」
と怒られますから。
回答ありがとうございます。
今ロック用フィールド「ロック」を作り、アクセス権にて設定を試みています。
新しいアカウント「新規アカウント」を作成し、アクセス権セットにてレコードのみカスタムアクセス権、編集のみ「ロック」≠ロックとして制限をかけ、他はすべて「はい」としました。
新規アカウントで入ると「ロック」状態のレコードは編集できなくはなったのですが新規レコードが作成できなくなりました。
なにが原因かわかりますでしょうか?
また、根本的にやり方が違う場合は指摘いただけるとありがたいです。
よろしくお願いします
新規レコードの所の処理が少し難しいので、検証していたので、(他にも、原稿締め切りに追われていたのもありますが)遅くなりました。
ロックフィールドに自動入力で "ロック" を入れようとされていると思うのですが、その動作を、レコード確定時、に変更してみてください。それで、初期の入力は可能になります。ただ、一度でもフィールド外をクリックしたりすると、ロックされてしまいます。
それを回避するのでしたら、時刻をみてロックする方法もあります。レコードの作成から例えば10分間は編集可能、それを超えるとロックがかかる、という方法があります。
Offline
作成が「はい」だと普通は新規レコードは作れますよね。
ロックを自動入力にしてあっても新規レコードは出来ますが
確定してしまうと入力出来なくなるのですね。
新規レコード作成時にロックしておく必要は無いと思いますけど。
Offline
shin様 旅人様
回答ありがとうございます。
僕の説明不足で申し訳ないのですが、自動でロックというよりはレイアウト内のフィールドを必要な分入力した後、「ロック」
というフィールドに”ロック”と自分で入力した時点でレコードにロックがかかるようにしたいのです。
旅人様
一度でもどれかのレコードに”ロック”がかかると新規レコードが作成できなくなるということでしょうか?
他のレコードにロックがかかっているかどうかは関係無く、そのアカウントの
アクセス権設定で作成が許可されていたら新規レコードは作れます。
Offline
新規アカウントの「利用できるメニューコマンド」が変更されてないのでは。
厳しく考えると、
スクリプトトリガで規制しても、新しいレイアウトを作られたらどうにでもできちゃいます。
やはり
アクセス権で制限するのが間違いないのでは。
特定のフィールド値でアクセス権の制限ができます。
新規レコード作成の可否もそのアクセス権で決定できます。
Offline
自動でロックというよりはレイアウト内のフィールドを必要な分入力した後、「ロック」
というフィールドに”ロック”と自分で入力した時点でレコードにロックがかかるようにしたいのです。
ならば、ロックフィールドを自動入力せずに、ボタンでそのフィールドを設定すれば良いでしょう。
アンロックは、ロックフィールドを消すスクリプトを、完全アクセス権で動作させます。
Offline
旅人様 opener様 チポ様 Shin様
回答ありがとうございます。
新規レコードの件はopener様の回答で解決できました。
アンロックはやはり完全アクセス権でなくては消せないのでしょうか?
Shinさんが書かれた
> ロックフィールドを消すスクリプトを、完全アクセス権で動作させます
これは、
そのときのアクセス権如何に関わらず完全アクセス権で実行できます。
Offline
アンロックはやはり完全アクセス権でなくては消せないのでしょうか?
そのフィールドは、、普通のアクセス権では変更できないようにしておいた方が良いでしょう。
Offline
チポ様 Shin様
回答ありがとうございます。
アンロックは完全アクセス権でないと行えないのですか?
それとも完全アクセス権でしかアンロックできないように設定したほうがいいということでしょうか?
つたない質問で申し訳ないですがよろしくお願いします
レコードにロックを掛ければ、
当然「ロック」フィールドにもロックがかかります。
それを変更するには、完全アクセス権が必要になるでしょう。
しかし、
スクリプトのオプションで
「スクリプトを完全アクセス権で実行」
を選択できます。
前レスでこれを言ったんですが。。
Offline
チポ様
返答ありがとうございます。
そういうことだったんですね…
何回も同じような質問をしてしまいすいませんでした。
書き落としましたが、
「ロック」フィールドの変更を誰に許すか
でその方法が違います。
前述のスクリプトでは解除は誰でもできます。
しかし、
完全アクセス権を持ったものだけに解除の権限を与えるのならば、
スクリプトの
「スクリプトを完全アクセス権で実行」
を選択してはダメですね。
Offline
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 613.59 KiB (Peak: 630.13 KiB) ]