第4回 ドラッグ&ドロップで作るWindowsデータベース・アプリケーション連載:Visual Studio 2005によるWindowsデータベース・プログラミング(2/3 ページ)

» 2007年05月18日 00時00分 公開
[遠藤孝信デジタルアドバンテージ]

DataGridViewコントロールの配置

 以上で、データソースの準備が完了しました。それではいよいよDGVコントロールを使っていきましょう。ということで、まずはDGVコントロールをフォームに配置し、そのプロパティを設定して……という標準的な作り方もできますが、もっと便利な機能が用意されています。

 [データソース]ウィンドウから先ほど作成された[authors]の項目をフォーム上にドラッグ&ドロップします。そうするとDGVコントロールといくつかのコントロールやコンポーネントが自動的にフォームに配置されます。

図6 [データソース]ウィンドウから[authors]の項目をドラッグ&ドロップ
DGVコントロールといくつかのコントロールやコンポーネントが自動的にフォームに配置される。
  (1)[authors]の項目をフォーム上にドラッグ&ドロップする。
  (2)自動作成されたBindingNavigatorコントロール。
  (3)自動作成されたDataGridViewコントロール。

 ここでは、使いやすいようにDGVコントロールの右上隅にある小さなボタンをクリックし、[DataGridViewタスク]メニューから[親コンテナにドッキングする]を選択して、DGVコントロールをフォームいっぱいに配置されるようにしておきましょう(図7)。

図7 [DataGridViewタスク]メニュー
[親コンテナにドッキングする]を選択するとDGVコントロールがフォームいっぱいに配置される。
  (1)このボタンをクリックすると[DataGridViewタスク]メニューが表示される。
  (2)[親コンテナにドッキングする]を選択する。

 実はこれでプログラムは完成です。さっそく[F5]キーを押して実行してみましょう。

自動作成されたWindowsデータベース・アプリケーション

 サンプル・データベースにはサンプル・レコードが最初から何件か格納されていますので、プログラムを実行すると次のような画面が表示されるはずです。

図8 プログラムの実行画面
レコードの移動、編集、追加、削除、保存が可能。
  (1)現在選択されている行位置を移動する([最初に移動]ボタン、[前に戻る]ボタン、[次に移動]ボタン、[最後に移動]ボタン)。
  (2)新しい行を追加する([新規追加]ボタン)。
  (3)現在の行を削除する([削除]ボタン)。
  (4)編集したデータを保存する([データの保存]ボタン)。

 [データソース]ウィンドウから項目をドラッグ&ドロップしただけですが、このプログラムはレコードの表示、編集、追加、削除、保存が可能ですので、りっぱなWindowsデータベース・アプリケーションといってよいでしょう*1

*1 authorsデータベースでは、au_lname列やau_fname列のデータ型がvarchar型として定義されているため、このままでは日本語のデータを扱えません。データベース・エクスプローラでテーブル定義を開き、データ型をnvarchar型に変更すると日本語が格納できるようになります。また、いくつかの列には非Null制約や入力形式に対する制約が設定されていますので、それに違反するデータを入力しようとすると例外が発生します。どのような制約が設定されているかはデータベース・エクスプローラでテーブル定義を開いて確認することができます。


 ウィンドウ上部にあるバーは、BindingNavigatorコントロールです。このコントロールからは、現在選択されている行位置の移動、新しい行(レコード)の追加、行の削除、データの保存などを行えます。

 [データの保存]ボタンがあることからも分かるように、このプログラムでは、一通りデータの編集や追加、削除が終わったところでその編集内容をデータベースに保存するという方式が採られています。これは第2回で説明した「非接続型データアクセス」のモデルを忠実に守っているといえます。

【コラム】保存したはずのデータが表示されない?!

 プログラムを一度終了し、再度実行してみると前回で編集したデータが保存されておらずアレッと思った方がいるかもしれません。

 これは前述しているように、DBファイルのプロパティの「出力ディレクトリにコピー」欄が「常にコピーする」となっているためです。つまり、[データの保存]ボタンによりDBファイルは更新されるものの、プログラムを起動するたびにそれが編集前のDBファイルにより上書きされてしまっているのです。

 プログラムを再実行しても前回で保存した内容が残るようにするには、「出力ディレクトリにコピー」欄を「新しい場合はコピーする」に変更するか、いったんプロジェクトの「すべての保存」を行い、その出力ディレクトリ(bin\Debugディレクトリ)にDBファイル(.mdfファイルと.ldfファイル)をコピーし、「出力ディレクトリにコピー」欄を「コピーしない」に変更してからプログラムを実行してください。これについては「.NET TIPS:Visual Studio 2005でデータベースの更新が反映されない場合には?」でも解説しています。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。