テーブルの項目の並び順を変更するには?


物理テーブル上の項目属性の並び順は、GeneXus IDE上では変更する事が出来ません。GeneXusは物理的な項目の並びを意識しない思想なので、項目を追加した場合は物理テーブルの最後尾カラムとして追加されます。

とはいえ、データ移行やテーブルの直接メンテナンスなど、人が目で見てデータを操作する場合は、論理的な並び順に準拠して欲しいものです。

トランザクションとテーブルオブジェクトの比較。
後から追加した「CustomerPhoto(顧客写真)」がトランザクションでは顧客TELの前に位置しているが
テーブルオブジェクトではカラムの最後尾に追加されている。

項目の並び順をトランザクションと揃えたい場合(論理的な並び順に変更したい場合)は以下の方法を使います。



①ナレッジベースをすべてエクスポート(xpz)
②新規にナレッジベースを作成する
③作成した空のナレッジベースにエクスポートしたxpzをインポートするが、この時テーブルオブジェクトは除外する(インポートしない)

テーブルオブジェクトのチェックを外してインポートする


インポート時テーブルが含まれない場合、GeneXusはトランザクションのストラクチャー情報を元に正規化処理を実行しテーブルを生成します。これにより、トランザクションのストラクチャーに定義された並び順で項目が出来上がります。

インポート後の新しいナレッジベースでの比較
トランザクションとテーブルオブジェクトで項目の並び順が揃っている

注意点としては、テーブルが新規に作成されるので、今まで指定してきたテーブル名、デスクリプションは保障されません。(あくまでも思想的にサポートされていない機能をテクニックでカバーしていますので)

尚、このテクニックはナレッジベースの再作成を伴いますので頻繁には行えません(特にチーム開発でGeneXus Serverを使っている場合)。ナレッジベースを再作成した場合は、環境まわりの設定を行ったり、再度フルビルドが必要になるためです。フェーズの変わり目など、全員の作業が一旦止められる時に行う事をお勧めします。



コメント

このブログの人気の投稿

データプロバイダーを使いこなそう - 応用編その4 スケジューラー 補足編

HTMLヘッダーにあれこれ直接追加したいとき

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications