みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
OS:[7 ]
FileMaker Ver:[12 ]
保存しないで終了ボタンを作成し、入力最中や入力完了後に不要となったために、レコード削除のスクリプトを作成したいのですが、
レコード削除はあまり良くない方法であると説明を受けました。
皆さんはどうされているのでしょうか?
・間違えて消してしまった→回復したい。
・削除したいが、過去の履歴は残しておきたい。
という場合は、削除フラグを作ると良いです。
表示=0、削除=1などとして、削除ボタンを押すと1を挿入する。
そして、0のものだけを表示する検索対象にすると良いかと思われます。
自分だけで使用して、削除しても全く問題ないというなら、レコード削除も方法としてはありです。
Offline
・間違えて消してしまった→回復したい。
・削除したいが、過去の履歴は残しておきたい。
という場合は、削除フラグを作ると良いです。
表示=0、削除=1などとして、削除ボタンを押すと1を挿入する。
そして、0のものだけを表示する検索対象にすると良いかと思われます。自分だけで使用して、削除しても全く問題ないというなら、レコード削除も方法としてはありです。
削除フラグの意味はこのようなことでしょうか。
1.削除フラグフィールドを作成
2.保存しないで終了ボタンを押すと、そこに1を自動入力させる。(ファイルからはレコード削除していない)
3.通常の入力者などがレコードを見る際のボタンは1を除いて見る。
このスクリプトを作成した場合、本当に不要なレコードはどの様にしてレコード削除するのでしょうか。
普通の利用者には,そのフラグが1のレコードへのアクセスを禁止する様にしておくと,そのレコードは見えなくなります。(全レコードを表示した時以外)
管理者は,その制限を受けませんので,全レコードへのアクセスが可能です。その権限でレコード削除をしましょう。
Offline
入力を、それ専用のグローバルフィールドにして、
「保存」で新規レコード作成、グローバルの値をそれぞれのフィールドに移す。
という方法も有りますね。
Offline
普通の利用者には,そのフラグが1のレコードへのアクセスを禁止する様にしておくと,そのレコードは見えなくなります。(全レコードを表示した時以外)
管理者は,その制限を受けませんので,全レコードへのアクセスが可能です。その権限でレコード削除をしましょう。
セキュリティ管理を見ましたが、フラグが1のレコードへのアクセス禁止する設定らしきのが見当たりません。
別の方法でしょうか。
「レコードアクセス権の編集」4.以降が参考になるかと。
http://www.filemaker.com/help/12/fmp/jp … 14.20.html
入力最中や入力完了後に不要となったために
入力している途中や全フィールド埋めたあとでヤンピしたいだけならチポさんの提案や
確定をトリガでキャンセルさせて「保存」ボタン押したときだけ確定できるようにする程度で良さそうですね。
レコード削除はあまり良くない方法
「確定前に不要と気付いたレコードを一度確定させてから削除」するなら好ましくないですがレコードの削除そのものはケースバイケースです。
Last edited by Moz (2016-11-30 18:34:57)
Offline
>セキュリティ管理を見ましたが、フラグが1のレコードへのアクセス禁止する設定らしきのが見当たりません。
自分でスクリプト組まないといけません。
If(フラグ=1)
現在のスクリプト終了
EndIf
といったものをトリガなどに仕込むと良いかと。
Offline
アクセス権セットの中の、レコードの閲覧の設定で許可、禁止がコントロールできます。
スクリプトで組み込むと、全ての場合を考えていく必要があるので、後々地獄を見ますよ。
Offline
入力を、それ専用のグローバルフィールドにして、
「保存」で新規レコード作成、グローバルの値をそれぞれのフィールドに移す。という方法も有りますね。
試したいと思います。
こちらの方法で宜しいのでしょうか。
全ての入力フィールドはグローバルフィールドにする。
データはそのフィールドに入力。
保存時は「保存」ボタンを押すと、新規レコード作成し、変数設定とフィールド設定で入力する。
入力最中や入力完了後に不要な場合は「削除」ボタンを押すと、グローバルフィールドを空白にする。
> 全ての入力フィールドはグローバルフィールドにする。
全ての入力フィールドをすべて個別のグローバルフィールドにしなくとも、
1つの繰り返しグローバルフィールドで代表してもらえば設定が楽になります。
また、繰り返しフィールドは1コマごと切り分け配置もできますから、
レイアウトデザイン上の制約も生じません。
Last edited by Hiro (2016-12-01 12:06:34)
Offline
> 全ての入力フィールドはグローバルフィールドにする。
> データはそのフィールドに入力。
その通りです。
> 保存時は「保存」ボタンを押すと、新規レコード作成し、変数設定とフィールド設定で入力する。
特に変数を経由する必要はないでしょう。
フィールド設定で直接グローバルフィールドの値をコピーできます。
> 入力最中や入力完了後に不要な場合は「削除」ボタンを押すと、グローバルフィールドを空白にする。
そうですね、使い勝手で方法はいろいろ考えられるでしょう。
今回はレコード作成途中で、それを中止した場合の処理ですよね。
中断で、後で完成させるならともかく、それをアクセス出来なくして、
作成途中のレコードを残しておくのもいかがなものでしょうかね。
Offline
レイアウト設定
└□レコードの変更を自動的に保存する(S)
まずは、
上記のチェックを外した状態で動作を確認してみては、いかがでしょう。
Offline
> 全ての入力フィールドはグローバルフィールドにする。
全ての入力フィールドをすべて個別のグローバルフィールドにしなくとも、
1つの繰り返しグローバルフィールドで代表してもらえば設定が楽になります。
また、繰り返しフィールドは1コマごと切り分け配置もできますから、
レイアウトデザイン上の制約も生じません。
入力フィールド(グローバル)繰り返し数3を作成し、この方法を試しました。
繰り返し1コマ目は「123」
繰り返し2コマ目は「東京」
繰り返し3コマ目は「日本 太郎」
と入力。
ところが番号,都市,名前の各フィールドに入力させるためのスクリプトがわかりません。
フィールド設定で良いのですよね。
繰り返しのグローバルフィールドは、フィールドタイプに問題が起きませんか?
問題っていうより不便さかな?
例えば日付フィールドのようなエラーが出ないとか。
フィールド設定で各フィールドに順に入力してゆけばいいのでは。
繰り返しフィールド[n]
で繰り返しn回めの値が得られます。
Offline
繰り返しフィールドだと、そのタイプは一つになってしまいますから、
例えばテキストと日付を入力するのなら、
日付でもテキストとして入力することになりますね。
この場合日付としての整合性を見るのが面倒になりますね。
また、入力値の制限で空欄不可としても、
繰り返しのどこか一つでも入力してあればスルーしちゃいます。
そこらも考慮して考えるべきでしょう。
Offline
Shinさんへ
>アクセス権セットの中の、レコードの閲覧の設定で許可、禁止がコントロールできます。
>スクリプトで組み込むと、全ての場合を考えていく必要があるので、後々地獄を見ますよ。
ゲストユーザーは削除したものは閲覧はしない、管理者のみとしていれば良いですが、
この仕組みがゆえに、削除リストをゲストユーザーが確認したいなどあった場合は、アクセス権で禁止してしまうと出来なくなります。
そういった自由度が下がるのでは無いかと。
はじめにシッカリと決めておけば良いことですが。
Shinさんの言われる方法は、レコード削除の許可・禁止で使ってます。操作がどのように間違えても消されることが無いようにと。
Offline
入力値の整合性は、普通(Webの入力フォームなど)、正規フィールドへ転記するときに精査します。
もっとも、オブジェクトタイプなどではどうしようもありませんが、...
Last edited by Hiro (2016-12-01 16:16:14)
Offline
正規フィールドへ転記するときに精査されたら、色々と面倒じゃないですか?
自分でやるのはいいけど、パソコンに不慣れな人にさせるのには問題があると思います。
> わーいさん
問題点を解消したアイデアに期待しています。
Offline
精査するのは入力者ではありません。
もちろん、あなたが作ったスクリプトに従って、FMがやるのです。
Offline
Hiroさん、それはわかってますよw
でも、精査された後直すのは入力者じゃないでしょうか?
Mozさん、いい答えが浮かべば書きますよ。
へっぽこですみません。
ただ、指摘するのもいいんじゃないかと。
仲良しクラブじゃないんだからw
最初の質問の、レコード削除はあまり良くない方法であると説明を受けました。
ココがよくわからない。
Mozさんも良くないと言っているけど、何でか答えてないし。
やっぱグローバルを使うなら面倒だけど、個々に作るのがいいんじゃないでしょうか?
レコードの削除について,一旦入力済みになったレコードの削除は,私は避ける様にしています。完全に不要になったレコードは,管理者権限でのみ削除しています。
新規レコードの入力途中の物についても、入力の程度によってはその場で削除しても良いと思うのですが,その程度を機械的に判断するのが難しいですよね。私は,その場合は,取りあえずは削除フラグで対処しておき、後に削除の方が良いかも,位の考えです。たまに、ユーザーからほとんど入力できていたのに,という事を聞かされることもありますので。
完全に入力されたレコードでなければ,という運用でしたら,グローバルフィールド等に入力させ,確定ボタンでデータを流し込む,という運用を取ることになるでしょう。
Offline
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 574.63 KiB (Peak: 611.53 KiB) ]