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); //キー列を削除
}
