初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2022-01-20 18:03:25

CHCH
ゲストユーザー

[解決] チェックボックスの値を繰り返しフィールドへ

Filemaker19で質問です。

チェックボックスの値を繰り返しフィールドに1行ずつ入れることは出来るでしょうか?
チェックボックスは最大10個で繰り返しフィールドも10行です。
ご回答、宜しくお願いします。

#2 2022-01-20 20:32:00

himadanee
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

GetValue ( チェックボックス ; Get(計算式繰り返し位置番号))
とすれば先頭から順に詰めてチェックされてる値が入ります。

#3 2022-01-20 23:02:38

CHCH
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

ご返信ありがとうございます。
チェックボックスのフィールド名を CHKBOX として、繰り返しフィールド名を LOOPF とし
LOOPFの計算式に GetValue ( CHKBOX ; Get(計算式繰り返し位置番号)) としましたが、LOOPFの1行目はCHKBOXで最初にチェックした値が入りましたが
2行目以降の値が2つ目をチェックしても入りませんでした。
CHKBOXの方も繰り返しフィールドにしたりと試してみましたが、何か間違いがありそうな箇所はあるでしょうか?

#4 2022-01-21 08:49:49

チポ
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

繰り返しフィールドの計算式に、
非繰り返しフィールドを使う場合
  GetRepetition ( CHKBOX )
または
  CHKBOX[1]
とするのがお約束です。

無条件にそういうものだ、考えてください。

余談、、
なぜ繰り返しフィールドにしたいのでしょうかね?

オフライン

#5 2022-01-21 08:54:37

himadanee
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

ああ、[1]をつけるの忘れてましたね。何かと忘れがち。
本当はチェックボックスの値ごとに指定した繰り返しに入れたいのか聞こうと思ってたんですが、面倒なのでやめてました。

#6 2022-01-21 09:01:17

qb_dp
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

GetValue ( Extend ( CHKBOX ); Get(計算式繰り返し位置番号)) なのでは。

同意...
>余談、、
>なぜ繰り返しフィールドにしたいのでしょうかね?

オフライン

#7 2022-01-21 09:05:48

qb_dp
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

あ~...
GetValue ( CHKBOX[1] ; Get(計算式繰り返し位置番号))
コレでイイんですね...。

オフライン

#8 2022-01-21 09:06:29

チポ
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

ああ、、間違えました

GetRepetition ( CHKBOX )
ではなく、
Extend ( CHKBOX )
が正しいです。

qb_dpさんありがとうございます。

オフライン

#9 2022-01-21 09:08:54

チポ
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

連投です

> チェックボックスの値ごとに指定した繰り返しに入れたい
指定した繰り返し位置
ですよね、
これなら、集計等のためとする意味がありますね。

オフライン

#10 2022-01-21 10:29:05

Shin
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

> チェックボックスの値ごとに指定した繰り返しに入れたい
なら、全く別のアプローチにしないとダメでしょう。
チェックボックスに設定されている値一覧を参照して、その位置に値をいれます。
not isEmpty ( FilterValues ( GetValue ( CHKBOX[1] ; Get(計算式繰り返し位置番号) ) ; ValueListItems ( Get ( ファイル名 ) ; 値一覧名 ) )

修正しました
普通は、値一覧の中の値を1位置ごとに持たせた計算フィールドを用意しておくのがいいと思いますが。(どっち道、表示に必要でしょうから)

編集者 Shin (2022-01-21 10:58:13)

オフライン

#11 2022-01-21 10:42:22

himadanee
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

そうそう、そんな感じの長い式になりそうなので、簡単な方のだけ実験しないで手なりで書いたので[1]をつけ忘れたのでした。自分で最近別の回答に書いてるのにね~
どっちがいいんですか、と聞くと長い方を聞かれそうだったので^^;

Shinさんの式は、FilterValuesにtypoがあるのと、全体が論理値になってるので1か0が入りますよね。果たしてそういう希望なのかどうか。集計用ならその方が扱いやすそうですが。
値自体を入れても、値か空欄か、なら「カウント」で集計できるか。1/0の方が効率はいいか。

#12 2022-01-21 11:20:55

CHCH
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

皆様ありがとうございます。

昨日深夜に自分なりに調べながらやってみて
GetValue ( List(CHKBOX) ; Get(計算式繰り返し位置番号))
としたところうまいこと結果がでましたが、
GetValue ( Extend ( CHKBOX ); Get(計算式繰り返し位置番号))
の方がいいのでしょうか?

何故繰り返しにするかですが、繰り返しフィールドの LOOPF から 繰り返し行によるIDを他テーブルからルックアップした LOOPFlookup というフィールドがあり
LOOPFとLOOPFlookupを使いスクリプトのLoopで1行目から存在する行までをまた別のテーブルにレコード作るというようなものを作っていまして
チェックボックスの値から直接LOOPFlookupにルックアップする方法もあるかと思ったのですが、今まで自分でやっていた慣れている方法に逃げました。

#13 2022-01-21 12:05:21

Shin
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

繰り返しにしないでも、チェックリストフィールドの内容を1行ずつ取り出して、レコードを作っていくだけでいいのでは。
繰り返しフィールドにするのでしたら、そのまま別のテーブルへばらばらにするオプションでインポートすると1操作です。

ちょっと特殊なリレーションを張ると、スクリプト無しでもレコードを作ることができると思います。(時間をみてサンプルファイル公開できるかも)

https://www.dropbox.com/s/284dak9epcjei … 2.zip?dl=0
レイアウトごとに、上で説明したそれぞれ違う動きを設定してあります。
3番目のレイアウトは、ポータルで表示した値一覧をチェックするだけで、別のテーブルにレコードが作られていきます。そちらのテーブルで ID を参照すればいいでしょう。

編集者 Shin (2022-01-21 14:46:19)

オフライン

#14 2022-01-21 13:20:05

チポ
メンバー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

チェックボックスの値は、それがチェックされた順に改行テキストで入力されます。
ですから、

> not isEmpty ( FilterValues ( GetValue ( CHKBOX[1] ; Get(計算式繰り返し位置番号) ) ;
> ValueListItems ( Get ( ファイル名 ) ; 値一覧名 ) )

これは、

not isEmpty ( FilterValues ( CHKBOX[1] ; GetValue ( ValueListItems ( Get ( ファイル名 ) ; 値一覧名 ) ) ; Get(計算式繰り返し位置番号) )
としたほうがいいでしょう。


> GetValue ( List(CHKBOX) ; Get(計算式繰り返し位置番号))
List
でいいんですね、はじめてです^^

オフライン

#15 2022-01-21 22:18:01

CHCH
ゲストユーザー

Re: [解決] チェックボックスの値を繰り返しフィールドへ

サンプルまでご用意いただき、ありがとうございます。
色々なやり方があるのかと勉強にありました。

繰り返しフィールドはチェックボックスでどこの行に入っても問題ないので、今回は
GetValue ( Extend ( CHKBOX ); Get(計算式繰り返し位置番号))
を使いました。

皆様ご丁寧にお教えいただき、ありがとうございました。

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer