ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

郵便番号データを SQL Server で利用するには(1) – SQL Server 2012 Management Studio でデータ変換サービス DTS を使って CSV データを SQL Server に取り込む

leave a comment »

データ変換サービス DTS はSQL Server 2000 の頃からよく使っていた。Excel や Access 、CSV 形式のテキストファイルなどを SQL Server にウィザードで取り込むことができる便利なツールだ。だが DTS は無償版の SQL Server 2012 Management Studio のメニューからは利用できない。

SQLSV_MS_2012_DTS_003_mid_640

<Fig.1 : SQL Server 2012 Management Studio の「ツール」メニューからはデータ変換サービス DTS が使えない>

データ変換サービス DTS を利用するには、Windowsのスタートメニューで Microsoft SQL Server 2012 から「データのインポートおよびエクスポート」を実行するか、以下のフォルダにある DTSWizard.exe を直接実行する。フォルダ名はインストールしている SQL Server や Management Studio のバージョンによって異なる場合もある。

C:\Program Files\Microsoft SQL Server\110\DTS\Binn

SQLSV_MS_2012_DTS_004_mid_640

<Fig.2 : Windowsのスタートメニューから「データのインポートおよびエクスポート」を実行する>

SQLSV_MS_2012_DTS_005

<Fig.3 : C ドライブの Program Files フォルダから直接 DTS ウィザード DTSWizard.exe を起動する>

データ変換サービス DTS を起動する前に、日本郵便の Web ページから最新の郵便番号データをダウンロードしておく。データは CSV 形式で、ZIP 形式の圧縮になっている。ファイルをダウンロードし、適当なフォルダに保存して展開しておく。展開すると次のように KEN_ALL.CSV というファイルができる。これは全国の郵便番号を一括でダウンロードしたファイルだ。

ちなみにこのファイルは、Excel をインストールしているコンピュータなら下のように Excel との関連付けがされており、ダブルクリックすると Excel で開くことができる。しかし Excel のバージョンや保存形式によって最大行数の制約を受けることがあるので、くれぐれも上書き保存しないように。うっかり上書き保存するとデータが切り捨てられてしまう場合がある。

SQLSV_MS_2012_DTS_006_mid_640

<Fig.4 : 日本郵便の Web サイトから郵便番号データをダウンロードする>

SQLSV_MS_2012_DTS_007

<Fig.5 : 日本郵便からダウンロードした ZIP 圧縮形式の郵便番号データを解凍した>

郵便番号データの準備ができたら、データ変換サービス DTS を起動する。次の起動画面が表示されるだろう。

SQLSV_MS_2012_DTS_008

<Fig.6 : データ変換サービス DTS を起動する>

「次へ」をクリックしてウィザードをすすめると「データソースの選択」画面になる。ここでは CSV 形式のテキストファイルを読み込みたいので、「データソース」を「フラットファイルソース」にし、先に保存した郵便番号の CSV ファイルを「ファイル名」のところで「参照」ボタンをクリックして選択する。

「ロケール」と「コードページ」には文字コード体系がデフォルトで設定されているはずだ。「形式」では「テキスト修飾子」がデフォルトで<なし>になっているが、この郵便番号ファイルはテキストデータをダブルクォーテーション「”」で囲んでいるので、「テキスト修飾子」に「”」を入力する。またデータにフィールド名はないので「先頭データ行を列名として使用する」のチェックを外す。

SQLSV_MS_2012_DTS_009

<Fig.7 : データ変換サービス DTS でデータソースの選択をする>

左側の「データソース」で「全般」から「列」のビューに切り替えると、データをプレビューで確認できる。

SQLSV_MS_2012_DTS_010

<Fig.8 : データ変換サービス DTS のデータソースの選択で「列」のビューに切り替える>

次に左側の「データソース」で「全般」から「詳細設定」のビューに切り替える。ここで重要なのは、OutputColumnWidth の設定で、この値を読み込むデータの最大サイズ以上に指定しておかなければならない。

そこであらかじめ Excel で郵便番号データの各フィールドの要素と最大データ長を調べておく。フィールドの要素は次のようになっている。

列0 : 何かの管理番号(最大5桁の数字)
列1 : 郵便番号の前から3~5桁を切り取った数値
列2 : 郵便番号(7桁の数字)
列3 : 都道府県の半角カナ(最大文字長7)
列4 : 市区町村の半角カナ(最大文字長22)
列5 : 市区町村以降の半角カナ(最大文字長73)
列6 : 都道府県(漢字、最大文字長4)
列7 : 市区町村(漢字、最大文字長10)
列8 : 市区町村以降(漢字、最大文字長37)
列9~14 : 住所データを管理する何らかの記号(1桁の数値)

デフォルトで OutputColumnWidth の値は50に設定されている。ここで問題になるのは、列5の半角カナ73文字と列8の漢字37文字だ。漢字は2バイト文字なので、文字数の2倍、74以上のサイズを必要とする。そこでこの2つのフィールドは、それぞれサイズを増やしておかなければならない。

SQLSV_MS_2012_DTS_011

<Fig.9 : データ変換サービス DTS のデータソースの選択で「詳細設定」のビューに切り替える>

あらかじめデータの最大サイズがわかっていれば手作業でOutputColumnWidth の値を変更するが、わからないときは「型の推測」ボタンをクリックし、実際のデータをスキャンして自動的に調べることもできる。

SQLSV_MS_2012_DTS_012

<Fig.10 : データ変換サービス DTS で列の型の推測をする>

SQLSV_MS_2012_DTS_013

<Fig.11 : データ変換サービス DTS で型の推測をした>

ここまでで入力データの設定ができた。次は変換先の設定をする。変換先はデフォルトの SQL Server Native Client とし、サーバー名をドロップダウンで選択する。そしてデータベースをデータをインポートしたいデータベースに変更する。

SQLSV_MS_2012_DTS_014

<Fig.9 : データ変換サービス DTS で変換先を選択する>

次の「コピー元のテーブルおよびビューを選択」では、元データとインポートするテーブルとのデータマッピングを編集することができる。「マッピングの編集」ボタンをクリックする。

SQLSV_MS_2012_DTS_015

<Fig.10 : データ変換サービス DTS でコピー元のテーブルおよびビューを選択する>

「列マッピング」のビューでは、変換元と変換先のフィールド名、フィールドの型、サイズが自動的に設定されている。設定値は「型の推測」で元データから得られたものだ。

SQLSV_MS_2012_DTS_016

<Fig.11 : データ変換サービス DTS で列マッピングを編集する>

「型の推測」で列0から列2までは数字と判断されている。SQL Server でどのような処理をしたいかによるが、数字であってもコードとして処理したい場合は、文字列にしたほうが扱いやすい場合がある。また住所のデータは varchar ではなく nvarchar にしたい。そこで型やサイズを手作業で変更する。

SQLSV_MS_2012_DTS_017

<Fig.12 : データ変換サービス DTS で変換先の型とサイズを編集する>

またデフォルトで「変換先テーブルを作成する」のラジオボタンが選択されており、SQL Server に新しくテーブルを作成することができるが、「SQL の編集」ボタンをクリックすると「テーブル作成 SQL ステートメント」のウィンドウが表示され、SQL Server に生成するテーブルのテーブル名やフィールド名を編集することができる。テーブル名を「郵便番号住所」とし、各フィールド名を設定する。

SQLSV_MS_2012_DTS_018

<Fig.13 : テーブル作成 SQL ステートメントを編集する>

テーブル作成 SQL ステートメントの編集を終了すると「列マッピング」のビューに戻る。このビューに戻っても「変換先」のフィールド名は変わらず「列 0」や「列 1」といったデフォルトのままであるので、手作業で「変換先」のフィールド名を書き換える。ドロップダウンリストには表示されないので、手作業で書き換える必要がある。

SQLSV_MS_2012_DTS_019

<Fig.14 : データ変換サービス DTS の列マッピングで変換先のフィールド名を編集する>

列マッピングの編集が終わると「コピー元のテーブルおよびビューを選択」画面に戻る。このときも戻ったときは「変換先」のテーブル名がデフォルトで与えられたままなので、「テーブル作成 SQL ステートメント」で変更したテーブル名に手作業で書き換える必要がある。

SQLSV_MS_2012_DTS_020

<Fig.15 : データ変換サービス DTS のコピー元のテーブルおよびビューを選択で変換先のテーブル名を書き換える>

次に「データ型マッピングの確認」になる。変換先のテーブル名やフィールド名、データの型やサイズを変更したので、データの切り捨てなどがおこる可能性があるとの注意がされるが、間違いがなければこのまま次にすすめてよい。

SQLSV_MS_2012_DTS_021

<Fig.16 : データ変換サービス DTS でデータ型マッピングの確認をする>

ここまでで設定は終了し、最後の「パッケージの実行」では、いますぐ実行したい場合は「すぐに実行する」のチェックボックスを入れたままにし、次へすすむ。

SQLSV_MS_2012_DTS_022

<Fig.17 : データ変換サービス DTS でパッケージの実行をする>

SQLSV_MS_2012_DTS_023

<Fig.18 : データ変換サービス DTS でウィザードを完了する>

ウィザードを完了すると、データ変換サービス DTS が変換元のデータを読みとり、SQL Server に送信する。変換のプロセスがわかり、レポートが表示される。

SQLSV_MS_2012_DTS_024

<Fig.19 : データ変換サービス DTS で変換プロセスとレポートを表示する>

SQL Server Management Studio でテーブルとデータを確認する。すべてのデータが変換されたかどうかは、ビューを作って確かめる。

——————————————————————-

SELECT COUNT(*) AS Expr1 FROM dbo.郵便番号住所

——————————————————————-

SQLSV_MS_2012_DTS_025_mid_640

<Fig.20 : SQL Server Management Studio でテーブルとデータを確認する>

SQLSV_MS_2012_DTS_026_mid_640

<Fig.21 : SQL Server Management Studio でデータの件数を確認する>

データ変換サービス DTS では、変換元のフィールドサイズの最大サイズがわかっていれば手作業で OutputColumnWidth の値を変更し、わからなければ「列の型の推測」でデータサイズを調べ、自動的に適用させればよい。その場合は、変換先のフィールドが設定したい型やサイズにならない場合があるので、そのときは手作業で編集する。

データ変換サービス DTS でエラーがおこったときは、まずフィールドサイズが OutputColumnWidth の設定値を超えていないかを確認しよう。

片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(5) – 「検索条件ビルダー」を使ってキーワードによる「部分一致」検索をノンコードで実装する

with one comment

前回の記事で「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(4) – 「検索条件ビルダー」を使ってキーワードによる「前方一致」、「後方一致」、「部分一致」検索を実装する」を紹介した。今回は「条件検索ビルダー」を使ってノンコードで「部分一致」を実装する手順を紹介する。Visual Studio 2013 で「検索条件ビルダー」を使えば、一行もコードを書く必要はない。

Visual Studio 2013 を起動し、C#の Windows Form アプリケーションの新しいプロジェクトを作成する。データ接続は「データソース構成ウィザード」で SQL Server のテーブルに接続しておく。データソースを構成したら、接続先のテーブルを画面にドラッグしてデータグリッドビューを作成する。ここまでの手順は、前回までの記事を参考にしてほしい。

部分一致_001_mid_640

<Fig.1 : データソース構成ウィザードで SQL Server に接続するデータグリッドビューを作成した>

生徒BindingSource または生徒TableAdapter、あるいはデータグリッドビューを選択して右上に表示される「スマートタグ」の小さな三角アイコン▲をクリックし「クエリの追加」をする。

部分一致_003_mid_640

<Fig.2 : バインディングソースのスマートタグから「クエリの追加」を行う>

「条件検索ビルダー」が起動するので、クエリテキストを次のように変更する。

——————————————————————-
SELECT 学籍番号, 氏名, クラス, 住所, 性別, 性別コード FROM dbo.生徒
WHERE 氏名 LIKE ‘%’ + @SelectNamePartial + ‘%’
——————————————————————-

SQL 文では文字列をシングルクォーテーションで挟む。パラメータクエリのパラメータの前後に、シングルクォーテーションで挟んだ「%」の文字列を加えると、部分一致のクエリになる。

部分一致_004

<Fig.3 : 「条件検索ビルダー」でクエリテキストを編集する>

「検索条件ビルダー」を終了すると、フォームに fillByToolStrip が生成している。これだけで、この検索は、部分一致になっている。

部分一致_005_mid_640

<Fig.4 : 「条件検索ビルダー」を終了すると fillByToolStrip が生成している>

部分一致のクエリを実装するにはこれだけでいい。ビルドして動作を確認する。

部分一致_006_mid_640

<Fig.5 : ビルドして部分一致を確認する>

このように「検索条件ビルダー」のクエリさえ記述すれば、部分一致の検索フォームをノンコードで作ることができる。検索条件ビルダーを活用して、データベース接続アプリケーションを簡単に作ろう。

<前の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(4) – 「検索条件ビルダー」を使ってキーワードによる「前方一致」、「後方一致」、「部分一致」検索を実装する

片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(4) – 「検索条件ビルダー」を使ってキーワードによる「前方一致」、「後方一致」、「部分一致」検索を実装する

with 4 comments

Microsoft Visual Studio 2013 を使えば、ノンコードで SQL Server に接続するデータベースアプリケーションを作ることができることを紹介した。前回「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(3) – 「検索条件ビルダー」を使ってキーワードによる選択クエリをノンコードで実装する」では、全文一致検索によってデータを絞り込むアプリケーションは「条件検索ビルダー」でノンコードで実装できることを紹介した。今回は、キーワードの「完全一致」ではなく、「前方一致」あるいは「後方一致」、「部分一致」で検索するフォームを作ってみよう。「前方一致」あるいは「後方一致」、「部分一致」を「条件検索ビルダー」を使って実装するには、SQL 文を LIKE 演算子で構成するとよい。

Visual Studio 2013 を起動し、新しいプロジェクトを作成する。言語はC#として Windows Form フォームアプリケーションを作ろう。

前方一致後方一致_001_mid_640

<Fig.1 : Visual Studio 2013 で Windows Form アプリケーションを作る新しいプロジェクトを始める>

次にデータ接続を作成しよう。画面の右端「データソース」タブを展開し、「新しいデータソースを追加」する。データソースの構成は「データソース構成ウィザード」で画面に従ってすすめる。説明は省略するが、画面ショットだけ紹介しよう。

前方一致後方一致_002_mid_640

<Fig.2 : 「データソース」タブを展開し「新しいデータソースの追加」をクリックして「データソース構成ウィザード」をはじめる>

前方一致後方一致_003_mid_640

<Fig.3 : 「データソース構成ウィザード」でデータソースの種類を選択する>

前方一致後方一致_004_mid_640

<Fig.4 : 「データソース構成ウィザード」でデータベースモデルを選択する>

前方一致後方一致_005_mid_640

<Fig.5 : 「データソース構成ウィザード」でデータ接続を選択する>

前方一致後方一致_006_mid_640

<Fig.6 : 「データソース構成ウィザード」で接続文字列をアプリケーション構成ファイルに保存する>

前方一致後方一致_007_mid_640

<Fig.7 : 「データソース構成ウィザード」でデータベースオブジェクトを選択する>

「データソース構成ウィザード」を終了すると、データソースに接続先の SQL Server のテーブルが表示される。「生徒」テーブルをデザインビューのフォームへドラッグし、データグリッドビューを作成しよう。データグリッドビューを作成したら、すべてのフィールドが表示されるようにデータグリッドビューを右に広げよう。

前方一致後方一致_008_mid_640

<Fig.8 : 「データソース構成ウィザード」でデータソースが構成できた>

前方一致後方一致_009_mid_640

<Fig.9 : 構成したデータソースから「生徒」テーブルをフォームにドラッグしてデータグリッドビューを作成する>

データグリッドビューが生成すると同時に、データ接続に関するオブジェクトが5つ生成する。データセット、バインディングソース、テーブルアダプター、テーブルアダプタマネージャー、そしてバインディングナビゲーターだ。このうち、生徒BindingSource または生徒TableAdapter、あるいはデータグリッドビューを選択して右上に表示される「スマートタグ」の小さな三角アイコン▲をクリックし「クエリの追加」をする。

前方一致後方一致_010_mid_640

<Fig.9 : スマートタグから「クエリの追加」を行う>

スマートタグから「クエリの追加」を行うと「条件検索ビルダー」ウィンドウが表示される。ここで絞り込む検索条件を次のように LIKE 演算子を使ってクエリテキストを編集しよう。

——————————————————————-
SELECT 学籍番号, 氏名, クラス, 住所, 性別, 性別コード FROM dbo.生徒
WHERE 氏名 LIKE @SelectNameLike
——————————————————————-

前方一致後方一致_011

<Fig.10 : スマートタグから「クエリの追加」を行い「条件検索ビルダー」を起動する>

前方一致後方一致_012

<Fig.11 : 「条件検索ビルダー」でクエリテキストを編集する>

クエリを設定するとフォームに fillByToolStrip が自動的に生成する。次にフォーム上にテキストボックスとボタンを作成し、ボタンのテキストを「前方一致」とする。そしてボタンのクリックイベントに次のコードを書く。SQL 文では「%」が任意の文字列をあらわすのだ。

——————————————————————-
try
    {
    this.生徒TableAdapter.FillBy(this.mYSQLSVDataSet.生徒, textBox1.Text + "%");
    }
catch (System.Exception ex)
    {
    System.Windows.Forms.MessageBox.Show(ex.Message);
    }
——————————————————————-

前方一致後方一致_013_mid_640

<Fig.12 : フォームにテキストボックスと「前方一致」のボタンを作る>

前方一致後方一致_014_mid_640

<Fig.13 : 「前方一致」ボタンのクリックイベントにコードを書く>

同様に「後方一致」と「部分一致」、「全件取得」のボタンを作成する。ボタンのクリックイベントにそれぞれ次のコードを書く。

<「後方一致」ボタンのクリックイベント>
——————————————————————-
try
    {
    this.生徒TableAdapter.FillBy(this.mYSQLSVDataSet.生徒, "%" + textBox1.Text);
    }
catch (System.Exception ex)
    {
    System.Windows.Forms.MessageBox.Show(ex.Message);
    }
——————————————————————-

<「部分一致」ボタンのクリックイベント>
——————————————————————-
try
    {
    this.生徒TableAdapter.FillBy(this.mYSQLSVDataSet.生徒, "%" + textBox1.Text + "%");
    }
catch (System.Exception ex)
    {
    System.Windows.Forms.MessageBox.Show(ex.Message);
    }
——————————————————————-

<「全件取得」ボタンのクリックイベント>
——————————————————————-
try
    {
    this.生徒TableAdapter.Fill(this.mYSQLSVDataSet.生徒);
    }
catch (System.Exception ex)
    {
    System.Windows.Forms.MessageBox.Show(ex.Message);
    }
——————————————————————-

前方一致後方一致_015_mid_640

<Fig.14 : 「後方一致」、「部分一致」、「全件取得」ボタンを作りクリックイベントにコードを書く>

ビルドしてテキストボックスに入力し、絞り込み検索を確かめる。

前方一致後方一致_016_mid_640

<Fig.15 : アプリケーションをビルドして「後方一致」、「部分一致」、「全件取得」の動作を確かめる>

このように前方一致、後方一致または部分一致のフォームを作るには、検索条件ビルダーで SQL 文を LIKE 演算子で絞り込むこととし、fillBy メソッドの文字列に SQL 文で任意の文字列を示す「%」を加えるといい。

<前の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(3) – 「検索条件ビルダー」を使ってキーワードによる選択クエリをノンコードで実装する

<次の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(5) – 「検索条件ビルダー」を使ってキーワードによる「部分一致」検索をノンコードで実装する

SQL Server に接続した InfoPath フォームのデータ接続を手作業で変更する – 繰り返しテーブルのデザインを生かすため、繰り返しテーブルのバインドを保持したまま接続するテーブルやビューを変更する

leave a comment »

InfoPath はデータ接続を SQL Server にすることができ、SQL Server に対するクライアントアプリケーションとして利用することができる。Visual Studio を使ってアプリケーションを開発することが簡単になったとはいえ、データベースアプリケーションを作るのは、やはり、それなりに難しい。そこでクライアントに InfoPath を使うメリットがある。

InfoPath は SQL Server へのデータ接続をウィザードで構成することができ、一行もコードを書かずにクライアントアプリケーションにすることができる。また InfoPath フォームに繰り返しテーブルを作ると、簡単にデータ接続にバインドできる。このとき、繰り返しテーブルの列幅やコントロールの変更、コントロールのプロパティ変更、条件付き書式、動作規則などを設定した後で、データ接続を変更したいことがある。データ元のテーブルやビューを切り替えたい場合だ。

いちど構成したデータ接続は、ウィザードでいつでも変更することができる。しかしウィザードでデータ接続を変更すると、デザインされた繰り返しテーブルとデータ接続の関連付けが壊れ、もう一度繰り返しテーブルのデザインをやり直さなければならなくなる場合がある。繰り返しテーブルの関連付けが壊れると、フィールドに赤の「×」が表示される。

blog_講座一覧_010_mid_640

<Fig.1 : デザインされた繰り返しテーブルをもつフォームのデータ接続を変更して関連付けが壊れた>

手間をかけてデザインした繰り返しテーブルは、できればそのまま使いたい。このとき、次のようにデータ接続の SQL 文を手作業で変更すると、データ接続と繰り返しテーブルの関連付けを壊すことなく接続元の SQL Server のテーブルやビューを変更することができる。

データ接続ウィザードを起動してデータ接続の編集をする。あらかじめ設定されたデータ接続を表示し、接続する SQL Server のフィールドが表示されたら「SQL の編集」ボタンをクリックして SQL 文を直接編集する。

blog_講座一覧_001_edit_mid_640

<Fig.2 : データ接続ウィザードでデータソースを編集する>

「SQL の変種」をクリックすると、設定された SQL Server へ接続する SQL 文が表示される。ここで接続先のテーブルまたはビューの名前だけを変更する。

ここでは、もともと「v_講座一覧」というビューに接続していたが、表示したいフィールドを増やした新しいビュー「v_テスト用の講座一覧」というビューに変更している。

blog_講座一覧_004

<Fig.3 : 変更する前のデータ接続の SQL 文>

blog_講座一覧_006

<Fig.4 : 変更後のデータ接続の SQL 文>

SQL 文を変更すると、変更したテーブルまたはビューのフィールドがデータ接続ウィザードに表示される。追加したい必要なフィールドにチェックを入れる。

blog_講座一覧_014_mid_640

<Fig.5 : 接続先を変更したビューのフィールドが表示される>

blog_講座一覧_015_mid_640

<Fig.6 : 表示したいフィールドにチェックを入れる>

データ接続の編集を終わってフォームのデザインに戻ると、繰り返しテーブルにエラーは表示されず、テーブルとデータ接続のバインドが保持され、壊れていないことがわかる。あとは繰り返しテーブルに列を追加し、新たに接続したフィールドを構成すればいい。

blog_講座一覧_016_mid_640

<Fig.7 : 繰り返しフィールドとデータ接続のバインドは保持され、必要なフィールドを追加する>

InfoPath の特徴は、データ接続をウィザードで簡単に構成することができ、繰り返しテーブルの項目も単なるテキストボックスからドロップダウンリストボックス、チェックボックス、ラジオボタンなどに簡単に変更することができること、また条件付き書式や動作規則で表示を変えたり、データを変更したときに動作をさせたりする設定ができることだ。しかし使いやすいフォームを構成するには、繰り返しテーブルの要素を、それなりの手間と時間をかけて編集することになる。繰り返しテーブルを構成した後でデータ接続を変更し、せっかく時間をかけてデザインした繰り返しテーブルのバインドが壊れて使えなくなってしまうのはもったいない。データ接続の SQL 文をうまく編集して、時間と手間をかけて作った繰り返しテーブルのデザインが活かせるようにしよう。

秋月電子通商が販売するKm2Net Inc.のディジタルUSBインタフェース Km2Net USB-IO2.0(AKI)を試す

leave a comment »

Km2Net USB-IO2.0(AKI)はKm2Net Inc.のディジタルUSBインタフェースで秋月電子通商が販売している。これは汎用ディジタル入出力12ピンを持ち、USB-2.0接続、動作電力はUSBから供給するので独自電源不要、600milソケット対応なのでブレッドボードでの実験がしやすい、HIDデバイスとして認識されるのでドライバが不要、Visual Studio による VB のサンプルプログラムが添付されている、などの特徴がある。

IMG_2645_mid_640_480

<Fig.1 : Km2Net USB-IO2.0(AKI) のパッケージをあけたところ>

パッケージには Km2Net USB-IO2.1(AKI) の本体と、600mil 対応のピンが入っている。使うには工作が必要だ。まずはこれらのピンを Km2Net USB-IO2.1(AKI) の本体にはんだ付けしよう。

IMG_2646_mid_640_480

<Fig.2 : Km2Net USB-IO2.1(AKI) の本体と 600mil 対応のピン>

添付のピンのうち、L字型に曲がったピンは6列だが、Km2Net USB-IO2.1(AKI) の本体には5列のピン穴がある。ペンチかニッパーでピンを1列外そう。

IMG_2647_mid_640_480

<Fig.3 : L字型のピンを1列外す>

また Km2Net USB-IO2.1(AKI) の本体には両側にディジタル入出力のピン穴がそれぞれ7列ずつあるので、添付のピンを切り離し7列のピンを2つ作ろう。

IMG_2648_mid_640_480

<Fig.4 : 7列のピンを2つ作る>

切り離した7列のピンをブレッドボードに挿してみる。これを本体にはんだ付けするのだが、ピンが曲がってブレッドボードに挿せなくなることも考えられるので、このままはんだ付けすることにする。

IMG_2649_mid_640_480

<Fig.4 : 7列のピンをブレッドボードに挿してみる>

IMG_2650_mid_640_480

<Fig.5 : ブレッドボードに挿した7列ピンの上に Km2Net USB-IO2.1(AKI) の本体を乗せる>

この状態ではんだ付けをすると、熱でブレッドボードが痛む可能性がある。はんだ付けは手早く、確実にしよう。

IMG_2651_mid_640_480

<Fig.6 : Km2Net USB-IO2.1(AKI) の本体に7列ピンをはんだ付けした>

次に5列のL字型ピンをはんだ付けする。これは基板裏側からのはんだづけになる。

IMG_2654_mid_640_480

<Fig.7 : Km2Net USB-IO2.1(AKI) の本体に5列のL字型ピンをはんだ付けする>

Km2Net USB-IO2.1(AKI) の本体には Visual Studio のサンプルプログラムがついている。言語は Visual Basic だ。本体をブレッドボードに取り付け、J1-0入力に LED を取り付ける。Visual Studio を起動し、サンプルプログラムを動かす。

Km2Net_002

<Fig.8 : Km2Net USB-IO2.1(AKI) のサンプルプログラムを起動する>

「入出力状態」の左端「0」をクリックすると接続した LED が点いたり消えたりする。

IMG_2655_mid_640_480

<Fig.9 : Km2Net USB-IO2.1(AKI) のJ1-0に取り付けた LED が消えている>

Km2Net_001

<Fig.10 : Km2Net USB-IO2.1(AKI) のサンプルプログラムを起動して左端の「0」をクリックして赤色に変える>

IMG_2656_mid_640_480

<Fig.11 : Km2Net USB-IO2.1(AKI) のJ1-0に取り付けた LED が点いた>

このように、実に簡単にUSBインタフェースを使えることがわかった。これを使って様々なディジタルデバイスをコンピュータからコントロールできるだろう。

片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(3) – 「検索条件ビルダー」を使ってキーワードによる選択クエリをノンコードで実装する

with 5 comments

前回の記事「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(2) – テーブル接続一対一アプリケーションの作成手順」で Visual Studio 2013 を使えば SQL Server のテーブルに対して1対1で接続するアプリケーションは、ノンコードであっという間に作ることができる手順を紹介した。しかし、データが少ない場合はともかく、たいていの場合テーブルにストアされているデータを全部いちどに取得することは考えにくい。なんらかのキーを使って選択して取得することが必要だ。データセットにキーワードをパラメーターとして渡す、いわゆる「パラメータクエリ」の実装だ。

Visual Studio 2013 の「検索条件ビルダー」を使えば、単純キーワードでデータを選択して取得するフォームをノンコードで作ることができる。

前回作ったフォームのデザインビューで、下部のデータ接続関係のオブジェクトが並んでいるところに「生徒TableAdapter」という名前のテーブルアダプターがある。これをマウスでポイントすると、右上に「スマートタグ」と呼ばれる小さな三角アイコン▲が表示される。これをクリックすると「生徒TableAdapterタスク」というタスクの一覧が表示される。ここで「クエリの追加」をクリックする。

VS2013_30_query_003_mid_640

<Fig.1 : 「生徒TableAdapterタスク」で「クエリの追加」をする>

「検索条件ビルダー」のウィンドウが表示されるので「クエリテキスト」に絞り込みたい検索条件を SQL 文で記述する。記述式の例文がウィンドウ下部にあるので、それにならって式を作ろう。ここでは「性別」をキーワードにして「男」か「女」かを絞り込むことにし、次のような式を書く。

SELECT 学籍番号, 生徒氏名, 性別, 作成日, 更新日 FROM dbo.生徒 WHERE 性別 = @SelectSeibetsu

SQL 文のステートメントは大文字小文字を区別しない。また改行して記述しても連続した一文とみなされる。@のパラメータ名は自分で好きなものを決めればいい。

VS2013_30_query_005

<Fig.2 : 「検索条件ビルダー」で選択条件クエリを実装する>

やるべきことはこれだけだ。「OK」を押してデザインビューに戻ると、フォームに新しいメニューが自動的に生成し、下部には「fillByToolStrip」が生成したことがわかる。

VS2013_30_query_006_mid_640

<Fig.3 : フォームに「fillByToolStrip」が生成した>

ビルドしよう。fillByToolStrip のテキストボックスに「男」や「女」を入力して「FillBy」をクリックすると、男だけ、女だけのデータが絞り込まれて表示される。

VS2013_30_query_008

<Fig.4 : fillByToolStrip で男だけのデータを絞り込むことができた>

このように「検索条件ビルダー」を使えば、このようなパラメータクエリをノンコードで実装できる。これまでデータベースアプリケーションを作ることが難しいと断念していた者は、ぜひ試してほしい。

<前の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(2) – テーブル接続一対一アプリケーションの作成手順

<次の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(4) – 「検索条件ビルダー」を使ってキーワードによる「前方一致」、「後方一致」、「部分一致」検索を実装する

片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(2) – テーブル接続一対一アプリケーションの作成手順

with 4 comments

前回の記事「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(1) – テーブル接続一対一の一般的な業務アプリケーションは30秒でできる。」にも書いたが、プログラミングが簡単にできるようになった、と言っても、数年前までは SQL Server のようなデータベースに接続してデータを送受信する、クライアント・サーバー型のアプリケーションを作るのは、やはりそれなりに難しかった。初心者向けのプログラミング解説書は、たとえば「電卓」や「メモ帳」のようなWindows Form 上で機能するアプリケーションの作り方はたいへん丁寧に説明され、誰でもすぐに作ることができるようになっているが、データベースに接続するクライアント・サーバー型のアプリケーションの作り方は全く説明されないか、説明があっても少しだけで、業務に使えるアプリケーションを作るまでには説明されていない。そこで「データベースアプリケーションの作り方」といった書籍をみることになるが、こちらは敷居が高く、読み進めるための高度な前提知識が必要で断念せざるを得ない場合が多い。

しかし今は違う。Visual Studio 2013 がある。

Visual Studio 2013 を使えば、SQL Server に接続するクライアントアプリケーションはあっという間にできる。単にテーブルと一対一で接続し、データを閲覧、編集することでよければ、ウィザードをすすめることで数分、極端な場合たった30秒で作ることができる。手順を紹介しよう。ここで使うのは Microsoft の Web サイトから無償でダウンロードできる Visual Studio Express 2013 for Desktop だ。

まず Visual Studio 2013 を起動し「新しいプロジェクト」をクリックする。テンプレートは Windows フォームアプリケーション、言語は C# を選ぼう。

VS2013_30_minuits_001_mid_640

<fig.1 : Visual Studio 2013 を起動し「新しいプロジェクト」をクリックする>

VS2013_30_minuits_002_mid_640

<fig.2 : テンプレートを Windows フォームアプリケーション、言語は C# とする>

VS2013_30_minuits_003_mid_640

<fig.3 : Windows フォームアプリケーションを作る準備ができた>

空白のフォームが生成しフォームアプリケーションを作る準備ができた。次に SQL Server に接続するための「データ接続」を構成しよう。「データ接続」を構成するには、画面の左にたたまれているタグ「データソース」をクリックして開く。「プロジェクトには現在関連データソースがありません。」と表示がされるので、「新しいデータソースの追加」をクリックする。

VS2013_30_minuits_004_mid_640

<fig.4 : 「データソース」タグをクリックして「データソース」を構成する>

「データソース」タグをクリックして「データソース構成ウィザード」をはじめる。まず「データソースの種類を選択」をする。ここではSQL Server に接続したいので「データベース」を選ぶ。

VS2013_30_minuits_005_mid_640

<fig.5 : 「データソース構成ウィザード」で「データソースの種類を選択」をする>

次に「データベースモデルの選択」をする。「データソースの種類を選択」で「データベース」を選んだ場合は「データセット」しか選択肢がない。

VS2013_30_minuits_006_mid_640

<fig.6 : 「データソース構成ウィザード」で「データベースモデルの選択」をする>

次に「データ接続の選択」になるが、もし Visual Studio で一度でもデータ接続を作ったことがあれば、作ったことのあるデータ接続の名前が表示されており選択できるようになっている。これを使ってもいいし、あるいは利用できるデータ接続が表示されない場合は「新しい接続」ボタンをクリックしてデータ接続を作成する。

VS2013_30_minuits_007_mid_640

<fig.7 : 「データソース構成ウィザード」で「データ接続の選択」をする>

「データ接続の選択」で「新しい接続」をクリックすると「接続の追加」ウィンドウが表示される。デフォルトで「データソース」が Microsoft SQL Server (SqlClient) になっていることを確認し、「サーバー名」のドロップダウンリストボックスをクリックすると、その環境で利用することができる SQL Server の一覧が表示される。なお「サーバーへのログオン」はデフォルトで「Windows 認証を使用する」となっている。これはActive Directory のユーザー認証を使って SQL Server にログオンする方法で、SQL Server への接続にいちいち ID やパスワードを要求されず、ユーザー管理を Active Directory で一元管理できる方法で「統合 Windows 認証」などと呼ばれることもある。もう一方の「SQL Server 認証」は認証を SQL Server で行う方法で、Active Directory を使わない環境などではこちらを利用することになる。ユーザー認証は一元管理することが望ましいので、推奨されるのは「Windws 認証」だ。

VS2013_30_minuits_008

<fig.8 : 「データソース構成ウィザード」で「接続の追加」をする>

「サーバー名」を選択できたらグレーアウトしていた「データベースへの接続」項目を設定することができる。「データベース名の選択または入力」のドロップダウンリストボックスで、対象の SQL Server の利用できるデータベース名が一覧で表示されるので、接続したいデータベース名を選択する。

VS2013_30_minuits_009

<fig.9 : 「データソース構成ウィザード」で「接続の追加」をし「データベースへの接続」を設定する>

「データベースへの接続」が設定できたら念のため「テスト接続」のボタンをクリックして SQL Server に接続できることを確認しよう。「テスト接続に成功しました。」のメッセージウインドウが表示されればいい。

VS2013_30_minuits_010

<fig.10 : 「データソース構成ウィザード」で「テスト接続」をしテスト接続が成功したメッセージ>

次に進むと「データ接続の選択」に戻り、「アプリケーションがデータベースへの接続に使用するデータ接続」に新たに作成されたデータ接続が表示されている。この名称は、コンピュータ名+SQL Server インスタンス名+データベース名のように付けられる。

VS2013_30_minuits_011_mid_640

<fig.11 : 「データソース構成ウィザード」で「テスト接続」をしテスト接続が成功したメッセージ>

ここまででデータベースへの接続文字列が自動的に生成している。これを確認するには「アプリケーションに保存する接続文字列(詳細を参照するために展開」を展開する。

VS2013_30_minuits_012_mid_640

<fig.12 : 「データソース構成ウィザード」でアプリケーションに保存する接続文字列を確認する>

この接続文字列を直接編集することはないが、Visual Studio 2013 のデータソースウィザードを使わず手作業でデータベースの接続を構成する場合には参考になる。

次にすすむと「接続文字列をアプリケーション構成ファイルに保存する」のメッセージが表示される。接続を保存する名前が自動的につけられており、特に必要がなければ変更する必要はない。

VS2013_30_minuits_013_mid_640

<fig.13 : 「データソース構成ウィザード」で接続文字列をアプリケーション構成ファイルに保存する>

データベースへの接続文字列が保存されたら、次はこのフォームに接続するテーブルやビュー、ストアドプロシージャなどを選択する。接続したいテーブルやビュー、実行したいストアドプロシージャなどをチェックボックスで選択して「完了」をクリックする。これでデータソース構成ウィザードは終了だ。

VS2013_30_minuits_014_mid_640

<fig.14 : 「データソース構成ウィザード」で接続したいテーブルやビュー、ストアドプロシージャなどを選択する>

データソース構成ウィザードを終了すると Visual Studio 2013 の開発画面に戻る。展開された左のタブ「データソース」にデータソース構成ウィザードで構成したデータセットと接続するテーブル名が表示されている。テーブル名を展開するとフィールドが確認できる。

このテーブルの内容をフォームに表示し、データを編集できるようにするには、ただ一つの操作だけ、テーブル名をフォームにドラッグするだけだ。

VS2013_30_minuits_016_mid_640

<fig.15 : 「データソース」タブのテーブル名「生徒」をフォームにドラッグしてデータグリッドビューなどを生成した>

「データソース」タブのテーブル名「生徒」をフォームにドラッグすると、生徒テーブルのフィールド名を項目とする表形式の「データグリッドビュー」が生成する。またフォームの上部には、データの移動や保存、削除などを操作するためのメニューバーのような「バイディングナビゲーター」もできる。それ以外にもフォーム上の形には現れないが、SQL Server とデータをやりとりするための概念的なオブジェクト「データセット」や「バインディングソース」、「テーブルアダプター」、「テーブルアダプターマネージャー」、そして「バインディングナビゲーター」が自動的に生成する。これら概念的なオブジェクトはデータを操作するプログラムで使われるが、テーブルのデータに単純に接続するだけのアプリケーションでいいなら、特に詳細を知る必要はない。

このままではテーブルのフィールドが一覧できないので、フォームとデータグリッドビューを横に大きくし、フィールドの幅を整えるなどの調整をする。

VS2013_30_minuits_017_mid_640

<fig.16 : デザインビューでフォームとデータグリッドビューの大きさ、フィールドの幅を調節する>

ビルドしてアプリケーションを実行すると、SQL Server からデータを取得し、データグリッドビューに表示される。

VS2013_30_minuits_018

<fig.17 : ビルドしてアプリケーションを実行する>

このように手順を説明すると手間がかかるように見えてしまうが、実際はウィザードを画面にしたがって進めるだけなので拍子抜けするほど簡単だ。これまでデータベースアプリケーションの作成に苦戦した人には、目から鱗が落ちる開発プロセスだろう。

簡単な Windows Form アプリケーションは作ることができるが、データベース接続は難しい、と思って諦めていた人には絶好のチャンスが訪れた。そう思って、ぜひ Visual Studio 2013 と SQL Server を使ってデータベースアプリケーションのプログラミングにチャレンジしてしてほしい。

<前の記事>
「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(1) – テーブル接続一対一の一般的な業務アプリケーションは30秒でできる。」

<次の記事>
片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(3) – 「検索条件ビルダー」を使ってキーワードによる選択クエリをノンコードで実装する

フォロー

新しい投稿をメールで受信しましょう。

現在1,419人フォロワーがいます。