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

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

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

You are not logged in.

Announcement

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


#1 2017-02-07 11:19:34

ゆうゆう
Member

フィールドにシリアル自動入力

いつもとても参考にさせていただいております。

今レコードが150ほどありチェックボックスを作っています。
チェックボックスにチェックを入れたらその順番通りにフィールドAにシリアルNoが入るようにするにはどうしたらよいでしょうか?
このフィールドAはチェックを入れた時のみ動作し、チェックを外したらシリアルNoは消える用紙できればと思います。

環境はMac10.9でfilemakerpro14を使用しています。

宜しくお願い致します。

Offline

#2 2017-02-07 11:52:27

ゆうゆう
Member

Re: フィールドにシリアル自動入力

ちなみに前はフィールドAにEvaluate ( " Get ( タイムスタンプ )" ; チェック )でチェックした順番で時刻が入るようにしていました。
このタイムスタンプの所をシリアルNoのような感じに出来たらと思います。

Offline

#3 2017-02-07 12:13:44

tim
Guest

Re: フィールドにシリアル自動入力

チェックを外したらほかのレコードのシリアルNoはどうしますか?

タイムスタンプでリレーションして、過去のチェック数+1にすればいいけど

#4 2017-02-07 12:27:45

ゆうゆう
Member

Re: フィールドにシリアル自動入力

tim様

ありがとうございます。
チェックを外したらですが、考えてみましたらシリアルはそのままでも大丈夫です。
ただ再度チェックを入れた時にシリアルが上書きされれば問題ありません。
なのでシリアルNoと記載しておりますが、チェックを入れた時のみの仮Noな感じです。

Offline

#5 2017-02-07 12:39:49

qb_dp
Member

Re: フィールドにシリアル自動入力

やり方の一例です。
フィールドを3つ作成

フィールド:UUID|テキスト|計算値自動入力 既存値を置き換え|Get ( UUID )
フィールド:gUUID|テキスト|グローバル
フィールド:index|計算:非保存|Left ( gUUID ; Position ( gUUID ; UUID ; 1 ; 1 )-1 )
フィールド:index|計算:非保存|PatternCount ( Left ( gUUID ; Position ( gUUID ; UUID ; 1 ; 1 )-1 ) ; ¶ ) + If ( PatternCount ( gUUID ; UUID ) ; 1 ; 0 )


チェックを「入」「切」するスクリプト
If ( PatternCount ( table::gUUID ; table::UUID ) ;
Substitute ( table::gUUID ; [¶ & table::UUID;""];[table::UUID & ¶;""];[table::UUID ;""] ) ;
table::gUUID  & If ( IsEmpty ( table::gUUID ) ; ""; ¶ ) & table::UUID)

フィールド:index にクリックした順番で通し番号が入ります。
初期化は、フィールド:gUUID を空に。



間違えていたので修正しました。
修正:2017/02/07 14:33
誤:
フィールド:index|計算:非保存|Left ( gUUID ; Position ( gUUID ; UUID ; 1 ; 1 )-1 )
正:
フィールド:index|計算:非保存|PatternCount ( Left ( gUUID ; Position ( gUUID ; UUID ; 1 ; 1 )-1 ) ; ¶ ) + If ( PatternCount ( gUUID ; UUID ) ; 1 ; 0 )

Last edited by qb_dp (2017-02-07 14:38:18)

Offline

#6 2017-02-07 12:58:36

シャチ
Member

Re: フィールドにシリアル自動入力

シリアルというフィールドがあるという前提で
自己リレーション X で設定して
スクリプトを作成
・If[メインのテーブル名:チェックフィールド=”ON”]    <== ONは実際に使われている値一覧の値を使う
・フィールド設定[メインのテーブル名::シリアル;Max(自己リレーションのテーブル名;;シリアル)+1]  <==各テーブル名は実際のものに置き換え
・EndIF

このスクリプトをメインのレイアウトの チェックフィールドにスクリプトトリガを設定
OnObjectModify とします。


これで、チェックが入ると自動的に過去の最大のシリアッル+1が入力されます。

Offline

