みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
皆様から色々と投稿頂き有難うございます。
レコード削除の考え方はShin様の考え方を取り入れることで進めたいと思います。
ところで問合せしているのですが、下記解決方法について、何方かご指導をお願いします。
入力フィールド(グローバル)繰り返し数3を作成し、この方法を試しました。
繰り返し1コマ目は「123」
繰り返し2コマ目は「東京」
繰り返し3コマ目は「日本 太郎」
と入力。
ところが番号,都市,名前の各フィールドに入力させるためのスクリプトがわかりません。
フィールド設定スクリプトじゃダメなの?
話は変わるけど、何故レコード確定後の削除がダメなのかの説明がShinさんのでもわからない。
保存しないで終了ボタンさん、お知り合いの方は何故だと言われていました?
フィールド設定[番号 ; 入力フィールド[1]]
という様な物でいいでしょう。ただ、使い回ししたいのでしたら、挿入するフィールド名を持たせた繰り返しフィールドを作り、そこにフィールド名を保存しておいても良いかもしれません。そうすると、フィールドを名前で設定 を使って、loop 処理でフィールド設定が可能です。
Offline
入力するフィールドのタブ順を
繰返しフィールドの回数順とあわせておけば、ループで
次のフィールドへ移動
とすることも出来ます。
今回はフィールドが三つだけですから、
フィールド設定をベタベタに並べてもいいのでは。
レコード削除を繰返すと、
ファイルにゴミがたまり、壊れやすい。
という記事が過去に有りました。
今回ググってみましたが、ヒット出来ませんでした。
Offline
レコード削除を繰返すと、
ファイルにゴミがたまり、壊れやすい。
チポさん、ありがとうございます。
そんな経緯があったんですね。
でもファイルメーカー社は、認めないでしょうね。
レコード削除は頻繁に行わないでくださいなんて書いたら、データーベースじゃないですもんね。
レコードの削除は頻繁に行ってもいいですよ、というより、必要ならばしないとしかたないでしょう。
その後、ファイル内部には空きエリアが出来るのですが、それが連続していない可能性が高いでしょうから、次にデータを保存する時にフラグメントが発生します。それを解消するために、適当な期間毎にファイルの最適化を行えば良いです。
今業務で使っているファイルは、基幹システムがイモで差分レコードの書き出しができないので、全レコードを書き出して照合インポートしているのですが、着実に遅くなっていきます。ファイルを触る時にインデックスの再生や計算値の再計算をさせると、時間が違うのもはっきりわかります。最適化すると劇的に改善しますので、その影響は大きいでしょう。
FM6(FMS5.5) までは、この状態でよくファイルが壊れて修復していましたが、FMS11以降ではまずありませんね。
Offline
私はフラグ方式ではなく、
別テーブルに削除するデータのバックアップを残した上で
削除する方法を取ってましたが、
それに類似したことを
https://fm-aid.com/bbs2/viewtopic.php?id=5487
除外リストに該当するものを自動的に除外したいです
で提案しています。
Last edited by シャチ (2016-12-05 09:06:03)
Offline
レコードの削除について,一旦入力済みになったレコードの削除は,私は避ける様にしています。完全に不要になったレコードは,管理者権限でのみ削除しています。
新規レコードの入力途中の物についても、入力の程度によってはその場で削除しても良いと思うのですが,その程度を機械的に判断するのが難しいですよね。私は,その場合は,取りあえずは削除フラグで対処しておき、後に削除の方が良いかも,位の考えです。たまに、ユーザーからほとんど入力できていたのに,という事を聞かされることもありますので。
完全に入力されたレコードでなければ,という運用でしたら,グローバルフィールド等に入力させ,確定ボタンでデータを流し込む,という運用を取ることになるでしょう。
皆様より多くのご指導を頂き大変有難うございます。
今回はShin様のグローバルフイールドに入力させ確定ボタンでデータに流し込む方法で進めたいと思います。
確定ボタンのスクリプトは変数とフィールド設定でよいのでしょうか。
〇△□の部分が分からないのですが。
変数を設定$k;グローバル
変数を設定$k[2];グローバル
変数を設定$k[3];グローバル
フィールド設定[グローバル::番号;〇
フィールド設定[グローバル::名称;△
フィールド設定[グローバル::仕様;□
グローバルフィールドで入力させる時に面倒なのは,新たなレコードを入力させる前にフィールドをリセットしないと行けない点でしょうね。
変数に持たせる必要は有りませんよ。
フィールド設定[番号 ; グローバル[1]]
フィールド設定[名称;グローバル[2]]
フィールド設定[仕様;グローバル[3]]
と並べれば良いでしょう。
ヘルプも読んでくださいね。
http://www.filemaker.com/help/15/fmp/ja … ld.html%23
Last edited by Shin (2016-12-05 09:03:49)
Offline
グローバルフィールドで入力させる時に面倒なのは,新たなレコードを入力させる前にフィールドをリセットしないと行けない点でしょうね。
変数に持たせる必要は有りませんよ。
フィールド設定[番号 ; グローバル[1]]
フィールド設定[名称;グローバル[2]]
フィールド設定[仕様;グローバル[3]]
と並べれば良いでしょう。
ヘルプも読んでくださいね。
http://www.filemaker.com/help/15/fmp/ja … ld.html%23
変数は必要と思っていました。
[1][2][3]はワープロですよね。
スクリプトが動作し、入力ができるようになりました。
アクセス権を考慮し、入力テーブルを新規作成し登録と分けました。
グローバルは入力に移動させ、番号・名称・仕様は登録に残しました。
新たな問題ですが、入力テーブルでスクリプト実行の際に登録テーブルの新規レコード作成させる必要がでました。
方法が分かりません。
それともテーブルを分ける必要が無いのでしょうか。
済みません。混乱してます。
>それともテーブルを分ける必要が無いのでしょうか。
入力と登録用にテーブルはわけないといけません。
流れとしては、下記のようなものです。
入力テーブルで登録したいフィールドを変数に保管します。
登録テーブルへ移動して、新規レコードを作り、変数を各フィールドへ入れていきます。
そして、元の入力テーブルへ戻ると完成です。
#レイアウト:入力レイアウト(入力テーブル)
変数設定[$番号;グローバル[1]]
変数設定[$名称;グローバル[2]]
変数設定[$仕様;グローバル[3]]
レイアウト切り替え[登録レイアウト(登録テーブル)]
新規レコード
フィールド設定[登録::番号;$番号]
フィールド設定[登録::名称;$名称]
フィールド設定[登録::仕様;$仕様]
#元の入力画面に戻る
レイアウト切り替え[入力レイアウト(入力テーブル)]
#グローバルフィールドの初期化する
#入力値を残したままにするなら、初期化はしない。
Last edited by あると (2016-12-05 15:31:33)
Offline
入力用のテーブルに、グローバルフィールドしか置かないのでしたら、そのテーブルは不要でしょう。登録用のテーブルにグローバルフィールドを置いておけば十分です。
入力時は、そのグローバルフィールドのみで作ったレイアウトへ移動し、入力の登録ボタンで、新しいレコードを作り、フィールドを設定していきます。フィールドの数だけステップが必要です。
そのスクリプトの手間を省きたいのでしたら、別テーブル(専用のテーブルでなくても良いです)にグローバルフィールドを置いて、入力後、登録テーブルへレコードのインポートを行うと、1手間で終わらせる事も出来ます。
Offline
Shin様、あると様
お蔭様でフィールド設定や新規レコードの作り方もわかり、システム設計ができます。
テーブルは仲間と相談して決めることにします。
大変お世話になり、有難う御座いました。
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 548.98 KiB (Peak: 569.88 KiB) ]