過去の桐井戸端BBS (桐ver.9)
22933 年度の数字と月の数字とその月で1から始まる3桁の連番で自動的に発番したい poor_quark 2003/10/23-10:09
 作業日(date型)、作業内容、請求金額、請求先、請求日などの項目を持つ十年間で一万行ほどの表があります。
これに作業コードを自動的に発番したいのですが、どのように項目を設定したらよいでしょう。(あるいは項目置換で)

 発番のルールは年度(第何期)の数字文字列二桁+作業日の属する月名二桁+その月の初めからの1からの連番三桁で
それぞれゼロサプレスありでそのために文字列として扱う予定です。
目的はリースや材料費などの外部業者からの請求明細を別の表で作り、そこから作業コードをキーとして表引きを行い、
粗利を出すためのものです。
決算期は十月一日から翌年九月三十日までです。
平成の年をつかってもいいのですが。

 ご存じの方、いらっしゃいましたらよろしくご教授ください。
22934 Re:自動発番 うにん 2003/10/23-12:25
記事番号22933へのコメント

> 発番のルールは年度(第何期)の数字文字列二桁+作業日の属する月名二桁+そ
>の月の初めからの1からの連番三桁でそれぞれゼロサプレスありでそのために文字
>列として扱う予定です。

「ゼロサプレスあり」だと桁数がそろわなくなりますが?
サプレスとは「抑止」なので、頭の0を付けたい時は「ゼロサプレスしない」です。

年度は #文字列(#元号年([作業日])-(#月([作業日])<10),2) のような感じで。
月「名」というのが不詳ですが、 #文字列(#月([作業日]),2) でいいのかな?
他に作業用に[連番]という項目を #連番 で置換しておくと、
月の初めからの1からの連番三桁の置換式は #文字列(#順位([年度],[月名],[連番]),3)
 でできると思います。

>のです。決算期は十月一日から翌年九月三十日までです。平成の年をつかってもい
>いのですが。

「つかってもいい」とは?

22935 Re:自動発番 宮城 2003/10/23-12:27
記事番号22933へのコメント
poor_quarkさん、こんいちは。

数値型項目[連番]一個追加。項目計算式に次。

#条件選択([作業日]=#直前値([作業日],0),1,1,#直前値([連番],0)+1)

[作業コード]に項目計算式に次。

#部分列(#文字列(#条件選択(((#月([作業日]))>0
.or #月([作業日])<10),#西暦年([作業日])-1
,1,#西暦年([作業日])),4),3,2)
+#文字列(#月([作業日]),2)+#文字列([連番],3)

でどうでしょうか。(検証はしてませんが。)


22937 Re:自動発番 アックン 2003/10/23-12:49
記事番号22933へのコメント
poor_quarkさん、こんにちは。

こんなのでいいでしょうか?
項目計算式か置換式で試してください。

#last( #cond( #mon( [作業日] )>9 , #str( #year( [作業日] ) ) , 1 , #str(
#year( [作業日] )-1 ) ) , 2 )+#str( #num( #last( #str( #mon( [作業日] ) ) ,
2 ) ) , 2 )+#cond( #str( #year( #直前値( [作業日] , "" ) ) )+#str( #mon( #直
前値( [作業日] , "" ) ) )=#str( #year( [作業日] ) )+#str( #mon( [作業日] ) )
, #str( #set( 秒 , &秒+1 ) , 3 ) , 1 , #str( #set( 秒 , 1 ) , 3 ) )

・年度の式
#last(#cond(#mon([作業日])>9,#str(#year([作業日])),1,#str(#year([作業日])-1))),2)

・作業月の式
#str(#num(#last(#str(#mon([作業日])),2)),2)

・連番の式
#cond(#str(#year(#直前値([作業日],"")))+#str(#mon(#直前値([作業日],"")))=
#str(#year([作業日]))+#str(#mon([作業日])),#str(#set(秒,&秒+1),3),1,#str
(#set(秒,1),3))

注意:式は1項目だけで使ってください。
&秒(組み込み変数)を使っているので、複数の項目に使ったり、または項目計算式
にすでに使っているのにさらに置換式で使うと、&秒の値が繰り上がりますから、
正しい結果を得られません。

アックン(=^・^=)

22938 Re:自動発番 poor_quark 2003/10/23-13:23
記事番号22934へのコメント
うにんさん

>「ゼロサプレスあり」だと桁数がそろわなくなりますが?サプレスとは「抑止」
>なので、頭の0を付けたい時は「ゼロサプレスしない」です。

すいません。ものを知らないもので表現を間違えました。穴があったら入りたいところです。

>年度は #文字列(#元号年([作業日])-(#月([作業日])<10),2) のような感じで。
>月「名」というのが不詳ですが、 #文字列(#月([作業日]),2) でいいのかな?
>他に作業用に[連番]という項目を #連番 で置換しておくと、
>月の初めからの1からの連番三桁の置換式は #文字列(#順位([年度],[月名],[連番]),3)
> でできると思います。

なるほどです。よく分かりました。

>「つかってもいい」とは?
>
第何期という数字を使うと面倒かな、と考えたからです。
できれば決算期の方を使いたかったのですが。

 あほな間違いまで指摘して頂いた上に、解決策を伝授頂き感謝します。
ありがとうございました。

22939 Re:自動発番 poor_quark 2003/10/23-13:45
記事番号22935へのコメント
>#部分列(#文字列(#条件選択(((#月([作業日]))>0
>.or #月([作業日])<10),#西暦年([作業日])-1
>,1,#西暦年([作業日])),4),3,2)
>+#文字列(#月([作業日]),2)+#文字列([連番],3)
>
>でどうでしょうか。(検証はしてませんが。)

ありがとうございます。なんとかやってみます。
22940 Re:自動発番 poor_quark 2003/10/23-13:47
記事番号22937へのコメント
Ver2の頃から使っているくせに関数のことは何も知らなくて、このような式を組み立てられる方はただただ尊敬するばかりです。
じっくり勉強させて頂きます。ありがとうございました。

戻る