東北地方太平洋沖地震におきまして、被災された皆様方に心よりお見舞い申し上げます。一日も早い復興をお祈り申し上げます。
今日は、データベースアプリケーションを取り上げます。
Visual Basicを使って、SQLServerのデータをコントロールに表示する方法をご紹介します。
SQLServerは、Microsoft社が提供しているリレーショナルデータベース管理システム(Relational DataBase Management System : RDBMS)です。
高価な製品ですが、無償で入手できるExpress Edition もあります。
荒っぽく言えば、Accessの高レベル版という感じでしょうか。
なお、SQLServerには、既に「MainSub」という名前のデータベースが作成されているものとします。
そして、そのデータベースには、以下の3つのテーブルが用意されているものとします。
T受注サブ
T商品マスタ
T担当者マスタ

それぞれのテーブルには、サンプルデータが既に格納されています。
T受注サブ

ちなみに全てのフィールドは、int型です。
T商品マスタ

左から順番に、int型、nchar型(10文字)、money型です。
T担当者マスタ

左から順番に、int型、nchar型(10文字)です。
今回は、この3つのテーブルを関連付けたビュー(クエリ)を取得して、フォームに表示してみます。
以下のようなビュー(クエリ)とします。

このようなビュー(クエリ)をサーバーサイドに作ることもできますが、今回は、あえてその作業もVisual Basicでやってみます。
VisualStudioを起動します。(今回は、Visual studio2008を使用しています)
「ファイル」→「新しいプロジェクト」とクリックし、任意の名前でプロジェクトを作ります。
フォームが表示されたら、ボタンとデータグリッドビューを図のように配置します。
名前は、それぞれ初期値のままで使用しています。(Form1 と Button1 と DataGridView1)
ボタンのTextプロパティは、「取得」としました。

ボタンをダブルクリックして、コード画面に切り替えます。
以下のようにコードを記述します。
冒頭のImports 文を忘れないようにしてください。
この宣言がないと、以下の用に記述してもエラーが出てきます。
Imports System.Data.SqlClient
Public Class Form1
Private ds As New DataSet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New SqlConnection
Dim Cmd As New SqlCommand
Dim strSQL As String = "SELECT T受注サブ.サブID, T受注サブ.商品ID, T商品マスタ.商品名, T商品マスタ.単価, T受注サブ.数量,
T商品マスタ.単価 * T受注サブ.数量 AS 金額, T受注サブ.担当者ID, T担当者マスタ.担当者名 FROM T受注サブ INNER JOIN T商品マスタ ON
T受注サブ.商品ID = T商品マスタ.商品ID INNER JOIN T担当者マスタ ON T受注サブ.担当者ID = T担当者マスタ.担当者ID"
Cn.ConnectionString = "Data Source=DAI;Initial Catalog=MainSub;User ID=rm;Password=xxxx"
Dim da As New SqlDataAdapter(strSQL, Cn)
Try
da.Fill(ds, "Q受注サブ")
With DataGridView1
.DataSource = ds.Tables("Q受注サブ")
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.Columns("単価").DefaultCellStyle.Format = "#,##0"
.Columns("単価").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
.Columns("金額").DefaultCellStyle.Format = "#,##0"
.Columns("金額").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
End With
Button1.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
If Not Cmd Is Nothing Then Cmd = Nothing
If Not Cn Is Nothing Then Cn = Nothing
End Try
End Sub
なお、画面の都合で自動的に改行されている個所がありますが、実際は改行されていません。

SQLServerのデータベースに接続するためには、SqlConnection と SqlCommand が必要です。
この2つのインスタンス(実体)をまず作ります。
そして、先程ご覧いただいたクエリを生成するSQL文を変数strSQLに代入します。
SqlConnectionのインスタンスであるCnのConnectionStringプロパティには、SQLServerへの接続文字列を代入します。
そして、SqlDataAdapterのインスタンスdaを生成します。
その際、SQL文とCn を引数に設定するのを忘れないでください。
あとは、daのFillメソッドで、DataSet の中に"Q受注サブ" というデータテーブルを作成します。
DataSet とは、ざっくばらんに言うと、メモリに展開されたデータベース領域です。
そして、DataGridView1の DataSource プロパティに、"Q受注サブ"データテーブルを指定します。
これで、DataGridView1にクエリの結果が表示されます。
あとは、書式設定が続いているだけです。
Try~Catch構文でエラーをトラップし、Finallyブロックで、インスタンスの後始末をします。
それでは、実行してみましょう。

すると、ちゃんとデータが表示されました。

今回は、表示するだけでしたが、今後は、データの更新についても取り上げます。
だい
今日は、データベースアプリケーションを取り上げます。
Visual Basicを使って、SQLServerのデータをコントロールに表示する方法をご紹介します。
SQLServerは、Microsoft社が提供しているリレーショナルデータベース管理システム(Relational DataBase Management System : RDBMS)です。
高価な製品ですが、無償で入手できるExpress Edition もあります。
荒っぽく言えば、Accessの高レベル版という感じでしょうか。
なお、SQLServerには、既に「MainSub」という名前のデータベースが作成されているものとします。
そして、そのデータベースには、以下の3つのテーブルが用意されているものとします。
T受注サブ
T商品マスタ
T担当者マスタ

それぞれのテーブルには、サンプルデータが既に格納されています。
T受注サブ

ちなみに全てのフィールドは、int型です。
T商品マスタ

左から順番に、int型、nchar型(10文字)、money型です。
T担当者マスタ

左から順番に、int型、nchar型(10文字)です。
今回は、この3つのテーブルを関連付けたビュー(クエリ)を取得して、フォームに表示してみます。
以下のようなビュー(クエリ)とします。

このようなビュー(クエリ)をサーバーサイドに作ることもできますが、今回は、あえてその作業もVisual Basicでやってみます。
VisualStudioを起動します。(今回は、Visual studio2008を使用しています)
「ファイル」→「新しいプロジェクト」とクリックし、任意の名前でプロジェクトを作ります。
フォームが表示されたら、ボタンとデータグリッドビューを図のように配置します。
名前は、それぞれ初期値のままで使用しています。(Form1 と Button1 と DataGridView1)
ボタンのTextプロパティは、「取得」としました。

ボタンをダブルクリックして、コード画面に切り替えます。
以下のようにコードを記述します。
冒頭のImports 文を忘れないようにしてください。
この宣言がないと、以下の用に記述してもエラーが出てきます。
Imports System.Data.SqlClient
Public Class Form1
Private ds As New DataSet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New SqlConnection
Dim Cmd As New SqlCommand
Dim strSQL As String = "SELECT T受注サブ.サブID, T受注サブ.商品ID, T商品マスタ.商品名, T商品マスタ.単価, T受注サブ.数量,
T商品マスタ.単価 * T受注サブ.数量 AS 金額, T受注サブ.担当者ID, T担当者マスタ.担当者名 FROM T受注サブ INNER JOIN T商品マスタ ON
T受注サブ.商品ID = T商品マスタ.商品ID INNER JOIN T担当者マスタ ON T受注サブ.担当者ID = T担当者マスタ.担当者ID"
Cn.ConnectionString = "Data Source=DAI;Initial Catalog=MainSub;User ID=rm;Password=xxxx"
Dim da As New SqlDataAdapter(strSQL, Cn)
Try
da.Fill(ds, "Q受注サブ")
With DataGridView1
.DataSource = ds.Tables("Q受注サブ")
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.Columns("単価").DefaultCellStyle.Format = "#,##0"
.Columns("単価").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
.Columns("金額").DefaultCellStyle.Format = "#,##0"
.Columns("金額").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
End With
Button1.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
If Not Cmd Is Nothing Then Cmd = Nothing
If Not Cn Is Nothing Then Cn = Nothing
End Try
End Sub
なお、画面の都合で自動的に改行されている個所がありますが、実際は改行されていません。

SQLServerのデータベースに接続するためには、SqlConnection と SqlCommand が必要です。
この2つのインスタンス(実体)をまず作ります。
そして、先程ご覧いただいたクエリを生成するSQL文を変数strSQLに代入します。
SqlConnectionのインスタンスであるCnのConnectionStringプロパティには、SQLServerへの接続文字列を代入します。
そして、SqlDataAdapterのインスタンスdaを生成します。
その際、SQL文とCn を引数に設定するのを忘れないでください。
あとは、daのFillメソッドで、DataSet の中に"Q受注サブ" というデータテーブルを作成します。
DataSet とは、ざっくばらんに言うと、メモリに展開されたデータベース領域です。
そして、DataGridView1の DataSource プロパティに、"Q受注サブ"データテーブルを指定します。
これで、DataGridView1にクエリの結果が表示されます。
あとは、書式設定が続いているだけです。
Try~Catch構文でエラーをトラップし、Finallyブロックで、インスタンスの後始末をします。
それでは、実行してみましょう。

すると、ちゃんとデータが表示されました。

今回は、表示するだけでしたが、今後は、データの更新についても取り上げます。
だい
「高価な製品ですが、無償で入手できるExpress Edition もあります。」
↑そうなのですか?
データーベース作るのは大変そうです。
゜(>ヘ<)゜ ゜
ついていけない・・(ノ_・、)シクシク
当方も試行錯誤の連続です。
奥が深いです。
いろいろなテーマを取り上げますので、これからもいらしてくださいね。
"\( ̄^ ̄)゛ハイ!!
状況が変わる場合がありますが、置手紙は外さないで下さい。
復帰に気が付くの遅くなるだけですから、余計な事はしないに限ります。
うらやましいなぁ
毎日が悪戦苦闘です。
一歩一歩前に進むだけです。がんばります。
ところがAccess2013から.adpが使えないとのこと!
こりゃ困る。
代替案をいろいろ模索しています。
いまさらODBC接続もどうかな?
今はVBとSQLを接続してと思っているのですが、VBは未経験。頭を悩ませています。
記事参考にさせていただいて、勉強してみます。