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

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

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

You are not logged in.

Announcement

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


#1 2023-10-23 16:39:19

hihi0921
Guest

IDが複数ある場合、レコード番号にアルファベットを追加したい

Get(レコード番号)で順番になるようにしていますが、
同じ顧客IDなら1-A、1-Bとなるようにしたいです。

*例
レコード番号
1-A
1-B
2
3-A
3-B
3-C

尚、重複しない場合はアルファベットをつけないようにしたいです。

この計算式までたどり着いたのですが、うまくいきません。

If ( not IsEmpty ( Self ) ;
    Let ( [
        #customerID = 顧客ID ;
        #recordNumber = Get ( レコード番号 ) ;
        #duplicateCount = Count ( FilterValues ( List ( 顧客ID ) ; #customerID ) ) ;
        #duplicateSuffix = If ( #duplicateCount > 1 ; "-" & Char ( 64 + Mod ( #recordNumber - 1 ; #duplicateCount ) + 1 ) ; "" )
    ] ;
    #recordNumber & #duplicateSuffix )
)

#2 2023-10-23 17:43:48

Shin
Member

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

レコード番号は、1.2.3 と振られていきますので、それを書き換えても、1-A, 1-B の次は 3 になりますよ。

Offline

#3 2023-10-23 19:34:00

himadanee
Guest

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

つまり、この場合レコード番号は全く関係なくて、グループ番号とでもいうべき顧客IDの番号が必要ですよね。
上から順に計算しても得られないので、自己リレーションかSQLか集計フィールド(リスト)を使うでしょう。

と思ったけど、GetNthRecordを使えば上から順でも可能か...
バージョンによりますね。

#4 2023-10-24 15:56:10

Shin
Member

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

顧客IDで自己リレーションをはり、レコード番号でソートしておきます。

Let (
[
	slst = ¶ & List ( テーブル 2::レコード番号 ) & ¶ ;
	suf  = ValueCount ( Left ( slst ; Position ( slst ; ¶ & レコード番号 & ¶ ; 1 ; 1 ) ) )
] ;
	Case (
		ValueCount ( slst ) = 2 ; 顧客ID ;
		顧客ID & "-" & Char ( Code ( "A" ) - 1 + suf ) 
	)
)

https://www.dropbox.com/scl/fi/dci0bwx1 … qcp0x&dl=0

Last edited by Shin (2023-10-24 16:01:45)

Offline

#5 2023-10-25 09:10:39

チポ
Member

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

表題
>  IDが複数ある場合、レコード番号にアルファベットを追加したい
この
レコード番号に

レコード番号順に
の間違いですよね。

もし、それがレコード作成順ということなら、
レコードID順が正しいですね。


これらが正しいのなら、
レコードIDフィールドを作り、
自己リレーション
  顧客ID =  顧客ID
  and
  レコードID > レコードID
として、

顧客ID & Case ( IsValid ( ::顧客ID )  ; "ー" & Char ( Code ( "A" ) - 1 + Count ( ::顧客ID ) ) )
でいいのでは。

これは、
顧客IDフィールドを書き換えてはリレーションが成立しなくなるので、
新たな計算フィールドとしたほうがいいでしょう。

Offline

#6 2023-10-25 09:45:48

Shin
Member

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

チポさん、その構造ですと
1
1-A
2
3
3-A
3-B
になってしまいます。

> 重複しない場合はアルファベットをつけないようにしたい
この条件ですと、リレーションを2本張るか、上の式にするか、になってしまいそうですが。

Offline

#7 2023-10-25 10:02:39

チポ
Member

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

ああ、読み違えていました!!

私の考え方だと、
自身の後ろの関連レコード有無の判定が必要になり、
確かにもう一つリレーションが必要になりますね。

Offline

#8 2023-10-26 19:56:31

himadanee
Guest

Re: IDが複数ある場合、レコード番号にアルファベットを追加したい

レコード番号というのはソートした後でつくものなので、「レコード番号でソート」というのはちょっと違和感が。。。

検索して顧客ID(と何か日付とか年度・月度とか?)でソートしたあとのレコードに番号とアルファベットを付けたいんでしょうから、
リレーションを使うのならそこの条件を明示してもらわないとリレーション条件が決まりません。
(検索条件をリレーションに反映させる必要がある)

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 560.55 KiB (Peak: 579.2 KiB) ]