【VB.Net】データテーブルの使い方を学ぼう

どうも!リョクちゃです。

今回は、データテーブルと呼ばれる型について使い方やどんな応用があるか

例を交えて紹介していきます。

データテーブルとは、Excelの表をやデータベースを知っている読者なら、

データベース上に構築するテーブル、といった方がわかりやすいかもしれません。

ちなみに前回はこちら

CSVファイルを読み込む方法をWindowsフォームアプリケーションを作っていきながら紹介をしています。CSVファイルとは、CommaSeparatedValuesと呼ばれ、カンマで区切ったデータが出力されたファイルのことをいいます。



データテーブル:DataTable

DataTableと書かれ、VB.Netでは、DataSetと呼ばれる型の子要素になります。

DataSetが親要素でDataTableがそれの子要素といったモノです。

イメージでいうと、下図の感じになります。

※Excelを例に解説しています。

DataTableを扱う上では、DataSetとの関係を覚えておきましょう。

今回はDataSetについては、深く触れませんが、いずれ紹介をしていきます。

データテーブルの構成

DataTableを構成する要素としては、DataRowと呼ばれる要素があります。

これはDataTableの子要素で、1行分のデータを表しています。

先ほどの図に描き加えると、下のようになります。

Sheetの中にDataRowがあり、これはSheet内の1行分のデータをそれぞれ表しています。

実際にExcelを使って説明すると、

ここでBook1がDataSet

Book1で表示されているSheetがDataTable

赤枠で囲まれた1行のデータをDataRowとそれぞれ表されます。

※ Excelを例に説明しているので、Excel自体がこのような構成というわけではありません。

このような関係性を持った型をDataTable型と呼びます。



データテーブルの作り方

それでは早速、データテーブルを作っていきます。

作るにはまず、変数として宣言をする必要があります。

宣言の仕方は、下のようなコードになります。

変数dtTestをDataTable型で宣言をしています。

初期値をNothing(空)にしています。

宣言しただけでは使えないので、インスタンスを作成してあげます。

Newを使って、インスタンスを作成しています。

これで使えるようになりました。

データテーブルにデータを入れる準備

作った変数dtTestは、まだ空っぽの状態なので、データを入れる準備をしてあげます。

まず、今回のデータテーブルの目的として、先ほどのイメージ図で示した内容を

データテーブルに入れていくことを目的とします。(下図参照)

図1 テスト用データ

スポンサーリンク




データテーブルに列を追加する

図1の緑色の行をみてみましょう。

これはヘッダー行というものになります。

ヘッダーとはデータの先頭を表す言葉で、ヘッダー行は先頭行と言われます

ここでは先頭行は見出しとして扱います。

そのために列として追加してあげる必要があります。

列の追加は下のようなコードになります。

dtTest.Columns.Add(“追加する列名”)で列を追加することができます

ここでは、図1のNoからItem_3までを列として追加しています。

ここまでを実行し、dtTestの中身を見ていくと、下の図のようになります。

列として、NoからItem_3が追加されているのがわかります。

※ DataTableビジュアライザーはDataTable型で

作成した変数の状況を可視化してくれるツールです。

データテーブルに値を追加する

列の追加ができたので、それぞれの列に値を追加していきましょう。

追加するには、下のようなコードになります。

データテーブルの各列に値を追加する前に、新しい行をデータテーブル内に作成しています。

これを忘れてしまうと、次の処理でエラーが起きてしまいます。

新たに行を追加したら、追加した行に対して値をそれぞれ入れていきます。

この際に、新しい行を追加していないと次の処理で存在しない行に値を入れようとしています

といったエラーに見舞われてしまうのです。

順番としては以下の流れを守りましょう。

  1. 新しい行を追加
  2. 追加した行に値を追加

dtTest.Rows(0).Item(“No”)とすることで、

0番目の行のNo列に値を追加するといった処理を行っています。

ここでは、No列には1を入れています。

全て入れた状態で、DataTableビジュアライザーを見てみると、

下のようになります。

追加されているのが確認できました。

それでは、続いて他の行も追加していきます。

コードは下のようになります。

全てを追加していくと、このようになります。

ただこれだと、ひたすらコードが長々となってしまうので、

一般的にはFor文やFor Each文などの繰り返し処理を使って、

データテーブルに値を追加していきます。

応用例:CSVファイルで読み込んだ値を追加

応用例として、CSVファイルの内容を読み込んで

データテーブルに格納していく方法を紹介していきます。

まず、下のようなCSVファイルを準備します。

これを読み取って、データテーブルに追加していきます。

CSVファイルの読み取り方については、前回の記事を参考ください。

※ 前回の記事のコードを使っていきます。

実際のコードが下のコードになります。

While文の中で、データテーブルに値を追加していく処理を記述しています。

ここで変数dCntを用意したのは、

新たに行を追加して追加した行に対して正常に値を入れるといった役割があります。

わざわざ変数dCntを用意しなくてもいいのですが、

ここでは難しく考えずシンプルにしています。

実際に変数dCntを用意しないで書くと、下のようなコードになります。

※ 抜粋して載せているので必要に応じて実行される方は書き換えてみてください。

dtTest.Rows.Countで行数のカウントをし、この結果から-1した行に

値を追加するといった処理をしています。

まとめ

データテーブル型を使うには、

  1. 変数としてDataTable型を宣言する。
  2. インスタンスを作成する。
  3. 必要となる列を準備する。
    → データテーブル変数.Columns.Add(列名)
  4. 新しい行を追加する。
    → データテーブル変数.Rows.Add()
  5. 追加した行に値を追加する。
    → データテーブル変数.Rows(値を追加する行).Item(列名)

といった流れで行います。

データテーブルの全ての行数を取得するには、

データテーブル変数.Rows.Count

ご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク