データセットへのデータ取得クエリを変更する - C#

こちらの記事の方法を用いると、データベースのレコードをDataGridViewに表示できます。ただし、DataGridViewにはすべてのレコードが表示されます。この記事では、データ取得クエリを変更し条件に一致するレコードの取得や、順番の並び替えをする手順を紹介します。

手順

こちらの記事を参照しテーブルのレコードをDataGridViewに表示するプログラムを作成します。また、乱数データを作成しテーブルに挿入します。実行結果を下図に示します。


ソリューションエクスプローラからプロジェクトのxsdファイルを開きます。デザイナが開き下図の画面が表示されます。


テーブルのダイアグラムを確認すると"(テーブル名)TableAdapter"に"Fill, GetData()"が追加されています。


テーブルのダイアグラムを選択し、右クリックでポップアップメニューを表示し、[クエリの追加]メニューを選択します。


[TableAdapterクエリの構成ウィザード]ダイアログボックス(下図)が表示されます。今回はSQL文のクエリを追加するので[SQL ステートメントを使用する]を選択します。[次へ]ボタンを押します。


[クエリの種類の選択]ダイアログボックスが表示されます。今回は[複数行を返す SELECT(S)]を選択します。選択後[次へ]ボタンを押します。


[SQL SELECT ステートメントの設定]ダイアログが表示されます。[テーブルが読み込むデータ]の欄にSQL文が入力されています。


SQL文を編集します。今回は末尾に"oeder by value"を追加しvalueでソートして読み込むことにします。SQL文の編集後[次へ]ボタンを押します。


設定したSQL

SELECT id, Name, value FROM dbo.SimpleKeyValue order by value

[生成するメソッドの選択]ダイアログが表示されます。メソッド名を設定します。


今回は"FillSortByValue","GatDataSortByValue"というメソッド名にしました。設定後[次へ]ボタンを押します。


[ウィザードの結果]ダイアログが表示されます。SELECTステートメントが生成され、Fill,Getメソッドが生成された胸が表示されます。


xsdファイルを開きます。デザイナからテーブルのダイアグラムを確認します。"Fill,GetData()"メソッドの下に"FillSortByValue,GatDataSortByValue()" が追加されています。

コードの編集

FormのLoadイベントのコードを修正します。

修正前

private void FormMain_Load(object sender, EventArgs e)
{
  // TODO: このコード行はデータを 'iPentecSandBoxDataSet.SimpleKeyValue' テーブルに読み込みます。
   // 必要に応じて移動、または削除をしてください。
  this.simpleKeyValueTableAdapter.Fill(this.iPentecSandBoxDataSet.SimpleKeyValue);
}

修正後

private void FormMain_Load(object sender, EventArgs e)
{
  this.simpleKeyValueTableAdapter.FillSortByValue(this.iPentecSandBoxDataSet.SimpleKeyValue);
}

解説

TableAdapterのFillメソッドを呼び出していた部分を先の手順で追加したFillSortByValueメソッドに変更します。

実行結果

プロジェクトを実行します。アプリケーションが起動し下図のウィンドウが表示されます。DataGridViewに表示されるデータがvalueの値で昇順にソートされました。

補足

別のSQLを使用した場合の例

[SQL SELECT ステートメントの設定]ダイアログの。[テーブルが読み込むデータ]の欄のSQLを下記のSQL文に設定します。nameの先頭の文字がaのレコードのみを取得するクエリです。
SELECT id, Name, value FROM dbo.SimpleKeyValue where name like 'a%'

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。DataGridViewにはnameの先頭文字が"a"のレコードのみが表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-01-17
作成日: 2012-10-19
iPentec all rights reserverd.