わからないことはcopilotに聞いてVB.NETでディスクトップアプリを作ってみよう NO.10 データベース
アオノおじさんのひとりごと
(本文とは関係ありません、ひとりごとです)
プログラムをしていると、英語入力と日本語(コメント)の切り替えが頻繁になりませんか。キーボード左上の半角/全角ボタンで切り替えするかと思いますが、押すたびに、英語か日本語か、わからない場合がありませんか。
ワードなどで文章作成なら、ほとんど日本語でOKかと思いますが、プログラムは英語、日本語両方必要です。
そこで半角/全角キーを使用しないでスペース横の無変換をIMEをON
変換をIMEをOFFに設定しておけば、入力時にこの変換、無変換を押してキー入力すると 英語日本語選択済ですので大変便利ですよ。
右下のタスクバー あ、Aの表示を右クリックの設定で キーとタッチのカスタマイズをクリック 以下のように設定するとOKです。
データベース
(ここから本文)
サンプルは以下からダウンロードできます。
(5~11回まですべてのサンプル)
アクセスデータを使用して DataGridView で表示するものを作成します。ただし、データを表示するSQLを操作するだけのもので データを登録する機能はありません。郵便番号辞書のアクセスデータをダウンロードファイルに含まれますので、動作はすぐに確認できます。
このサンプルの実行には注意が必要です。アクセスのデータベースエンジンがインストールされていないとエラーして動作しません。
なお、このエンジン 32,64bitの2つあり OFFICEがインストールされている場合 事前にインストールされているかもしれません。
64ビットでコンパイルしてエラーする場合 32ビットのする必要があります。(32bitOFFICEがある場合)
データベースエンジンはマイクロソフトHPからダウンロードできます。
ここをクリック
X64が付く accessdatabaseengine_X64.exeが 64bit用
ないもの accessdatabaseengine.exeが 32bit用になります。
インストールするデータベースエンジンの32,64に合わせて 送りジョーのソフトも32,64bitを
選択してください。
事前にマイクロソフトOFFICEがインストールされている場合、32,64bitを合わせる必要があります。OFFICEの32,64の確認方法は OFFICEを起動しファイル アカウント バージョン情報
をクリックすると 右上に表示されます。
◯ OFFICEをインストールしている場合
OFFICEの32,64bitを確認し
32bitなら データベースエンジンは accessdatabaseengine.exe
をインストール
送りジョーのソフトも32bit版を使用します。
64bitなら データベースエンジンは accessdatabaseengine_X64.exe
をインストール
送りジョーのソフトも64bit版を使用します。
◯ OFFICEをインストールしていない場合
データベースエンジンはaccessdatabaseengine_X64.exeをインストール
送りジョーのソフトも64bit版を使用します。
◯ OSが32bitの場合は
データベースエンジンは accessdatabaseengine.exeをインストール
送りジョーのソフトも32bit版を使用します。
Accessdatabaseengineのインストールでエラーする場合 インストール済か
OFFICEの32,64 と一致していないと思います。
32,64で統一しないと、インストールできません。
アクセスデータベース 郵便番号辞書で
郵便番号 と 住所 の全国版になります。
新規フォームから作成するのもいいのだが、説明が大変なのでサンプルのダウンロードしたほうが、簡単です
DataGridViewの追加
ツールボックスを開き データからDataGridViewをフォームにドラックします。適当な位置に移動、枠を広げます。
テキストボックス 2つ追加 上 郵便番号 下 住所
この2つは 一致でデータを絞るためのものです。
copilot に聞いてみると以下のような回答になりましたが、これではうまくできません。同じ内容で、質問するか具体的な質問して、いろいろなPGを回答してもらうのがいいかもしれません。
サンプルのDataGridViewのPGは以下にようなものになります。
'*********************************************************************************
'* DataGridView1 表示
'*********************************************************************************
Private Sub ShowList()
Dim YbCStr As String '郵便番号データベース名
Dim FileName As String = System.IO.Path.Combine(Application.StartupPath(), "yubin.accdb")
YbCStr = "Provider=Microsoft.ACE.OLEDB.16.0;" &
"Data Source=" & FileName & ";"
'****** DataGridView1 の初期設定 ********************************************
DataGridView1.ReadOnly = True '編集はしない
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect '行をすべて選択
DataGridView1.RowHeadersVisible = False '行セレクタを表示しない
DataGridView1.AllowUserToAddRows = False '空白を表示しない
DataGridView1.MultiSelect = False 'セル、行、列が複数選択されないようにする
DataGridView1.AllowUserToResizeColumns = False 'ユーザーが列のサイズを変更できない
DataGridView1.AllowUserToResizeRows = False 'ユーザーが行のサイズを変更できない
DataGridView1.RowTemplate.Height = 30 '行の高さの設定
DataGridView1.DefaultCellStyle.Font = New Font("MS ゴシック", 11) 'フォント設定
DataGridView1.ColumnHeadersDefaultCellStyle.Font = New Font("MS ゴシック", 11) 'ヘッタ フォント設定
DataGridView1.EnableHeadersVisualStyles = False 'ビジュアルスタイル無効
DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(224, 224, 224) 'ヘッターの色指定
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
DataGridView1.ColumnHeadersHeight = 30 'ヘッターの高さ
Using cn As New System.Data.OleDb.OleDbConnection
Using cm As New System.Data.OleDb.OleDbCommand
Using da As New System.Data.OleDb.OleDbDataAdapter
Dim ds As New DataSet
cn.ConnectionString = YbCStr
'コネクションの設定
cm.Connection = cn
'データソースで実行するSQL文の設定
If CD.Text = "" And KEY.Text = "" Then 'CD,KEYとも入力なし
cm.CommandText = "SELECT 郵便番号簿.郵便番号, 郵便番号簿.住所 From 郵便番号簿"
Else
cm.CommandText = "SELECT 郵便番号簿.郵便番号, 郵便番号簿.住所 From 郵便番号簿" _
& " Where 郵便番号簿.郵便番号 Like '" & CD.Text & "%" & "' and 郵便番号簿.住所 Like '" & KEY.Text & "%" & "'"
End If
'データソース内のレコードを選択するためのSQLコマンドの設定
da.SelectCommand = cm
'データを取得する
da.Fill(ds, "郵便番号簿")
'データグリッドに表示するデータソースを設定
DataGridView1.DataSource = ds
'グリッドを表示するための、DataSource 内のリストを設定
DataGridView1.DataMember = "郵便番号簿"
'データソースへの接続を閉る
End Using
End Using
End Using
DataGridView1.Columns(0).MinimumWidth = 70 '1列の幅の設定
DataGridView1.Columns(0).HeaderText = "郵便番号"
DataGridView1.Columns(1).MinimumWidth = 400 '2列の幅の設定
DataGridView1.Columns(1).HeaderText = "住所"
End Sub
プロパティはプロパティ画面から登録できるのだが
DataGridViewの場合、プログラム内に記入しておくほうが、修正時などは分かりやすいと思います。この場合 新規フォームを作成するたびにプロパティを入力しておく必要があるます。プロパティの画面で登録しておくと新規フォームや新プロジェックトでコピー&ペーストで移行できるメリットもありますので、内容によって、PG内に入れるか、プロパティ画面で登録するかを、考えてください
==================================================
※Application.StartupPath() は起動時のパス "yubin.accdb"はデータ
==================================================
Dim FileName As String = System.IO.Path.Combine(Application.StartupPath(), "yubin.accdb")
==================================================
※Microsoft.ACE.OLEDB.16.0で接続するデータソース
==================================================
YbCStr = "Provider=Microsoft.ACE.OLEDB.16.0;" &"Data Source=" & FileName & ";"
==================================================
※編集はしない==================================================
DataGridView1.ReadOnly = True
==================================================
※行をすべて選択
==================================================
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
==================================================
※行セレクタを表示しない
==================================================
DataGridView1.RowHeadersVisible = False
==================================================
※空白を表示しない
==================================================
DataGridView1.AllowUserToAddRows = False
==================================================
※セル、行、列が複数選択されないようにする
==================================================
DataGridView1.MultiSelect = False
==================================================
※ユーザーが列のサイズを変更できない
==================================================
DataGridView1.AllowUserToResizeColumns = False
==================================================
※ユーザーが行のサイズを変更できない
==================================================
DataGridView1.AllowUserToResizeRows = False
==================================================
※行の高さの設定
==================================================
DataGridView1.RowTemplate.Height = 30
==================================================
※フォント設定
==================================================
DataGridView1.DefaultCellStyle.Font = New Font("MS ゴシック", 11)
==================================================
※ヘッタ フォント設定
==================================================
DataGridView1.ColumnHeadersDefaultCellStyle.Font = New Font("MS ゴシック", 11)
==================================================
※ビジュアルスタイル無効
==================================================
DataGridView1.EnableHeadersVisualStyles = False
==================================================※ヘッターの色指定
==================================================
DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(224, 224, 224)
==================================================※ヘッターの高さ
==================================================
DataGridView1.ColumnHeadersHeight = 30
==================================================
'データソースで実行するSQL文の設定
If CD.Text = "" And KEY.Text = "" Then 'CD,KEYとも入力なし
cm.CommandText = "SELECT 郵便番号簿.郵便番号, 郵便番号簿.住所
From 郵便番号簿"
Else
cm.CommandText = "SELECT 郵便番号簿.郵便番号, 郵便番号簿.住所
From 郵便番号簿 Where 郵便番号簿.郵便番号 Like '" &
CD.Text & "%" & "' and 郵便番号簿.住所 Like '" & KEY.Text & "%" & "'"
End If
SQLの説明だけで1冊の本になりますので、説明は省きますが
DataGridViewに表示する注意点として SELECT の順に注意してください。
ここでは
郵便番号簿.郵便番号, 郵便番号簿.住所
左から 郵便番号 住所と表示されます。
郵便番号簿.住所 , 郵便番号簿.郵便番号 とすると
郵便番号や住所を頭から入力すると それに一致したものが表示できるようにしています。これは SQL に=を Likeにして 入力値に%を追加するとあいまいで抽出できます。
郵便番号簿.住所 Like '" & KEY.Text & "%"
==================================================※1列の幅の設定
==================================================
DataGridView1.Columns(0).MinimumWidth = 70
==================================================※1列 ヘッタのタイトル
==================================================
DataGridView1.Columns(0).HeaderText = "郵便番号"
=================================================
10 データベースはこれで終了です。
今回はDataGridViewの表示のみでしたが、データ登録は別の機会で
← 前の記事に戻る 次の記事に行く →
また、私のホームページには、住所データも登録できるソフトも公開しています。こちらをクリック
以下は、今回の作成予定の実行ファイル OkuriJyo100.zip(無料)です。
01で入手していないかたは、こちらからダウンロードできます。