みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
特定の条件下で数を増やしていきたいのですがお知恵を貸してください。
環境Win10Pro 64bit FMは19Proです。
作成してあるフィールド
日付:日付が入ります
カゴ:カゴの名称が入ります
カゴ状態:使用 or 倉庫 が入ります(条件は増やしていきますが、現状は2点です)
カゴ補修チェック:✓ボックスです
カゴ使用日数:今回知りたいところです、下記にて詳細に記載します。
■レコード1
日付/カゴ/カゴ状態/カゴ補修チェック/カゴ使用日数 の順番で記載します
2023/12/1 カゴA 使用 チェック空白 補修空白 使用日数1
■レコード2
2023/12/2 カゴA 使用 チェック空白 補修空白 使用日数2 ←レコード1のカゴAに続き、レコード2も”使用”なので、2が入る
■レコード3
2023/12/2 カゴZ 使用 チェック空白 補修空白 使用日数1 ←カゴが違い、”使用”なので1が入る
■レコード4
2023/12/3 カゴA 倉庫 チェック空白 補修空白 使用日数2 ←今回は”倉庫”なので、2のまま
■レコード5
2023/12/4 カゴA 使用 チェックあり 補修あり 使用日数1 ←”使用”だが、チェックがありなので、そちらが優先され1となる
■レコード6
2023/12/5 カゴA 使用 チェック空白 補修空白 使用日数2 ←レコード5が1だった為、+1で2となる、但し、レコードと1.2の日数は保持しておきたい
いま計算フィールドで作成したのは下記になります
・レコード1が”使用”だと前のフィールドがないので日数が?になる
⇒?なって欲しくない
・カゴの名称が変わっているのに、使用日数が引き継がれてしまう
⇒カゴの名称が違えば、日数を分けて欲しい、ただし、カゴごとにテーブルは作成したくない
・レコード1.2.3が使用にしてあり、レコード3には3と表示される
ここで、誤りだったことに気づき、レコード2を倉庫にしても、レコード3の日数は3のままで再計算されない
⇒再計算して欲しい
If (
カゴ補修チェック = "✓" ; 1 ;
If (
カゴ状態 = "使用" ;
If (
IsEmpty ( FilterValues ( List ( カゴ & "使用" ; カゴ & "使用" ) ; "" ) ) ;
If (
IsEmpty ( GetNthRecord ( カゴ使用日数 ; Get ( レコード番号 ) - 1 ) ) ; 1 ;
GetNthRecord ( カゴ使用日数 ; Get ( レコード番号 ) - 1 ) + 1
) ;
GetNthRecord ( カゴ使用日数 ; Get ( レコード番号 ) - 1 )
) ;
If (
カゴ状態 = "倉庫" ;
If (
IsEmpty ( FilterValues ( List ( カゴ & "倉庫" ; カゴ & "倉庫" ) ; "" ) ) ;
If (
IsEmpty ( GetNthRecord ( カゴ使用日数 ; Get ( レコード番号 ) - 1 ) ) ; "" ;
GetNthRecord ( カゴ使用日数 ; Get ( レコード番号 ) - 1 )
) ;
""
) ;
""
)
)
)
以上、ご回答よろしくお願いします。
そのような式だと、カゴが増えれば、1週間の計算でも破綻してしまいますよ。
カゴで自己リレーションを張り、日付で降べきにソートすると、
2023/12/5 カゴA 使用 チェック空白 補修空白 使用日数2
2023/12/4 カゴA 使用 チェックあり 補修あり 使用日数1
2023/12/3 カゴA 倉庫 チェック空白 補修空白 使用日数2
2023/12/2 カゴA 使用 チェック空白 補修空白 使用日数2
2023/12/1 カゴA 使用 チェック空白 補修空白 使用日数1
になります。(12/1にはチェックが入るべきだと思いますが)
このリストで、最初にチェックがある行までの”使用“を数えるだけで求められます。
https://www.dropbox.com/scl/fi/w2uls98w … swj85&dl=0
✔が空白になるとカウントできないので、ちょっと工夫してあります。
Last edited by Shin (2023-12-10 08:48:53)
Offline
同日付‣同カゴはない
カゴ使用日数は
カゴ補修チェックにチェックがあればその他無条件に1
それ以降のカゴ状態が「使用」で1を加える
これを条件として、
自己リレーション
グローバルフィールドを作り、「使用」と入力
カゴ = カゴ
and
グローバルフィールド = カゴ状態
and
日付 > 日付
日付の降順ソート指定
として、使用日数の計算式
Case ( カゴ補修チェック = チェック ; 1 ; 自己リレーション::使用日数 + 1 )
で求められます。
これは、
チェックとチェックの間のレコード数が多くなるともたつくかもしれません。。
Offline
Shinさん、チポさん
ご助力ありがとうございます。
無事解決致しました!
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 515.91 KiB (Peak: 522.23 KiB) ]