初心者の憂鬱:動的にデータウィンドウを作成する方法
サポート部の Yama-chan です。新型コロナウイルスが世界中で猛威を振るう中、日本も感染者数が増えてきて今年の最大イベントである TOKYO オリンピックも延期となりました。当社も 4 月 1 日から在宅勤務となりましたが、支障のないようサポート業務を遂行してまいりますので、どうぞよろしくお願いいたします。
はじめに
PowerBuilder の強みである DataWindow は、初心者でもデータウィンドウペインタを使用して簡単に操作できて作成することができます。前回、DataWindow とデータベース間でやり取りされている SQL を見る方法で紹介したように複雑な処理をしていなければ、SQL はそんなに難しいものではありません。慣れてくるとサクサクと書けるようになります。今回は動的に DataWindow を作成し表示させる方法について、紹介します。DataWindow を活用することでニーズに合ったデータ表示構成が可能です。必要な時に必要なカラム項目のみを表示し、分かりやすいユーザーインターフェイスを提供することができます。
実装方法
それでは早速やってみましょう。
まずは SQL 構文などを保持するための string 変数を定義します。
// SQL SELECT 構文 string ls_select // 検索条件 string ls_where // DataWindow の定義構文 string ls_dwsyntax // 入力データの格納 string ls_entry // エラーメッセージ string ls_err
次に、SQL 構文を下記のように記述します。
// users テーブルから id, name, address, email カラムのデータを取得する SQL ls_select = "SELECT id, name, address, email FROM users"
また、変数を使用してユーザーが入力されたデータをもとに作成することもできます。開発現場では必要に応じて作成することができます。
// SQL の where 句条件文を記述 ls_where = " WHERE users.name LIKE '" + ls_entry + "%'"
DataWindow ソースコードを作成する構文を下記のように記述します。エラーが発生した場合、ls_err にエラーの内容が返されます。DataWindow のソースコードをもとにデータウィンドウ オブジェクトを作成してから、エラーがなければ、SetTransObject() および Retrieve() を実行し、データを取得してから DataWindow コントロールにデータを表示します。
// DataWindow ソースコードを作成 ls_dwsyntax = SQLCA.SyntaxFromSQL(ls_select + ls_where, "Style(Type=grid)", ls_err) IF len(ls_err) = 0 THEN // DataWindow ソースコードを使用し、DataWindow オブジェクトを作成 dw_all_pws.Create ( ls_dwsyntax, ls_err ) IF len(ls_err) = 0 THEN dw_all_pws.SetTransObject ( SQLCA ) // データを取得し、dw_1 に表示する dw_all_pws.Retrieve() ELSE // エラー処理 END IF ELSE // エラー処理 END IF
このサンプルでは SyntaxFromSQL の 2 番目のパラメーターで Style のみを指定していますが、他には Column、 Group、 Text、 Title などもありますので、これらのパラメーターを指定することでさらに細かく DataWindow を定義することが可能です。時間があれば、ぜひこれらのパラメーターを指定して試してみてください。
まとめ
以上が簡単な動的 DataWindow の利用方法の紹介となります。ステップ数も少なく理解しやすいかと思いますが、いかがでしたか? 動的 DataWindow を習得しておけば、ユーザーからの要求に応じて活用する場面が増え、役に立つと思います。これからも初心者の憂鬱ブログをよろしくお願いします。