みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初心者です
subテーブルにレコードが生成されたら、メインにあるポータルにsubテーブルのレコードを表示するシステムを作っています。
メインとサブは、主キーと外部キーでリレーションをつなげています。
subテーブルにレコードを生成した際はメインポータルにサブテーブルのレコードが表示されます。
subテーブルのレコードを全削除すると、メインにあるポータルはすべて消える想定ですが、なぜか一部値が残っています。
ポータルの参照先であるレコードが無いのにポータルに値が残る原因は何でしょうか?
説明が下手ですみませんが、教えてください。
補足
値は入ってるのは、get(レコード番号)の計算結果の値です。
常に0が入力された状態になってしまいます。
> subテーブルのレコードを全削除する
これは、どのような操作をされていますか。
Get (.レコード番号 ) はどこで取得されていますか。
ポータルで表示している構造で、メイン側のレコードを削除した場合に関連レコードを同時に削除するのはよくある事でしょうが。関連テーブル側のレコード削除でメイン側のレコードを削除する動きは滅多に作らない構造だと思いますが、具体的にどのような運用なのですか。
リレーションの設定で、両方に、関連するレコードが削除されたらレコード削除 を設定しておくと、いいのかも知れません
Last edited by Shin (2023-11-08 09:14:11)
Offline
>>subテーブルのレコードを全削除する
>これは、どのような操作をされていますか。
最終的な成果物としてはスクリプト実行でレコード削実行を行いますが、
今回は確認のためステータスメニューからレコードの全削除を実行しました。
レコードが0であることは確認しています
>Get (.レコード番号 ) はどこで取得されていますか。
subテーブルのフィールドにレコード番号を表示するレコードを用意して、
タイプを計算、オプションを非保存、=Get(レコード番号)としてます。計算結果も数字で返すように作っています。
>具体的にどのような運用なのですか。
郵便番号を入力されたフィールドがあるときにボタンを押すとsubテーブル(一時ファイル)にレコードを保存する仕組みを作っています。
その一時ファイルは毎回リセットするようにしていますが、なぜかget(レコード番号)のフィールドに0が残ってしまいます。
リレーション設定で「レコードの作成を許可」すると、ポータル内に関連レコードがない場合にも入力用の空レコードが1行表示されますが、
Get(レコード番号)以外でもGet(日付)とか
Left(主キー;5) & "..."
でも、非保存計算フィールドは計算結果が表示されますね。
表示させたい場合もあるでしょうから、行番号なら>0でなければ空欄になる計算式にするとか、ダミーでフィールド参照を入れるとか、数字書式で0は表示しないとか...
回答ありがとうございます。
リレーション設定で「レコードの作成を許可」を外すことで解決できました。
>番号なら>0でなければ空欄になる計算式にする
試してみましたが、うまくいきませんでした。ifの使い方が間違っているのでしょうか?
If ( Get ( レコード総数 ) > 0 ; Get ( レコード番号 ) {; ""} )
インスペクターの設定で、0なら表示しない にしておいてもいいかも
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 515.26 KiB (Peak: 519.8 KiB) ]