C1FlexGridコントロールのデータベース連結処理
まずは、グリッドをデータベースに連結する処理を作成します。この処理は、ボタン「データベースの読み込み」のClickイベントハンドラに作成します。
なお、手順の詳細は記事『データベースのデータからバブルチャートを作成する.NETアプリケーションを作る』で紹介している手順とほぼ同様なので、こちらを参照してください。
また今回も、クエリ文の入力にインプットボックスを使用します。これは、Visual BasicのInputBoxメソッドを使用しますので、C#で使う場合はプロジェクトの参照設定に「Microsoft.VisualBasic」を追加しておいてください。
なお、今回はクエリ文の入力用インプットボックスに、あらかじめサンプルデータベース用のクエリ文を表示するようにし、データを読み込んだ時点でAutoResizeプロパティをTrueに設定して列幅の自動調節を行っています。
Imports System.Data.OleDb Imports C1.Win.C1FlexGrid Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'DBファイル名の取得と接続文字の作成 Dim dbname As String = "" If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then dbname = OpenFileDialog1.FileName Else Exit Sub End If Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbname 'SQL文の入力() Dim sqlstr As String = InputBox("クエリのSQL文字列を入力してください", "テーブルの取り込み", _ "SELECT 収穫量一覧.* FROM 収穫量一覧;") If sqlstr = "" Then Exit Sub End If 'クエリを実行しDataSetにデータを取り込む Dim data_adap As OleDbDataAdapter = New OleDbDataAdapter(sqlstr, conn) Dim data_sset As DataSet = New DataSet() data_adap.Fill(data_sset) 'グリッドにデータを接続 C1FlexGrid1.AutoResize = True C1FlexGrid1.DataSource = data_sset.Tables(0) C1FlexGrid1.Cols.Remove(1) 'キー列を削除 End Sub
using System.Data.OleDb; using C1.Win.C1FlexGrid; namespace FG_subtotal_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //DBファイル名の取得と接続文字の作成 string dbname = ""; if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dbname = openFileDialog1.FileName; } else { return; } string conn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + dbname; //SQL文の入力 string sqlstr = Microsoft.VisualBasic.Interaction.InputBox( "クエリのSQL文字列を入力してください", "テーブルの取り込み", "SELECT 収穫量一覧.* FROM 収穫量一覧;", 200, 100); if(sqlstr == "") { return; } //クエリを実行しDataSetにデータを取り込む OleDbDataAdapter data_adap = new OleDbDataAdapter(sqlstr, conn); DataSet data_sset = new DataSet(); data_adap.Fill(data_sset); //グリッドにデータを接続 c1FlexGrid1.AutoResize = true; c1FlexGrid1.DataSource = data_sset.Tables[0]; c1FlexGrid1.Cols.Remove(1); //キー列を削除 }