ラベル Data Provider:データプロバイダー の投稿を表示しています。 すべての投稿を表示
ラベル Data Provider:データプロバイダー の投稿を表示しています。 すべての投稿を表示

2014年5月15日木曜日

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

GWを挟んで少し時間が空いてしまいましたが「データプロバイダーを使いこなそう」の最終回です。前回、データプロバイダーの応用編としてスケジューラーを作成しましたが、今回はその補足編です。

1.フリースタイルグリッドでのSDTコレクションの設定

標準グリッドにてSDTコレクション変数を使用する場合は、ツールボックスから標準グリッドを貼り付ける時に変数を指定するだけで実装できました。

一方、フリースタイルグリッドはその名の通りレイアウトの自由度はありますが、変数の貼り付け等は一から指定しなければいけません。特にSDTコレクション変数の場合どうやってメンバー(項目)を指定したらいいの?と悩む方もいると思います。

データプロバイダーとは直接関係ありませんが、ここで解説したいと思います。


2014年4月21日月曜日

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

データプロバイダー応用編の最後はスケジューラーを作ってみたいと思います。
カレンダーソフトやグループウェアの様に月のカレンダー上で予定を登録していくイメージです。

1.トランザクション

まずは予定を登録するためにイベントトランザクションを作成します。スケジューラー上で表示する為に、予定の日付と時刻を持っています。今回は説明をシンプルにする為にマルチユーザーに対応するための仕組みは入れていません。



2014年4月14日月曜日

データプロバイダーを使いこなそう - 応用編その3 DB以外のインプット その2

前回のつづきです。

3-2.勤怠データ作成用データプロバイダー

前回はカレンダーデータ作成用データプロバイダーを作成しました。そのデータを受けて勤怠データをマージするデータプロバイダーです。



出力結果のイメージとしては個人ごとの勤怠状況を表示させますので、パラメータに社員IDを含めます。


2014年4月7日月曜日

データプロバイダーを使いこなそう - 応用編その3 DB以外のインプット その1

今まで基礎編・応用編とデータプロバイダーに関するエントリーを書いてきましたが、データプロバイダーはデータベースのみがインプットではありません。ハードコーディングやロジック、他のオブジェクト(データプロバイダー/プロシージャ)のアウトプットをインプットにする事もできます。

今回の応用編はデータベース以外のインプットを扱うデータプロバイダーです。

1.トランザクションの定義

出勤管理につかうタイムカードを画面表示する機能にデータプロバイダーを使用します。
前提としては、1日の出勤・退勤を1レコードとするタイムレコーダートランザクションを作成します。但し、この勤怠データは1日から末日まで全ての日にちのレコードが存在するわけではなく、出勤した場合のみデータを登録します。

タイムレコーダートランザクションのストラクチャー定義

2014年4月2日水曜日

データプロバイダーを使いこなそう - 応用編その2 グルーピング集計

今回はデータプロバイダーを使ったグルーピング集計処理です。

考え方としてはプロシージャにおけるグルーピング集計処理と同じになりますが、データプロバイダー言語としての表現がありますので、その点を押さえてください。

まず前提となるデータモデルのおさらいです。前提としては集計の起点となるベーステーブルと集計の対象となるテーブルが1対nのリレーショナルモデルとなります。

データモデルの例。
Customerテーブルを1に対してInvoiceテーブルがnのリレーショナルモデル

2014年3月27日木曜日

データプロバイダーを使いこなそう - 応用編その1 ページング その2

前回はページングの実装として検索用データプロバイダーの修正と新たに件数取得用データプロバイダーを作成しました。今回はWebパネルの修正です。

3.Webパネルの修正

3-1.変数の追加

変数としてレコードカウント用SDT、ページカウント、最大ページ数用を定義します。


2014年3月20日木曜日

データプロバイダーを使いこなそう - 応用編その1 ページング

データプロバイダーを使って一覧画面(Grid)を作成すると、オブジェクト分割もでき、シンプルなコーディングもでき、工数も削減できていい事づくめのように思えます。

しかし、GridをSDTコレクションで実装する場合、データプロバイダーを使う・使わないに関係無く、検索結果のデータ(レコード)が大量にある場合はパフォーマンスが悪化する事になります。
これはDBから取り出したデータをAPサーバー上のプログラムが一旦SDTコレクションとしてオブジェクトを組み立てるのにコストが掛かるためです。

一方、ベーステーブルありのGridやSDTコレクションではないシンプルな変数を使ったGrid実装の場合は、そのコストがないためパフォーマンスは良いですが、そもそもデータプロバイダーを利用できません。

データプロバイダーを使ってもパフォーマンスを維持できる実装はできるのでしょうか?

2014年3月16日日曜日

データプロバイダーを使いこなそう - 基礎編その3 検索一覧画面

前回の簡単な一覧画面に手を加えて検索一覧画面に変更してみます。

1.データプロバイダーの修正

データプロバイダーに対しパラメータを渡し、ソート順と検索条件を指定可能にします。

変数を追加します。
&OrderTypeはソート順を指定する変数です。
&CustomerNameと&CustomerAddresは検索条件を指定する変数です。

定義した変数をParmルールに記述します。
検索条件をパラメータで受け取るためです。

Sourceセクションにソート指定(Order節)、検索条件指定(Where節)を記述します。

2014年3月10日月曜日

データプロバイダーを使いこなそう - 基礎編その2 シンプルな一覧画面

前回はデータプロバイダーの基本的な説明をしました。今回は具体的にデータプロバイダーを作成する手順を見ていきましょう。

1.SDT/BCの定義

まず必要なのはデータプロバイダーにOUTPUTさせる型、つまりSDT(構造化データタイプ)又はBC(ビジネスコンポーネント=トランザクション)です。

用途に応じてSDTを作成するか、対象となるトランザクションオブジェクトのBusiness ComponentプロパティをYesにしビジネスコンポーネント化します。

SDTの定義
トランザクションの構造をそのままSDTにする場合は、フォルダービューから
トランザクションオブジェクトのアイコンを空のSDTへドラッグ&ドロップ
すると構造がコピーされます

2014年3月5日水曜日

データプロバイダーを使いこなそう - 基礎編その1

皆さん、データプロバイダーって使ったことありますか? 「名前は聞いたことあるけど、使ったことは・・・」という人、以外に多いと思います。

データプロバイダーはバージョンXから導入された比較的新しいオブジェクトです。その為、昔からGeneXusエンジニアやっている人からすると馴染みが薄く「プロシージャで作った方が早いよ」と言われるかもしれません。

しかし、メーカーであるArtechが新たに導入してきたという事はそれ相応の目的とメリットがあるわけで、使わない理由はありません。

そこで、当ブログでも何回かに分けてデータプロバイダーの使い方を紹介したいと思います。

データプロバイダー基礎編

まずはデータプロバイダー基礎編として、基本的な説明からサンプルの作成まで解説します。