#7 2017-02-07 13:22:59

チポ
Member

Re: フィールドにシリアル自動入力

チェックボックスでリレーションして、
シリアルの入力値の自動化の計算式
  Evaluate ( "Case ( not IsEmpty ( チェックボックス ) ; Max ( リレーション::シリアル ) + 1 )" ; チェックボックス )
でいいのでは。

新たなフィールドも、スクリプトも不要です。

Offline

#8 2017-02-07 14:40:14

ゆうゆう
Member

Re: フィールドにシリアル自動入力

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

チポ様から教えていただいたのを試してみたのですが、確かに数字は入るのですがタイムスタンプのような20170207123592感じになってしまいました。
チェックを入れるとここに1ずつ順番に加算されていきます。

今やったのはチェックボックスで自己リレーション、フィールドAの入力値の自動化から計算式でEvaluate ( "Case ( not IsEmpty ( チェックボックス ) ; Max ( 作品2::フィールドA ) + 1 )" ; チェックボックス )
とやりました。
テーブル名は元は作品となっております。

何か間違っていましたらご指摘いただければと思いますので宜しくお願い致します。

Offline

#9 2017-02-07 15:03:45

チポ
Member

Re: フィールドにシリアル自動入力

既存のレコードのフィールドAにタイムスタンプが入っているのが有るのでは?

Offline

#10 2017-02-07 15:07:45

tim
Guest

Re: フィールドにシリアル自動入力

試してませんが、qb_dpさんのようにグローバルフィールドを使ったりしないと、ファイルが共有されてる時にうまくいかなくなりやすい。スタンドアロンな回答でいいのか気にすべき。

#11 2017-02-07 15:22:28

ゆうゆう
Member

Re: フィールドにシリアル自動入力

ありがとうございます。
こちらの見落としでタイムスタンプが入力されているレコードがあり出来る事が出来ました。

ちなみになのですが、今1〜順番に入るのですが、これを01〜にする事は出来るでしょうか?
このフィールドで最終的にはソートをかけたたいのですが、現状でソートをすると1、11、12、13、2、3、4、5〜のようになっています。
初めにまとめて記載すれば良かったのですが申し訳ありません。

Offline

#12 2017-02-07 15:27:18

qb_dp
Member

Re: フィールドにシリアル自動入力

チェックを外したらですが、考えてみましたらシリアルはそのままでも大丈夫です。
ただ再度チェックを入れた時にシリアルが上書きされれば問題ありません。

ココちょっと気になるのですが、
MAX値加算方式だと、
1~5まで、チェックして番号を振って、「3」のチェックを外す、「3」は、そのまま。
再度チェックを入れた時、上書き「3」が「6」に変わる。
「3」が欠番になる。

のようなことが起こるので、
・「3」を上書きして「5」が入ってほしいが「6」が入る。
・上書きの場合は、番号の振り直しの必要が出て来る。

等などがあるので運用方法によっては、返って面倒では。

UUID グローバル の方法では、
1~5まで、チェックして番号を振って、「3」のチェックを外すと4,5 は、自動で繰り上がります。
また、たくさん設定したあとで、「2」にしたいときは、「UUID」を「フィールド:gUUID」の2行目に挿入するだけ。

また、timさんのおっしゃっているように、ファイル共有でも個々のユーザーで個別のチェックが可能です。
変更しているのは、グローバルフィールドだけなので、レコードも汚さないですし。

Offline

#13 2017-02-07 15:31:00

ゆうゆう
Member

Re: フィールドにシリアル自動入力

qb_dp様

ありがとうございます。
先ほどシリアルはそのままでも大丈夫としましたが、やはりそのままだと面倒な事に気がつきました。
申し訳ございませんでした。

Offline

#14 2017-02-07 15:35:08

チポ
Member

Re: フィールドにシリアル自動入力

私の方法は共有でも大丈夫と思いますが、今テスト出来ません。。
共有でしたら充分テストしてからにしてください。


> 現状でソートをすると1、11、12、13、2、3、4、5〜のようになっています
このフィールドがテキストタイプになっているのでは、
数字にすれば番号順にソートされます。

Offline

#15 2017-02-07 15:42:36

ゆうゆう
Member

Re: フィールドにシリアル自動入力

皆様

ありがとうございました。
無事に全て解決する事が出来ました。

Offline

#16 2017-02-07 15:42:44

チポ
Member

Re: フィールドにシリアル自動入力

んん?

> シリアルはそのままでも大丈夫としましたが、やはりそのままだと面倒な事に気がつきました
途中のレコードのチェックを外したとき、その番号以降のシリアルを振り直して欠番をなくす。
ということでしょうか?

ならば計算フィールドにすればいいのですが。。

Offline

#17 2017-02-07 16:07:59

チポ
Member

Re: フィールドにシリアル自動入力

自分の前レス

> ならば計算フィールドにすればいいのですが
ダメですね。

qb_dpさんのような考え方が必要でしょうか。。

Offline

#18 2017-02-08 13:54:18

ゆうゆう2
Guest

Re: フィールドにシリアル自動入力

すみません、再度質問しようとしたらログインが出来なかったので似た名前で投稿致します。

昨日解決したと思ったのですが、動作がおかしい所があるので再度お願い致します。

昨日教えて頂いた計算式でチェックをするとシリアルが順番で入るようになったのですが、
レコードによってはチェックを外した時にもシリアルは消えずにNoが加算されるレコードがあります。
この症状が出るレコードと出ないレコードがあるのですがこれがなぜだか分からないのですがどうしたらいいのでしょうか?

チェックを外した時のシリアルですが、出来ればその番号以降は振り直して欠番が無くなるのが理想ですが、
外した場合にシリアルが消えれば問題ありません。

#19 2017-02-08 15:27:03

チポ
Member

Re: フィールドにシリアル自動入力

私の計算では

> not IsEmpty ( チェックボックス )
この様に、チェックボックスフィールドが空欄か否かを判定しています。

チェックボックスの値が入力されるとシリアルが振られ、
空欄になるとシリアルの値が削除されます。


このフィールドのチェックを外しても他の値が入っていると、
書かれた様にシリアルが振れ直されます。


チェックボックスはどのようになっていますか?

Offline

#20 2017-02-08 15:50:29

ゆうゆう2
Guest

Re: フィールドにシリアル自動入力

チェックボックスは値一覧で「有り」のみの一つだけ設定してあります。

#21 2017-02-08 15:56:37

Shin
Member

Re: フィールドにシリアル自動入力

チェックで自己リレーションを張って、Evaluate ( " Get ( タイムスタンプ )" ; チェック ) をそのまま使い、リレーションの比較条件にしておきます。そのリレーション先のレコード数を数えれば良いでしょう。ただし、1秒以内に複数クリックされない事が条件になります。
https://www.dropbox.com/s/eyhn1bqq0rpn8 … 7.zip?dl=0

Offline

#22 2017-02-08 16:34:58

チポ
Member

Re: フィールドにシリアル自動入力

チェックボックスのフィールドを
レイアウトに普通の編集ボックスにしてもう一つ配置してその内容を見てください。

何かゴミが付いていませんか?

Offline

#23 2017-02-08 17:26:49

ゆうゆう
Member

Re: フィールドにシリアル自動入力

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

今チポ様のご指摘通り編集ボックスにして調べてみたら入力されているレコードがありました。
それを削除して試したら大丈夫そうです。

お手数おかけしました、解決する事が出来ました。

Offline

#24 2017-02-08 17:26:55

qb_dp
Member

Re: フィールドにシリアル自動入力

出来ればその番号以降は振り直して欠番が無くなるのが理想ですが、

下記の方法であれば、「理想」の動作になりますよ。(^^;)
https://fm-aid.com/bbs2/viewtopic.php?pid=36521#p36521

Offline

#25 2017-02-08 22:28:12

ゆうゆう
Member

Re: フィールドにシリアル自動入力

qb_dp様

ありがとうございます。
こちらも試してみようと思います。

色々と丁寧に教えて頂きとても助かっております。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 574.19 KiB (Peak: 595.09 KiB) ]