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

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

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

You are not logged in.

Announcement

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


#1 2020-06-26 12:01:44

げっさん
Member

シリアルナンバーをユーザ毎に付けるには?

いつもお世話になります。

例えばユーザが3名おり、それぞれ以下のようにシリアルナンバーを付けたいです。

A20001(Aさん)
B20001(Bさん)
C20001(Cさん)

A 20 001と分けて、Aがユーザ頭文字、20が西暦、001が連番となります。

AさんはスタートがA20001となり、A20002、A20003となります。
2021年の1月1日以降はA21001となり、A21002、A21003という風にしたいです。

ちなみに、各ユーザがログインする毎に該当するユーザのレコードのみ、ソートをかけるようにしております。

どのような方法が可能でしょうか?

Offline

#2 2020-06-27 19:11:27

Shin
Member

Re: シリアルナンバーをユーザ毎に付けるには?

レコードを削除した時、シリアルナンバーがどうなるのか、によって色々と変わりますが。

レコード削除がない、または、削除されたレコードは無視されシリアル番号は詰められる、という動きでしたら、
普通にシリアル番号をもたせるフィールド、作成日付より年を取り出したフィールド、作成アカウント名のフィールド、を作ります。次の自己リレーションを張ります。
  作成年   = 作成年
  作成者   = 作成者
  シリアル ≧ シリアル
作成者 & 作成年 & Right ( "000" & Count ( リレーション::シリアル ) ; 3 )
という式で求められます。

Offline

#3 2020-06-30 18:40:02

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Shinさん

返信ありがとうございます。

作成者 & 作成年 & Right ( "000" & Count ( リレーション::シリアル ) ; 3 )

こちらなんですが、A20000からスタートし、新規レコードをしてもA20000になります。

確認なんですが、「入力値の自動化」の計算式に入力するんですよね?!

後、( リレーション::シリアル ) を( シリアル )に変更したら、

A20001からスタートし、その後もA20001でした。

どこか問題があるんでしょうか?

Offline

#4 2020-07-01 11:10:57

Shin
Member

Re: シリアルナンバーをユーザ毎に付けるには?

それでもいいのですが。自動入力にするとタイミングで一つ前のシリアルになります。説明が面倒なので、サンプル見てください。対策してあります
https://www.dropbox.com/s/kdfjet8vpdxon … 2.zip?dl=0

Last edited by Shin (2020-07-01 11:13:23)

Offline

#5 2020-07-06 11:28:17

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Shinさん

サンプルファイルありがとうございます。
実際にサンプルを見ながら、自身が作ったモノと比べております。
そこで気付いたのですが、Shinさんに作って頂いたファイル内にある「テーブル 2::serial」フィールドに該当するフィールドが、私のところでは何も値が入らない事に気付きました。
本来、「テーブル 2::serial」フィールドは「admin」と「adminb」で新規レコードをそれぞれ作った時、最初は何も値が入りませんがその後はそれぞれ「1」と「2」が入るようになっていますが、わたしの所では何も入って来ません。
何度も何度も見直しているのですが、どうもそこがおかしい感じです。
何が原因でしょうか?

Offline

#6 2020-07-06 11:57:28

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Sinさん

追記です。
念の為に「テーブル 2::作成者」と「テーブル 2::作成年」フィールドに該当するフィールドも確認しましたが、二つとも値が入っておりません・・・。
これでは自己リレーションが成り立ちませんよね・・・。
「Count ( テーブル 2::シリアル )」に該当するフィールドも確認の為にレイアウト上に出してみたのですが、こちらがずっと「1」のままなのでおかしいとは思っていました。

Offline

#7 2020-07-08 14:48:29

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Shinさん

別件で質問をさせて頂いた後、こちらを確認すると見事に出来ました!!

計算フィールドですと、どうしても過去のシリアルまで置き換わってしまうので、可能であれば自動入力が希望です。
となると、ルックアップの方が良いかもなんで、色々試してみます。

本当にありがとうございます!!

Offline

#8 2020-07-08 15:13:19

Shin
Member

Re: シリアルナンバーをユーザ毎に付けるには?

レコードの削除を行わない運用を考えると、計算フィールドでも支障無くなりますよ。

Offline

#9 2020-07-08 16:16:12

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

shinさん

計算フィールドですと、どうしても元々入っているレコードに対してまで影響されますよね?!
それですと正直困るので・・・。

Offline

#10 2020-07-08 16:29:34

Shin
Member

Re: シリアルナンバーをユーザ毎に付けるには?

社内の運用では、計算フィールドで顧客ごとシリアルをふっていますが、一切レコード削除を許していないので全く困っていませんが。

自動入力で設定するのでしたら、リレーションで最終レコードを探して、それから加工、という処理を行えばいいです。ただし、これも最終レコードが削除された際には、その削除されたレコードと同じシリアルを新規レコードに与えることになるので、厳密には影響されてしまいますよ。それも排除するには、レコード削除を許さないか、ユーザーごとに最終シリアルを管理するテーブルを作ることになります。
ルックアップを使うと、別の用件で再ルックアップをしてしまったりすると、再設定されてしまう可能性があります。

Offline

#11 2020-07-08 17:28:31

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Shinさん

社内の運用では、計算フィールドで顧客ごとシリアルをふっていますが、一切レコード削除を許していないので全く困っていませんが。

実際にShinさんもこちらの方法で運用されているんですね。
それなら、なおさら安心です。
私自身もレコード削除は一切しないように考えておりますが、一部レコードはどうしても古いシリアルナンバーを活かしたかったので、計算フィールドにしてしまうとマズイなぁ~と思っています。

自動入力で設定するのでしたら、リレーションで最終レコードを探して、それから加工、という処理を行えばいいです。

なるほど、最終レコードを探してからの加工ですね。
それなら私でもなんとか出来そうです。

ただし、これも最終レコードが削除された際には、その削除されたレコードと同じシリアルを新規レコードに与えることになるので、厳密には影響されてしまいますよ。それも排除するには、レコード削除を許さないか、ユーザーごとに最終シリアルを管理するテーブルを作ることになります。

なるほど、どうしてもレコードを削除しなければならない場合、最終シリアルを管理するテーブルがわざわざいる訳ですね。
今のところ、レコード削除はする必要無いと考えておりますので、もしどうしても必要になった場合に考えてみます。

ルックアップを使うと、別の用件で再ルックアップをしてしまったりすると、再設定されてしまう可能性があります。

なるほど、それはそれで危険ですね・・・。
こちらは止めておきます。

本当にありがとうございます。
正直、今回はお手上げと思っていましたが、無事にやりたい事が出来そうです。
また、分からなくなったら質問させて頂きます。

Offline

#12 2020-07-10 13:33:36

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

Shinさん

またまた困った事がおこりました。
例えば、A20001というシリアルナンバーがついたレコードを複製した場合、やはり同じシリアルナンバーになってしまうんですね・・・。
前回のレコードと同じレコードの内容を一部変えて利用するのは度々ありますので、どうしたものかと思っています。
何か良いアイデアはありますか?

Offline

#13 2020-07-13 14:05:56

げっさん
Member

Re: シリアルナンバーをユーザ毎に付けるには?

自己レスです。

スクリプトで出来ました!!
簡単に説明すると、複製した後対象フィールドに対して教えて頂いた計算式を「フィールド設定」で置き換えると出来ました。

お騒がせしました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 7 queries executed - Memory usage: 552.68 KiB (Peak: 573.59 KiB) ]