マスタ管理機能について

4 件の投稿を閲覧中 - 1 ~ 4 件(全 4 件)
  • 著者
    投稿
  • #7619
    koni
    一般参加者

    いつもお世話になっております。
    チュートリアル「金型履歴管理システム」を参照にして、マスタ管理機能の追加を検討しており、質問があります。

    マスタに保存されているテーブルデータを選択した後に、「並べ替え」の処理を追加したいのですが、良い方法があれば教えていただけますでしょうか。

    例えば、
    ①選択行データを1行分「上に移動」「下に移動」した後、SQL保存する
    ②社員番号(通し番号)で並べ替え後、SQL保存する
    (MZ上でテーブルの並べ替え実施後、一括でテーブルごとSQL保存する)
    操作を実施したいと考えています。

    自力で検討してみましたが、テーブル一括での保存や、idでの並べ替えを試みてエラー表示などが出てしまい、苦戦しています。

    よろしくお願いいたします。

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

    お問い合わせありがとうございます。
    「金型履歴管理システム」のテーブルに基づいて回答いたします。

    「金型履歴管理システム」内のテーブルには必ず「id」列があり、「auto_increment」属性を設定して自動的に現在カラムに格納されている最大の値に「1」を加算した値を格納しています。任意の値を設定することは可能ですが、通常はデータ追加時に「id」の値を指定せず自動的に連続して設定されるようにします。
    MZの処理の中では、検索結果テーブルの「id」列は削除し、表示していません。
    新規データ追加の際も「id」値の指定は不要なので、欄を表示していません。

    また、「auto_increment」値は再利用はしませんので、もしこの「id」値を手掛かりにしたい場合は一旦データベーステーブルのデータを削除して、またテーブル全行を追加する形になるかと思います。全て新規のidになります。

    さらに、select文で取得されるデータの並び順は、順番を明示的に指定しない限り、担保されていません。ですので、理論的にはテーブルデータの行の並べ替えを行っても、その順番でテーブル行が取得されることは保証されません。

    以上のことから、データベース内のテーブルデータはそのままで、Select文にORDER BY句などで条件を付けてデータ取得することが考えられます。
    元々社員番号や製品番号などの一意のデータがテーブル内にあれば、その列をキーに順番を指定できるかと思います。

    しかし、キーになるデータがなかったり、ランダムに並べ替えたいという場合は、データベース内のテーブルに並べ替え用の番号の列を追加する必要があります。MZ上では『開発チュートリアル(活用編)』にあるように、[テーブル]の選択行を移動させることは比較的簡単にできますが、移動した後の番号の振り直しの処理と、並べ替え用の番号のデータベースへのUpdateの処理を考える必要があります。

    以上、まずはデータ取得時の並べ替えをご検討ください。
    例えば[作業者マスタ]複合コンポーネント内の[ファンクション(ID:4-1-25 一覧取得)]の接続先処理に、メソッド「SQL実行:自動接続、切断」を行う[MySQL IF(ID:4-1-1-)]複合コンポーネントがあります。この引数の最後の部分「order by staff.id;」のところを「 order by staff.number;」に変更し、マスタ管理ダイアログで表示すると社員番号による並び変え指定が確認できます。

    「金型履歴管理システム」のマスター表示では[ツリー]と、各マスター用の[複合コンポーネント]を使用していることでかなり複雑になっているので、お手元のデータに適用する場合はもう少し簡略にすることも可能ではあるかと存じます。

    ご不明な点。ご要望等ございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7622
    koni
    一般参加者

    ご回答ありがとうございます。

    現状、私しかマスタ編集ができない経緯があり、マスタ管理機能が必要と感じていたところ「金型履歴管理システム」を見つけ、導入を検討しました。

    もともと、マスタの登録時には
    「ID列をいったん削除して、空のID列を追加」⇒「ID列のオートインクリメントをリセット」⇒「データベース登録」
    という処理をしておりました。

    テーブルの選択行データの移動は『開発チュートリアル(活用編)』でできましたので、こちらを活用しつつ検討したいと思います。

    今後ともよろしくお願いいたします。

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

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

    個人的な意見になりますが、IDが一意に管理できるなら無理にauto_increment設定にする必要は無いですし、IDの代わりに他に一意になるデータ(例:社員番号、電話番号、データ追加日時)があれば、それを主キー列として扱うことも考えられるかと存じます。

    金型履歴の複合コンポーネントが流用できるようでしたら、少し改修の必要も生じるかと思いますので、どうぞ今後とも疑問の点はご連絡いただければ幸いです。

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