みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
oniasです。こんにちは! FM15 Win10、8.1、iPhon6s
以下のソード済みのレコードへ条件付きでフィールドBへ
連番をうまくつけられないのですが。
※作業前でソート後の状態
フィールドA フィールドB
レコード1
レコード2
レコード3 文字入力A
レコード4
レコード5
レコード6
レコード7 文字入力B
レコード8
レコード9
レコード10
以下のように番号を付与したいのですが、どうしてもうまくいきません。
※スクリプト反映後の状態として
レコードは数百ありますが、文字A、文字Bはどこに入るかバラバラです。
最初のAにたどり着くまでは、スペースが条件で、文字Aから以降は
次の文字にたどり着くまで「2」番から連番としたいのです、
フィールドA フィールドB
レコード1
レコード2
レコード3 文字入力A
レコード4 2
レコード5 3
レコード6 4
レコード7 文字入力B
レコード8 2
レコード9 3
レコード10 4
宜しくお願いします。
Offline
スクリプトで
レコードを一つ一つ確認して
文字入力A にぶつかったら
次のレコードが 文字入力B でない限り
フィールドに連番を入力していく
ということでしょうね。
ただ、最後はどうなるんでしょう?
Last edited by シーラカンス (2017-03-22 19:59:05)
Offline
細かいことがわからないので
フィールドBが基本的に空白で
そこに 文字入力B などのテキストが時々あるというレベルで
スクリプトを使って
連番を入れるサンプルを
http://yahoo.jp/box/-i04N3
におきました。
Offline
計算値で「フィールド内容の全置換」すれば一発です。
・フィールドは、「フィールドB 」とし、
・計算式は、以下
Let([
#n=Case(テーブル名::フィールドB<>""; 0; $n);
$n=Case(#n>0; $n+1; テーブル名::フィールドB)
];
$n
)
【式訂正】
上式の結果に勘違いが有りましたので、訂正の上、お詫びします。
(連番を1番スタートと勘違いしてたのを2番スタートに変更しました。)
Let([
#chk=テーブル名::フィールドB<>"";
$flg=Max($flg; #chk);
$n=Case(#chk; 1; $n+1)
];
Case($flg and $n>1; $n; テーブル名::フィールドB)
)
Last edited by Hiro (2017-03-22 21:50:46)
Offline
Hiroさん
つかぬ事を伺いますが、
この計算式の結果ですが
次に使おうとすると
変数がクリアされてないんですよ
どうも、FMPの変数って仕様通りにいかないみたいで
私の環境は FMP12です。(13以降で変わっていればいいんですが)
Offline
つかぬ事を伺いますが、
この計算式の結果ですが
次に使おうとすると
変数がクリアされてないんですよ
どうも、FMPの変数って仕様通りにいかないみたいで
あれ、妙ですネ。
利用しているのはローカル$変数なので、「全置換」処理終了と共に自動揮発消滅するかと?
当方FMP12環境でも仕様通りの挙動を確認しているのですが、...
あっ!そうか、もしかして、
前の置換済の連番がそのまま残ったままで再置換しているとか?
式は、フィールド値があるときはそのまま残留する設計です。
Offline
前にも書いたんですが、
FMPの変数は、仕様の通りではなくて
なんらかの問題で、都度クリアしてやらないと、前の最終値が残る場合があるので
どこかでクリアする計算を入れる、もしくは初期値を設定する必要があるらしいのです。
あの計算式だと、先回やった最後の値を引っ張ってしまうらしいのです。
ということなので
私のスクリプトでは、その影響を受けないように
ちょっと複雑になってしまったと追うことなんです。
それにしても、不思議なFMPの仕様だと思ってます。
これは、現状の問題点なので
多くの方に知っておいていただきたい注意点です。
Last edited by シーラカンス (2017-03-22 23:21:27)
Offline
こちらの全置換変数式の再度検証でも、そのような処理終了後の残留問題は見受けられません。
Offline
oniasです。
皆さん有難うございます。
やはり、変数を使わなければ、ダメなんですね。
勉強しなくては・・・
サンプルや計算式をいろいろ試させていただきましたが
最終的に、hiro様の【式訂正】を引用させていただきました。
何度も、繰り返しいろいろ試しましたが、期待どおりの値が
出るようになり、助かりました。
Offline
oniasです、追伸
私も、処理終了後の残留問題は見受けられませんでした。
なんでしょうね。
Offline
Hiroさん
ごめんなさい
修正版の式では問題はありません。
タイムラグで
修正版があることに気づいていなかった
しかし、
修正前はなぜ 残るんでしょうねぇ?
Offline
Pages: 1
[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 570.98 KiB (Peak: 587.88 KiB) ]