データベースの連結方法
C1FlexGridコントロールは、ADO.NETデータソースオブジェクト(DataTable、DataView、DataSet、DataViewManagerなど)へのデータ連結をサポートします。
グリッドをデータソースに連結するには、データソースオブジェクトを作成し、グリッドのDataSourceプロパティに設定します。データソースオブジェクトが複数のテーブルを持っている場合は、使用テーブルを指定する文字列をDataMemberプロパティに設定します。また、SetDataBindingメソッドを使うと、両方のプロパティを同時に設定することもできます。
新しいデータソースをグリッドに割り当てると、グリッドは自動的にその列を更新してデータソース内で使用可能な列に連結します。
データソースを連結する方法
データソースをグリッドに連結する方法は2通りあります。
1つは、Visual Studioのデータソース構成ウィザードを使用してC1FlexGridコントロールにデータソースを連結する方法です。この方法を使うと、ウィザードの質問に答えていくだけで、簡単にデータベースをグリッドに連結できます。ただし、この方法はアプリケーションに1つのデータベースファイルを固定してしまいますので、複数のデータベースを切り替えてグリッドにデータを表示するのには向いていません。
もう一つの方法は、コードからデータベースオブジェクトを作成し、グリッドに連結する方法です。この方法だと、例えばダイアログボックスでデータベースファイルを選んでグリッドに表示する機能を組み込むことができます。しかし、データを取り出すクエリを入力する機能も持たせないと、データベースからデータを抽出することができません。
それぞれ、データベースを使用する目的に応じて使い分けることになります。
今回は、ダイアログボックスでAccessのデータベースファイルを選んでグリッドに表示するようにしますので、コードからデータベース連結を行います。
データベース連結の手順
コードからデータベースファイルをグリッドに連結するには、以下の手順をとります。
- (1)接続文字列を作成する
- (2)開くデータベースファイルを指定する
- (3)クエリ文字列を作成する
- (4)接続文字列とクエリ文字列を使用してOleDbDataAdapterオブジェクトを作成する
- (5)OleDbDataAdapterクラスのFillメソッドでDataSetオブジェクトにクエリの結果セットを格納する
- (6)C1FlexGridコントロールのDataSourceプロパティに、DataSetオブジェクトのテーブルを設定する
(1)から(5)までの処理は、ADO.NETのデータベース接続処理です。これは、ウィザードを使用したデータベース連結も同じで、ウィザードがコードを書く代りをやってくれているだけです。
(6)のコードが、クエリの結果セットをグリッドに表示するための連結処理です。C1FlexGridコントロールは、DataSourceプロパティの値が変わると、自動的にグリッドの行列を作成してセルにデータを格納し、データベースの列見出しをグリッドの列ヘッダに設定してくれるので、データベースの連結処理はたったこの1行で済みます。
プログラマがやることは、開くデータベースファイルを指定し、データを取り出すクエリ文(SQL文)を作成するだけです。
あとは、お好みでグリッドの各種装飾やフィルタリング、小計処理などのオプション機能を操作するコードを書いていきます。
GUIのデザイン
今回は、前回作成したフォームに手を加え、データベースファイルの選択とクエリ文の入力機能を追加します。追加するコントロールは、ButtonコントロールとOpenFileDialogコントロールの2つです。クエリ文の入力は、コードからInputBoxを表示して入力してもらうようにします。
フォームのデザイン
Buttonコントロールを1つ追加し、Clickイベントハンドラを作成します。
OpenFileDialogコントロールは、Filterプロパティを設定しAccessデータベースファイルを選べるようにします。
プロパティ | 設定値 |
FileName | (空白) |
Filter | Accessファイル(*.mdb)|*.mdb |