2015
1
29
VB.NETでDataGridViewへAccessのデータベースファイルを読み込む

新しく VB.NET のタグを作りました。仕事でやったことを「あー、あのときどうしたんだっけー!」と忘れた時用に書いていきたいと思います。どれだけの方に需要があるかは分かりませんが…。。どこかでどなたかの検索にひっかかってくだされば嬉しいなーと思います。


関連記事

  1. DataGridViewへAccessのデータベースファイルを読み込む ←NOW!
  2. AccessDBテーブルの主キー情報を取得する
  3. DataGridViewに読み込んだDB情報を再取得する
  4. DataGridViewをセル編集したときの行数を格納する
  5. Accessのデータベースファイルへ書き込むための接続・切断
  6. Accessデータベースのレコードを削除する
  7. Accessデータベースを更新する

ガッツリ続き物になってしまいました…。過去の分と合わせて順番に読んでいただけると分かりやすいかと思います。

なるべく簡素に書いているので、例外処理は甘いと思われます。ご参考にする際は、ご自分の環境に合わせてご修正ください。

解説のためツギハギしちゃったので、最後の記事(7回め)に全コードまとめてあります。

環境

  • Visual Studio 2010
  • .NET Framework 4.0

です。

背景

MS AccessのDBを使っているシステムがいくつかあるんですが、社内全てのPCにAccessが入ってるわけじゃないんですよね。

昔書いたこの記事のように、DBだけ用意しておいて、読み書きはExcelからやっちゃうなんてことも。でも、Officeすら入ってないPCからちょこっと中身を見たり、変更したいという必要に迫られまして。

というわけで、VBから既存のAccessのDBを操作するようなものをちょっとずつ作ってるメモです。

今回の目的

既存のDBファイルのテーブルをDataGridViewへ読み込みます。テーブルごとにSQLをベタ書きするんじゃなくて、テーブル名だけ指定すれば同じコードで全部のテーブルに対応できる、というのがいいなーと思って書きました。

AccessのDBを用意

150129-1
150129-2

とりあえずふたつ、簡単なテーブルを作っておきます。型とかはこんな感じにしておきました。主キーが複数というパターンもあったのでそういうのも作っておきます。(今回は読み込むだけなので使いませんが、今後主キー情報を取得したりするつもりです。)

150129-3
150129-4

まずは読み込みをしたいので、適当にデータを入れておきます。

Visual Studio 2010にて

Windowsフォームアプリケーションを作ります。

Form1.vb [デザイン]

150129-5

スタートアップフォームであるForm1に、テーブルの名前をTextに設定したボタンを、テーブルの数だけつけておきます。ボタンは、ツールボックスの [コモン コントロール] の中です。

Form1.vb [コード]

Form1のコード画面へ、以下を書きます。

ボタンのテキストがテーブル名になっているので、それをForm2のタイトルに入れてしまおうという魂胆。ここでは、Form2を開くだけ。

Form2.vb [デザイン]

[プロジェクト] → [Windows フォームの追加] → [Windows フォーム] → [作成] で、Form2が出来ます。

150129-6

ここへ、テーブルを読み込むDataGridView1を作ります。DataGridViewは、ツールボックスの [データ] の中です。

[データ ソースの選択] が [なし] になってるので、DataGridView上で編集しても直でDBに変更がかからない仕様です。追加と編集だけ有効にしておいて、後でボタンをつけて、クリックしたらDB編集するSQLを走らせる、みたいなのにしようかなーと。

DBtable.vb

Form2 のコードでインスタンスを作るので、その元となるクラスを先に作ります。[プロジェクト] → [クラスの追加] で、DBtable.vbという名前にします。

テーブル名と、対象のAccessファイル名を引数として持ってきて、接続したりバインドしたりほにゃほにゃ。

42~46行のDisposeプロシージャは、接続するなら切断したほうがいいんじゃないの…、と思って書いてはみたものの、破棄せずにインスタンス再生成したときとかもちゃんとキレイになってたのでなくてもいいかもしれない…。一応書いておいた名残です。

Form2.vb [コード]

Form2をロードするとき(22行)に DBtable クラスのインスタンスを作って、DataGridView にセットします。

27行目のDisposeは、せっかく接続破棄のプロシージャを作ったので、フォームが閉じるときに呼び出しておきます(なくてもいい気がする)。

動作テスト

F5キーでデバッグ開始するとForm1が起動するので、各テーブル名のボタンを押してやると、

150129-7
150129-8

このように、テーブルごとに中身を表示できます。

今後、ここから更新や削除を行えるようにしていく予定です。テーブルによって主キーの数やそれぞれフィールドの型が違うので、そこを取得しながら汎用的に使えるコードにできたらなーと思っています。

書籍を執筆しています。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 639
  • RSSを登録

公開日:2015/01/29


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top