番号の自動振り分けについて

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 番号の自動振り分けについて

5 件の投稿を閲覧中 - 1 ~ 5 件(全 5 件)
  • 著者
    投稿
  • #7405
    cosmo
    一般参加者

    お世話になっております。
    番号の自動振り分けの方法について質問がございます。

    現在は、製品の受注があるたびに手入力で番号を振っているのですが、
    この作業を自動化することは可能でしょうか?

    具体的には、桁数は6桁で固定し、
    上2桁は年度(2024年であれば24)
    下4桁はその年の受注順の番号(2024年度の1個目であれば0001)
    という具合での振り分けを考えております。

    添付ファイルのような方法は思いついたのですが、
    年度が替わった場合に、自動でカウントを0001からスタートさせる方法は思いつきませんでした。

    尚、データベースには製品番号(int)で登録されております。

    ご教授いただけますと幸いです。
    よろしくお願いいたします。

    #7407
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    会計年度期間を「4月~3月」と仮定すると、現在日時から月数を「3」引くことで、1月から3月も前会計年度に含めることができます。
    また、カウンターのリセットについてはアプリケーション起動時に前回使用時までの「年」と今回起動時の「年」を比較して、違いがあった時に[数値入力カウンタ]の値を「0」に設定することが考えられます。

    ただ、この「年」と[数値入力カウンタ]の最終値を含む受注番号をデータベースに登録しない場合には、前回までの値を知ることが難しくなります。アプリケーションビルダーでアプリケーションを起動し、終了時に必ず保存すれば[ラベル]などのGUI部品に設定された値は保持されますが、完成したアプリケーションを毎回上書きしていくことになり、また保存忘れなども起こり得るかと思います。
    また、ファイルの内容を編集する必要のないユーザーが使用する際にはアプリケーションローダーでの起動をお勧めしておりますが。[アプリケーション]のメソッド「save(File)」を設定した場合を除き、ローダーではアプリケーションファイルが更新されることはありません。

    データベース以外でアプリケーションファイル外に値を保存したい場合は「iniファイル」(設定ファイル)の使用をお勧めしております。
    iniファイルはキーと値を「=」でつないだ書式を持つテキストファイルです。
    MZプラットフォーム研究会のHPからもダウンロードできる「MZ Platform IoT Toolkit」内のアプリケーションでも使用しております。
    必要時にこのiniファイルからキーに相当する値を読み込み、また保存することができます。

    会計年度の設定とiniファイル読み込み・保存の処理を設定したファイルを添付いたします。またiniファイルも添付いたします。iniファイルはアプリケーションファイルと同じフォルダに保存してお試しください。
    上記の処理はアプリケーション開始時が適当かと思いますが、分りやすいようにボタンを押したら行われるようになっています。

    ファイルをご確認いただき、ご不明な点、ご要望等がございましたら、再度ご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。

    添付ファイル:
    #7409
    cosmo
    一般参加者

    お世話になっております。
    アドバイスをいただき誠にありがとうございます。

    添付ファイルを確認いたしました。
    質問なのですが、データベースを使用した場合とiniファイルを使用した場合のPCへの負荷に違いはございますでしょうか?
    低スペックのPCや裏で様々な演算を行っているPCでの使用も考えており、余り負荷のかからない方を選ぼうかと考えております。

    また、添付ファイルのおかげで、iniファイルを使用しての作成方法は理解できたのですが、データベースを使用した場合のSQL構文などが分からずに困っております。
    イメージとしては、年度を表す上2桁の数字とカウントの下4桁の数字を保存し、アプリ使用時には最後に更新されたデータを呼び出すのかと考えたのですが、実現方法がわからずに困っております。

    ご教授いただけますと幸いです。
    よろしくお願いいたします。

    #7412
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。

     iniファイルではどうしてもアプリケーションファイルとは別にもう一つファイルを管理することになりますので、データベースにデータが格納できるのでしたら、そちらに越したことは無いと存じます。

     現在のところ受注番号を格納する列があるかどうか不明ですが、受注番号は「230012」等そのまま格納し、MZ側に読み込んだ後、「年度」と「連続番号」に分割するのが簡単かと考えます。
    例えば受注番号のデータベースでの列名を「num」と仮定して
    1)SQL文「select MAX(num) from テーブル」を実行します。これで最大の(=最後の)受注番号を取得できます。
    2)取得した1行1列のテーブルのセルの値を取得し、[文字列格納変数]に設定します。
    3)[文字列格納変数]では最初から数えて〇番目、または最後から数えて〇番目までの部分文字列を取得できます。最初から2文字、最後から4文字目までの文字列を取得し、年度と連続番号とします。
    この後は前回と同様の処理で受注番号を作成できます。

    もし、データベーステーブルへの後からの列追加等で、受注番号の列に「NULL」値が入る可能性がある場合には「SELECT COALESCE(MAX(num), 230000) FROM table」としておけば、最大ととしてNULL値が取得されるケースでも「230000」が取得されます。

    データベースにデータ追加時には、現在もInsert文で処理を実行されていると思います。nsert文に受注番号分の列名と値を追加する以外、特に大きな相違はありません。

    実際には動作しませんが、上記処理の流れが判るように修正を加えてサンプルファイルを添付いたしますので、ご参考になれば幸いです。
    ご不明な点、ご要望等ございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    添付ファイル:
    #7414
    cosmo
    一般参加者

    お世話になっております。
    ご助言いただいた通り、データベースを活用することにいたしました。
    また、SQL構文なども大変わかりやすく、無事に欲しい機能を追加することができました。
    誠にありがとうございます。

5 件の投稿を閲覧中 - 1 ~ 5 件(全 5 件)
  • このトピックに返信するには、ログインしてください。