みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんにちは。
FileMaker17をWinで使用しています。
現在、親テーブルとポータルを置いた子テーブルで構成されたごく一般的な受注入力を
行っているのですが、明細内の各商品の数量に対して「札番号」をつける事になりました。
その「札番号」というのが、「2-001」のように
【頭】 1~9 &【ハイフン】"-" &【シリアル番号】"001"になっていまして
【シリアル番号】が999の次は、頭2から3に繰り上がる仕様を希望しています。
2-999の次は3-001から始まるという具合です。
更に、商品の数量によって札版を生成し、","で横に並べたいのですが、番号の付け方から分からなく、教えて頂けないでしょうか。
数量によって明細内の札番号フィールド枠をオーバーして見えなくなっても構いません。
データとして保管はさせたいです。
-------------------------------------------
商品 数量 札番号(テキスト)
-------------------------------------------
スカート 2 2-001、2-002
ズボン 3 2-003、2-004、2-005
Yシャツ 1 2-006
-------------------------------------------
何卒よろしくお願いいたします。_(._.)_
2というのが親の番号でなくただの全体の連番なので、ハイフンで分ける意味がないのでは?
札番号を一度付けたら変更できないんでしょうから、何か「受注確定」のフラグを使ってその明細にだけ番号を付けないと
前の受注で明細の件数が変更になった場合に重複したら困りますよね。
(例えば次の受注で2-007を付けたら、この受注のYシャツを数量2に変更できない)
基本的な付番は、単なる4桁のシリアルですよね。3桁区切りにしておいて、区切り文字をーにしておき、X000にならない処理をするだけでしょう。
具体的な構成は、別テーブルにシリアルを打ったレコードを十分用意して、伝票明細のキーをそのテーブルで数量ずつリレーションキーとして設定していけばいいでしょう。そのシリアルをList()で取り込んで、改行を、に置換すればいいです。
開始0増分1のシリアルから、2001+シリアル*1000/999の値の整数部が条件に合った数字になります。
Last edited by Shin (2023-11-30 23:59:58)
Offline
himadaneeさん、ご返信ありがとうございます。
売上計上する前の受注段階で伝票単位でのキャンセルや変更は非常に少なく、ごくまれに明細単位での変更があるので、明細上のボタンを押したら札番、確定みたいな感じがいいのでしょうか。
ごくまれでも、
以前の明細に変更があった場合、
以降の札番号を全部振りなおすのでしょうか?
また、この札番号では、
10000までいかずに使い切ってしまいますが、
それ以降はどうします?
Offline
多分「札」という物理的なものと連動させるんでしょうから、振り直しはしないのでは。
1つの明細とか受注の中で札番が連続している必要はないんでしょうから、Shinさんのように別のテーブルに札番を保存しておけばよさそうですね。
それなら、確定がどうとかいわずとも随時番号を付けてしまってもいいですが、
(キャンセル=明細か受注の削除、とか数量を減らして不要になった)札番をなるべく無駄にしたくないなら、確定ボタンみたいなのがあった方がいいでしょう。
Shinさん、ご返信ありがとうございます。
ほんとですね!単なる4桁のシリアルですね。中にハイフンがあるだけで、そういう事に気づけないのがショックです;;
基本的な付番は、単なる4桁のシリアルですよね。3桁区切りにしておいて、区切り文字をーにしておき、X000にならない処理をするだけでしょう。
具体的な構成は、別テーブルにシリアルを打ったレコードを十分用意して、伝票明細のキーをそのテーブルで数量ずつリレーションキーとして設定していけばいいでしょう。そのシリアルをList()で取り込んで、改行を、に置換すればいいです。
開始0増分1のシリアルから、2001+シリアル*1000/999の値の整数部が条件に合った数字になります。
「伝票明細のキーをそのテーブルで数量ずつリレーションキーとして設定」というのが難しかったので、
受注側明細の数量の横にボタンを置き、スクリプトで数量分をLOOP処理で別テーブルに札番号を生成させ増分を拾って、その別テーブルのListを改行から”,”に置きかえて貼り付けるような感じでも大丈夫でしょうか・・・。
チポさん返信ありがとうございます。
上司に聞いてみました。受注に変更があった場合、札番号は変更があっても構わないそうです。
例えば、明細で
1行目 2-001
2行目 2-002,2-003
3行目 2-121,2-122(修正があった箇所)
番号も9-999以降は1-001から始めていいそうです。
それなら、
修正は新規レコードと同じように考えればいいでしょう。
その振り方はいろいろ考えられますが、
スクリプトの処理が手っ取り早いのでは。
数量分Loopで回して、
最終札番号に1を足して処理して行けばいいのでは。
Offline
また新しい条件の追加ですか。
0から始まるシリアル値に対して、
Replace (
Mod ( Int ( 1 + serial * 1000 / 999 ) ; 9000 ) + 1000 ;
2 ; 0 ; "-"
)
という計算式で札番が求められます。これを別テーブルに仕込めばいいでしょう。
https://www.dropbox.com/scl/fi/27j1dviw … g45x3&dl=0
Last edited by Shin (2023-12-01 15:17:35)
Offline
Shinさん、サンプルまで作っていただいてありがとうございます。
Replace という関数の動きや入力自動化のシリアルを使用して増分させる方法を初めて知り感動しました。
本当にありがとうございました。
Mod ( Div ( serial ;999 ) ; 9 ) + 1 ) & “-“ & Mod ( serial ; 999 ) + 1
でもいいかもしれません。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 526.69 KiB (Peak: 547.59 KiB) ]