初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-12-02 11:43:24

Willer
Member

LOOP内でのフィールド設定について

お世話になっております。
FileMakerProAdvanced 15 Windows7を使用しています。

現在プロジェクト管理のシステムを作っているのですが、
スクリプトで躓いている部分があるので知恵を貸して頂きたいです。

プロジェクト内に複数のタスクがあり、
プロジェクトを削除した場合に関連するすべてのタスクを削除したいです。
しかし実際にレコードを削除するのではなくf_状態というフィールド値を0にして
擬似的に削除するようにしています。

作成したスクリプト

変数を設定 [$Delete_Project; 値: Get(スクリプト引数)]
変数を設定 [$Delete_TaskList; 値: List(タスク:タスクID)]
Loop
 Exit Loop If [$Delete_TaskList=""]
 変数を設定 [$Delete_Task; 値: GetValue($Delete_TaskList; 1)]
 レコード/検索条件/ページへ移動 [ダイアログあり:オフ タスク::タスクID = $Delete_Task]
 フィールド設定[タスク::f_状態; "0"]
 変数を設定 [$Delete_TaskList; 値: Substitute($Delete_TaskList; [$Delete_Task & ¶; ""]; [$Delete_Task; ""])]
End Loop

LOOPの動作は希望通り動くのですが、肝心なf_状態のフィールドが0に変わらず困っています。
この場合どのようにして$Delete_TaskのタスクIDに合致するレコードを指定すればよいのでしょうか。

すみませんが、宜しくお願い致します。

Offline

#2 2017-12-02 12:44:23

Shin
Member

Re: LOOP内でのフィールド設定について

スクリプト内の動きを全ては追えていませんが、
レコード/検索条件/ページへ移動 [ダイアログあり:オフ タスク::タスクID = $Delete_Task]
が引っかかります。

リレーションがきちんと張ってあるのでしたら、関連レコードへ移動、フィールド全置換、とした方が簡単だと思います。

Last edited by Shin (2017-12-02 15:27:12)

Offline

#3 2017-12-04 08:56:13

チポ
Member

Re: LOOP内でのフィールド設定について

Shinさんの指摘もありますが、、

> レコード/検索条件/ページへ移動 [ダイアログあり:オフ タスク::タスクID = $Delete_Task]
レコードへ移動の
  計算式で指定
は、レコード番号を指定します。

ですから、
  タスク::タスクID = $Delete_Task
これではレコード番号指定にはならないでしょう。

Last edited by チポ (2017-12-04 10:30:27)

Offline

#4 2017-12-05 12:52:09

Willer
Member

Re: LOOP内でのフィールド設定について

Shin様
回答ありがとうございます。
ご指摘頂いた「レコード/検索条件/ページへ移動 [ダイアログあり:オフ タスク::タスクID = $Delete_Task]」
の部分を関連レコードへ移動のスクリプトステップに変えてみましたが思うように動きませんでした。
もう一度スクリプトの見直しをしてみます。

チポ様
回答ありがとうございます。
スクリプト中でレコード番号を指定する場合はどのような方法がありますでしょうか。
アドバイス頂けると助かります。

Offline

#5 2017-12-05 13:22:17

チポ
Member

Re: LOOP内でのフィールド設定について

今回の場合はレコード番号の指定は難しいでしょう。

今のLoopで行うのなら、
レコードを順に見ていって、該当レコードか否かを見つけることになると思いますよ。
それよりShinさんお勧めのリレーション法が簡単でしょう。


グローバルフィールドを作り、
> List(タスク:タスクID)
を入力、
このフィールドと、タスクIDとでリレーション。
これで
関連レコードへ移動
でリストにあるIDのレコードだけが対象レコードとなります。

で、、
> List(タスク:タスクID)
これで、希望どおりのリストが得られていますか?

説明がないので分かりませんが、、、

Offline

#6 2017-12-05 15:07:15

Shin
Member

Re: LOOP内でのフィールド設定について

関連レコードへ移動、は、その部分だけの変更ではないですよ。
削除するプロジェクトを選択し、そこから、関連レコードへ移動します。その状態でフラグを全置換です。loop 組むより簡単ですよ。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 561.98 KiB (Peak: 569.07 KiB) ]