Q100:どうしてもウィンドウをたくさん開く形になってしまうため、開発の手間がかかっています。なにか、データベースの取扱方法について別の方法はありますか?データベースのテーブル項目と、表示テーブルの列を接続するイメージでコンポーネントを作れませんか?
Q100-1:
現在、MZとEXCELの両方で簡単な在庫管理を開発しております。開発している中でMZとEXCELを比較したものを添付ファイルと送らせていただきます。MZについて、どうしてもウィンドウをたくさん開く形になってしまうため、開発の手間がかかっています。なにか、データベースの取扱方法について別の方法はありますか?関連ファイルにも書きましたが、データベースのテーブル項目と、表示テーブルの列を接続するイメージでコンポーネントを作れませんか?
関連ファイル:MZPlatformの開発.doc
A100-1:
ご質問の件は、表示テーブルの構成(列名とその順序)によるSQL文生成機能の作成や、データベースアクセスコンポーネントのテーブルデータを用いたデータ操作メソッドを利用することで、ある程度実現できるのではないかと思います。
サンプルアプリケーションを用意しましたので、こちらを用いてご説明いたします。
なお、このサンプルは、接続先データベースが日本語の列名を扱えることを前提としています。そうでないデータベースの場合、表示テーブルの列名と実際のデータベースにおける列名との対応表などを用意する必要があります。
(1) データ参照(SELECT文の実行)
サンプルの[SELECT文作成]ボタンをクリックすると、表示テーブルの列名リストを取得し、両端の括弧を外したのちにSELECT文の雛形に代入することで、SELECT文を作成します。実際のアプリケーションでは、さらにWHERE句の作成が必要になるかと思います。
(2) データ追加
テーブルデータを一括してデータベースへ追加する場合には、データベースアクセスコンポーネントの「insertRowDirectly(String,PFObjectTable)」を使うと便利です。データベースのテーブルには存在しながら、引数のテーブルには存在しない列にはNULLが入ります。
(3) データ更新(UPDATE文の実行)
[UPDATE文作成]ボタンをクリックすると、表示テーブルのデータでデータベースを更新するUPDATE文がテーブルの行ごとに生成されます。実際のアプリケーションでは、さらにWHERE句の作成が必要になるかと思います。
別の方法として、既存データを削除したのちに表示テーブルのデータを追加するという方法も考えられます。あるいは、表示テーブルの編集結果を直接反映させる方法として、「検索結果を用いたテーブル更新処理」を利用する方法もあります。この方法につきましては、付属の「購買管理アプリケーションチュートリアル」の「2.9. データベーステーブル編集機能の追加」をご覧ください。なお、「検索結果を用いたテーブル更新処理」は接続先がエクセルの場合には利用できません。
さて、お送りいただいたWordファイルで述べられている「データベースに特化したモジュール」につきましては、一般のデータベースに対応するものではなく、ある特定のデータベースを想定したものにならざるを得ないと思います。それは、扱えるデータ型やSQL文の詳細な書式、日本語列名の処理などがデータベースによって大きく異なるからです。
また、ご指摘にあった「SQL言語を知らないと開発できない」というのは、「SQL言語を活用できる」というメリットでもあります。言い換えると、SQL言語を知らなくても使えるようにするためには、相当に機能を限定せざるを得ず、それはかなり汎用性の低いコンポーネントになると思われます。
これらのことから、「データベースに特化したモジュール」は、上述のような方法を用いて、接続先データベースと用途をかなり特化した上で、複合コンポーネントとして作成するのが適切ではないかと考えます。
余談ですが、Ver.2.5には、フローチャートを記述することでアプリケーションを自動合成する「アプリケーション合成ツール」とその操作説明書が収録されています。まだ試作品レベルですが、データベースとの連携構築機能も含まれていますので、お時間のあるときにでもお試しください。
最後に、「メソッド/値が長くなると表示しきれないときがある」という点についてですが、Ver.2.5より、固定値の場合には[メソッド/値]欄を右クリック->編集...と選択することで、編集ウィンドウが開くようになっています(関連ファイルの固定値編集.png)。それでも、ウィンドウをもっと大きくしてほしいという要望も寄せられていますけど。
関連ファイル:データベース操作.mzax、固定値編集.png