みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもありがとうございます。
繰り返しフィールドの重複をみつけて重複は削除し、同じフィールドに削除した値を入れたいと思っているのですがうまくいきません
fm18です
フィールド1[繰り返し5]
りんご
りんご
ばなな
めろん
ばなな
とあった場合
↓
最終的に
フィールド1
りんご
ばなな
めろん
空白
空白
としたいです。
一応書いてみたのですがうまくいきません
変数設定 [$重複削除 ; UniqueValues ( フィールド1 )]
フィールド設定 [フィールド1;""]
フィールド設定 [フィールド1;$重複削除]
と書きました。
繰り替えしの1つ目だけ削除されているような挙動を示します。
もしかしたら単純な方法もあるのかもしませんが小生の知識では手詰まりなので
どうぞよろしくお願いいたします。
Offline
繰り返しフィールドは、データを保存する目的で使わないほうがいいですよ。今回のように、必ず苦労します。
どうしても今の構造がないとだめなのでしたら、UniqueValues ( List ( 繰り返しフィールド ) ) のリストを作り、GetValue ( リスト[1] ; Get ( 計算式繰り返し位置番号 ) ) という式で、各繰り返し位置を設定します。
Last edited by Shin (2021-10-31 14:45:41)
Offline
|りんご|りんご|ばなな|めろん|ばなな| ➡ |りんご|ばなな|めろん|空白|空白|
目的が例示通り、順序を維持した一意配列化に在るなら、
UniqueValues関数はソート処理が基準の機能のため、今回は使えないでしょう。
地道に前から1項づつ重複精査しながらループ回しする作案です。
【値一覧化スクリプト】サンプル
変数を設定[ $UniqueValues ;
値 :
Let(
[
$val=List(フィールド1);
$i=0;
$n=0;
$res="";
$LOOP="Case($i=5; $res;
Let([
$i=$i+1;
$itm=GetValue($val;$i);
$res=List($res; Case(IsEmpty(FilterValues($res;$itm)); $itm))
]; Evaluate($LOOP))
)"
];
Evaluate($LOOP)
)
]
Loop
Exit Loop If [ Let($n=$n+1; $n>5) ]
フィールド設定 [ フィールド1[$n] ; GetValue($UniqueValues; $n) ]
End Loop
Offline
Shin様Hiro様
いつも助けていただけきありがとうございます。
Shin様>くり返しフィールドで入力するフィールドから、結局一個ずつ抜き出していたので、そもそものフィールドを増やすことにした。
Hiro様>繰り返しフィールドを使わなくしたのですが、非常に参考になるスクリプトをありがとうございます。
今回は、順番はそこまで気にしていませんでしたので、
let(
$list=List(フィールド1;フィールド2;・・・;フィールド5);
if(ValueCount ( $list ) = ValueCount ( UniqueValues ( $list ) ) ;1;0))
の結果で条件分岐させて、内容に重複があったら(他のフィールドに入っている値と同一を入力されたら)レコード復帰させる形で解決しました。
解決しましたありがとうございます。
Offline
> UniqueValues関数はソート処理が基準の機能のため、今回は使えないでしょう。
検証スミです。ソートもされませんが。
UniqueValues はソートとは関係ないのでは。内部では、IsEmpty(FilterValues($res;$itm)) と同じ条件で値を出てきた順で追加している処理をしていると思います。
フィールドを分けるのでしたら、別テーブルにしておき、リレーションをはります。そのテーブルでユニークにしておくと簡単です。
Offline
>フィールドを分けるのでしたら、別テーブルにしておき、リレーションをはります。そのテーブルでユニークにしておくと簡単です。
なるほど、FileMakerは色々な方法が勉強になります。別テーブルの方法も検証してみます。
ありがとうございます。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 512.09 KiB (Peak: 516.63 KiB) ]