データプロバイダーの実装方法は他のオブジェクトと異なるので、GeneXus開発経験者でも使用したことがないという方は、少なからずいらっしゃるのではないでしょうか。
データプロバイダーと同様に、Sourceエレメントがあるプロシージャと比較してみます。
プロシージャとの比較
プロシージャ | データプロバイダー | |
---|---|---|
出力形式 | 自由 | SDT/BC(ビジネスコンポーネント) |
実装方法 | Eventsエレメントに記述するような プログラミング的記述 |
出力形式を意識した独自記述 |
実装の自由度 | 高い | 低い |
パラメータルール | in, inout, out | inのみ対応 |
帳票出力 | 可能 | 不可 |
データの登録や更新 | 可能 | 不可 |
プロシージャは様々な用途を実現するために柔軟に実装できるのに対し、データプロバイダーはデータのアウトプットに特化したオブジェクトといったところでしょうか。
用途
プロシージャとの比較のように、データプロバイダーで実現可能なことはプロシージャでもほとんど実現できてしまいます。
ただし、下記の用途ではプロシージャは対応しておらず、データプロバイダーのみ対応しています。
- Query Viewer コントロールのデータの取得元
- ダイナミックコンボボックスのデータの取得元
- ダイナミックトランザクション
まとめ
データプロバイダーはプロシージャほど柔軟に実装することはできませんが、いくつかの用途ではデータプロダイバーを使用する必要があります。
2019.03.01 追記
データプロバイダーを使用することで、高速なページング処理を実現することができます。
GeneXus Wiki – サーバーページング
http://wiki.genexus.jp/hwiki.aspx?サーバーページング,
GeneXus 16以降ではFor Eachコマンドでもサーバーページングが実現できるとのことですが、現時点は対応していないので補足させていただきました。