みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんにちは。お世話になります。
ファイルを初期化(レコードを削除)した際に、今まで振ってあった番号を
「次のシリアル値を設定」にて「1」に戻したいです。
一つひとつのレイアウトで作成すれば可能なのですが、スクリプトの数が多くなるのと
作成する手間を省きたいので、汎用性を持たせたいと思っています。
ターゲットフィールドを計算式にて求めても、「次のシリアル値を設定」では使えないですよね。
やはり、ひとつ一つスクリプトを作成するしかないのでしょうか?
他に方法があるようでしたら教えてください。よろしくお願いいたします。
ファイルを初期化 とは、例えば、年度ごとにファイルを複製して、レコードを削除して使う、という意味なのですか。
Offline
Shinさん、こんにちは。
ファイルを初期化 とは、例えば、年度ごとにファイルを複製して、レコードを削除して使う、という意味なのですか。
そういった感じになります。
データベースの基本運用として、同じファイルは原則的には作らない、全てのデータを全てまとめる、年度などの区分はその中に識別を入力する、というのが原則です。その例外と考えられるのは、区切りごとに、そのデータベースシステムの管理できる限界を超えるようなレコードが発生するような場合だけでしょう。FileMaker でしたら、100万から1000万レコード程度でしょうか。
ファイルを共有して運用するのでしたら、ファイルの複製を行うと同名のファイルが複数存在することになり、リレーションが混乱してきます。ファイル名を変更すると、外部データソースの設定を全て変更しないといけないので、非常に面倒な手間です。
その中でのシリアルは、とりあえず全レコードに渉るシリアルを打っておきます。区分で自己リレーションをはり、自分以下のシリアルをカウントします。
何が何でも、ファイルを複製して運用する、ということでしたら、シリアルそのものは絶対シリアルとしてそのままカウントさせておき、ファイルごとのシリアルとして、自分シリアル以下をカウントする計算フィールドを作っておけば簡単です。リセットする必要はありません、
もし、将来原則どおりに1ファイルにまとめるときにも、シリアルを考慮せずに、そのまま1ファイルにインポートしていけばいいです。
Last edited by Shin (2022-08-21 13:33:38)
Offline
shinさんありがとうございます。
ファイルを初期化 とは、例えば、年度ごとにファイルを複製して、レコードを削除して使う、という意味なのですか。
こういった場合もあると先に回答いたしましたが、
他には、作成中のファイルに適当なレコードを入力しながら、挙動を確かめているときに、無意味にシリアルが進んでいくという場合に
レコードを削除して、シリアルを戻したい場合もあります。
また、使っていく間に、データをインポートする場合もあるでしょう。
そういった場合に、そういう仕掛けを作っておけば、楽かなとも考えています。
データベースの構造に関する設定なので、そういう場合はフィールド定義から設定すればいいのでは。
フィールド名を計算で指定するのは、SQLでできるけど、ODBCとかプラグインでないとできませんね。
あとは、インポートとかフィールド内容の全置換でもできるけど、レコードが1つできてしまう。
一つひとつのレイアウトで作成すれば
年度単位で複製したファイル●●.fmp12の、
テーブルA、B、Cに対応したレイアウトA、B、Cに対しての、“一つひとつの”という意味の場合、
メニューから除外したスクリプトを作成し(誤作動防止)
・レイアウト切り替え
・全レコードを表示
・フィールド内容の全置換
・入力オプションのシリアル番号設定に反映させる
(ダイアログあり:オフ、カスタム値)を組み合わせえて可能になると思います。
勘違いしていました。
一つひとつのレイアウトで作成すれば可能
レイアウトが必要だと思い込んでいましたが、レイアウトは必要なく、
次のシリアル値を設定 [<テーブル::フィールド> ; <式>]
これを実行するだけで、可能ということがわかりました。
ただ、<テーブル::フィールド>はひとつ一つ設定しなければなりませんよね。
シリアル値を設定は、フィールドが絶対指定なので、一つ一つ設定することになります。
絶対シリアルと、計算値でのシリアルを使えば、レコードを削除しても、インポート(絶対シリアルは自動設定できますよね)させても、実レコードでのシリアル値を取れますよ。
Offline
shinさん、ありがとうございます。
シリアル値を設定は、フィールドが絶対指定なので、一つ一つ設定することになります。
やはり、そうですか。
ありがとうございました。
絶対シリアルは、レコードID を使うのが、管理上は楽でしょうね。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 568.44 KiB (Peak: 584.98 KiB) ]