【GeneXus】データプロバイダー

たまたま使ってマジで忘れてた

参考リンク

参考 データプロバイダーのグループステートメントwiki.genexus.jp

概要

とりあえずDBからデータとってきてくれるオブジェクト。

嫌いなところ

ErrorHandler が書けない。(もしかしたら書き方がある?)

良いところ

別にテーブルをSELECTするだけじゃなくて、固定値をデータプロバイダーから取得するのもあり。

DBとかSDTとかとか

プロパティ

プロシージャと違って、Outはプロパティで設定します。

Attと同じ名前

セットする構造体(SDTやBC)の項目がAttと同じ名前の場合イコールを使わないで
Att名を書くだけでOK。

複数件返却(outをコレクションにする)

検索条件(Where)

SDT_Transaction1
Where Transaction1_Id = 2
{
	Transaction1_Id
	Transaction1_Name
}

ベーストランザクション(From)

SDT_Transaction1
From Transaction1
Where Transaction1_Id = 2
{
	Transaction1_Id
	Transaction1_Name
}

並び(Order)

SDT_Transaction1
Order Transaction1_Id
Where Transaction1_Id = 2
{
	Transaction1_Id
	Transaction1_Name
}

レコードが無い場合(Default)

SDT_Transaction1
Where Transaction1_Id = 999
{
	Transaction1_Id
	Transaction1_Name
}
SDT_Transaction1[Default]
{
	Transaction1_Id = 0
	Transaction1_Name = "NONE"
}

出力件数(Count)

SDT_Transaction1 [Count = 20]
Order Transaction1_Id
{
	Transaction1_Id
	Transaction1_Name
}

スキップ(Skip)

SDT_Transaction1 [Skip = 50]
Order Transaction1_Id
{
	Transaction1_Id
	Transaction1_Name
}

最初のレコード(One)

SDT_Transaction1 [One]
Order Transaction1_Id
{
	Transaction1_Id
	Transaction1_Name
}

NoOutput

子テーブルのレコードを取得し、階層を付けないで取得したい場合に便利。
SDTを編集

SDT_Transaction1
Order Transaction1_Id
{
	Transaction1_Id
	Transaction1_Name
	
	SDT_Transaction2 [NoOutput]
	Where Transaction2_Id = Transaction1_Id
	{
		Transaction2_Id
		Transaction2_Name
	}
}

OutputIfDetail

明細レコードがある場合だけ、返却値(SDT)に追加します。
SDTを編集

SDT_Transaction1 [OutputIfDetail]
Order (Transaction1_Name)
{
	Transaction1_Id
	Transaction1_Name
	
	Level1  
	Where Transaction2_Id = Transaction1_Id
	{
		Transaction2_Id
		Transaction2_Name
	}
}

この場合Transaction1のデータに対応するTransaction2のデータが存在する場合だけSDTにレコードが追加されます。

まとめ

書いたら意外と長くてアップするのが夜になったわw
まだいろいろあるから追記していく予定。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください