SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)

Accessのデータを一覧表示するアプリケーションの作成

SPREAD for .NET 2.5J Windows Forms EditionコンポーネントでAccessデータベースのデータを表示する

  • X ポスト
  • このエントリーをはてなブックマークに追加

 AccessやSQL Server、Oracleなどのデータベースに格納してあるデータをクエリで取り出し、一覧表を表示するアプリケーションを作りたい場合があります。SPREAD for .NET 2.5J Windows Forms Editionのコンポーネントを使うと、列の並び替えやフィルタ機能がプロパティの操作だけで簡単に実現することができます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 AccessやSQL Server、Oracleなどのデータベースに格納してあるデータをクエリで取り出し、一覧表を表示させるアプリケーションを作成したいときがあります。「SPREAD for .NET 2.5J Windows Forms Edition」のコンポーネントを利用することで、列の並び替えやフィルタ機能をプロパティの操作だけで簡単に実現することができます。

 そこで、これらの機能を使い、Accessのデータベースから2つのフィールドデータを取り出して表示し、列のソートやフィルタ機能を使って操作できるアプリケーションを作ってみました。

FpSpreadコンポーネントで一覧表にする
FpSpreadコンポーネントで一覧表にする
列ごとにソートする
列ごとにソートする
列「メーカー」にフィルタを設定しデータを絞り込む
列「メーカー」にフィルタを設定しデータを絞り込む

対象読者

 Visual Basic 2005またはVisual C# 2005を使ってプログラムを作ったことのある人。

必要な環境

 Visual Basic 2005またはVisual C# 2005、Visual Studio 2005でプログラムが作れる環境。

プログラム実行時の注意事項

 本稿の実行ファイル(バイナリファイル)を動かすには、zipファイルに同梱してある以下のファイルが必要になります。

  • FarPoint.Win.SpreadJ.dll(本体アセンブリ)
  • FarPoint.Win.dll(共通アセンブリ)
  • Farpoint.CalcEngine.dll(表計算エンジンDLL)

 これらのファイルを、実行プログラムと同じフォルダに格納します。

 また、.NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0がインストールされていることが必須条件です。

コンポーネントのインストール

 はじめてSPREAD for .NET 2.5J Windows Forms Editionを使用する方は、プロジェクトにSPREAD for .NET 2.5J Windows Forms Editionをインストールし、プロジェクトに追加する必要があります。インストーラは、グレープシティのWebページからダウンロードできますので、ここからダウンロードしてインストールしてください。

 製品ページ左側の[ダウンロード]-[トライアル版]をクリックし、ダウンロード方法([FTP]または[HTTP])を選択すれば入手できます。ファイルはLZH形式で圧縮されています。

 有償のコンポーネントですが、プロダクトキーを入力せずにインストールすることで、トライアル版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールの追加

 SPREAD for .NET 2.5J Windows Forms Editionをインストールしたら、ツールボックスに専用のタブを作成し、SPREAD for .NET 2.5J Windows Forms Editionのコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコンポーネント」の「名前空間」が「FarPoint.Win.Spread」で始まる名前空間のコンポーネント「FpSpread」です。

「FarPoint.Win.Spread」で始まる名前空間のコンポーネント「FpSpread」を追加する
「FarPoint.Win.Spread」で始まる名前空間のコンポーネント「FpSpread」を追加する

GUIの作成

 GUIの設定は非常に簡単です。fpSpreadコンポーネントを配置し、CheckBoxを3つ配置します。

コンポーネントの配置
コンポーネントの配置

データベースへの接続設定

 データベースへの接続は、fpSpreadコンポーネントのタスクトレイからウィザードを使ってデータソースの設定を行います。この操作は、Visual BasicもVisual C#も同じです。

 なお、ここでは「guiter.mdb」というデータベースファイルを使用しますので、コンピュータにコピーしておいてください。

「データソースの選択-プロジェクトデータソースの追加」をクリック
「データソースの選択-プロジェクトデータソースの追加」をクリック
 
 
「Accessデータベース」を選びサンプルデータベース「guiter.mdb」を指定
「Accessデータベース」を選びサンプルデータベース「guiter.mdb」を指定
 
 
データベースファイルに接続できることを確認する
データベースファイルに接続できることを確認する
 
 
「メーカー名」と「製品名」をクリック
「メーカー名」と「製品名」をクリック
 
 
 
フォームデザイナに3つのコンポーネントが作成されている
フォームデザイナに3つのコンポーネントが作成されている
 
 
また、次のコードが自動的に追加されています。このコードは、TableAdapterクラスのFillメソッドを実行するコードで、クエリを実行して結果セットをTableAdapterオブジェクトに格納する働きをします。
 
Visual Basic
Me.製品一覧TableAdapter.Fill(Me.GuiterDataSet.製品一覧)
 
Visual C#
this.製品一覧TableAdapter.Fill(this.guiterDataSet.製品一覧);
 
そして、fpSpreadコンポーネントのDataSourceプロパティに「製品一覧BindingSource」オブジェクトが設定されています。
  1. fpSpreadコンポーネントを配置したら、タスクトレイを開き[データソースの選択]-[プロジェクトデータソースの追加]をクリックします。
  2. [データベース]をクリックして[次へ]ボタンを押します。「データ接続の選択」ダイアログボックスが開きますので、[新しい接続]ボタンを押します。そして、「接続の追加」ダイアログボックスで[Accessデータベース]を選び、[参照]ボタンを押してサンプルデータベース「guiter.mdb」を指定します。
  3. [接続の確認]ボタンを押してデータベースファイルに接続できることを確認し、OKボタンを押します。
  4. データベースファイルをプロジェクトにコピーするかどうかを聞いてきますので[いいえ]を押してウィザードを進めます。そして、「データベースオブジェクトの選択」で[テーブル]-[製品一覧]をクリックして[メーカー名]と[製品名]をチェックします。ここで選んだフィールドデータが選択クエリとなり、fpSpreadコンポーネントに表示されます。
  5. [完了]ボタンを押してウィザードを閉じると、フォームデザイナに次の3つのコンポーネントが作成されています。
    • guiterDataSet
    • 製品一覧BindingSource
    • 製品一覧TableAdapter

 これで、Accessのデータベースに接続して選択クエリを実行し、その結果を取り出してfpSpreadコンポーネントに連結する処理が出来上がりました。

ソートとオートフィルタの設定

 列データをソートしたり、フィルタを設定したりしてデータ表示を絞り込む機能は、それぞれのプロパティをTrueかFalseに設定するだけで実現できます。

ソートの設定

 2つのCheckBoxを使い、列「メーカー名」と「製品名」のデータを並び替える機能を組み込みます。

 データのソートは、操作対象の列をColumnsオブジェクトで指定し、AllowAutoSortプロパティをTrueに設定します。ソート機能が組み込まれると、列見出しに△マークが付加されます。

 AllowAutoSortプロパティにFalseを指定すると、ソート機能が解除されます。

Visual Basic
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    If Me.CheckBox1.Checked = True Then
        FpSpread1.ActiveSheet.Columns(0).AllowAutoSort = True
    Else
        FpSpread1.ActiveSheet.Columns(0).AllowAutoSort = False
    End If
End Sub

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
    If Me.CheckBox2.Checked = True Then
        FpSpread1.ActiveSheet.Columns(1).AllowAutoSort = True
    Else
        FpSpread1.ActiveSheet.Columns(1).AllowAutoSort = False
    End If
End Sub
Visual C#
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    if(CheckBox1.Checked == true){
        fpSpread1.ActiveSheet.Columns[0].AllowAutoSort = true;
    }else{
        fpSpread1.ActiveSheet.Columns[0].AllowAutoSort = false;
    }
}

private void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBox2.Checked == true)
    {
        fpSpread1.ActiveSheet.Columns[1].AllowAutoSort = true;
    }else{
        fpSpread1.ActiveSheet.Columns[1].AllowAutoSort = false;
    }
}

オートフィルタの設定

 フィルタ機能は、操作対象の列をColumnsオブジェクトで指定し、AllowAutoFilterプロパティをTrueに設定します。フィルタ機能が組み込まれると、列見出しにフィルタ用のアイコンが付加されます。

 AllowAutoFilterプロパティにFalseを指定すると、フィルタ機能が解除されます。

 また、FpSpreadクラスのGetRootWorkbookメソッドを使って、現在アクティブなSpreadViewオブジェクトを取得してSetImageメソッドを使うと、フィルタ実行前後のアイコンを好きなイメージに入れ替えることができます。

Visual Basic
Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged
    If Me.CheckBox3.Checked = True Then
        FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = True
    Else
        FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = False
    End If

    '行フィルタリング実施中のアイコンを設定します
    Dim sv As FarPoint.Win.Spread.SpreadView = _
      FpSpread1.GetRootWorkbook()
    sv.SetImage(FarPoint.Win.Spread.SpreadView.FilterActive, _
                Image.FromFile("j:\SearchFolderHS.bmp"))
End Sub
Visual C#
private void CheckBox3_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBox3.Checked == true)
    {
        fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;
    }else{
        fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = false;
    }
    FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();
    sv.SetImage(FarPoint.Win.Spread.SpreadView.FilterActive, 
                Image.FromFile("j:/SearchFolderHS.bmp"));
}

まとめ

 fpSpreadコンポーネントを使うと、ワークシートにソートやフィルタ機能を簡単に組み込むことができます。VS標準のDataGridViewコントロールは、ソート機能は実装されていますがオートフィルタ機能は実装されていません。手軽にフィルタ機能を組み込めるfpSpreadコンポーネントは魅力的なコンポーネントになると思います。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1385 2016/09/02 13:45

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング