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

InfoPath & SQL Server !

Archive for 2月 2016

アドミンティーチャーズの第二回ラボワークは切手大の小さい Arduino「Digispark」を使った実験をします。

leave a comment »

3月5日(土)、兵庫県神戸市中央区、三ノ宮駅前の神戸市勤労会館でアドミンティーチャーズのラボワークの第二回目を実施します。今回のテーマは Digispark という「切手大の小さい Arduino」です。Digispark にもいくつかの異なるモデルがありますが、今回は最も一般的な 2種類のモデルを用意します。

アドミンティーチャーズ Web「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」

ひとつはむき出しの USB コネクタがあるもので、直接パソコンの USB ジャックに挿して使います。

P1110931_clip_640_480

もうひとつはマイクロ USB コネクタがついているもので、USB ケーブルでコンピュータにつなぎます。

P1110930_clip_640_480

会場の都合で定員が 12 名です。お早めにお申し込みください。

アドミンティーチャーズ Web「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」
https://adminteachers.wordpress.com/2016/02/27/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw02-digispark-%e5%88%87%e6%89%8b%e5%a4%a7%e3%81%ae%e5%b0%8f%e3%81%95%e3%81%84-arduino-%e3%82%92%e4%bd%bf%e3%81%86/

広告

Funduino の Arduino NANO 用インタフェースシールドを使う

leave a comment »

Funduino は Arduino 互換機や関連商品を開発、販売しているメーカーらしい。ドイツの Funduino.de のオフィシャルサイトがある。

http://funduino.de/

funduino.de_Web_mid_640

ちなみにアメリカのドメイン funduino.com は、おそらくドメイン失効でドメインセラーに乗っ取られてしまっている。

http://funduino.com/

funduino.com_Web_DomainSeller_mid_640

Arduino NANO は USB – シリアル変換モジュールを内蔵した Arduino で、コンピュータでスケッチを書き、USB ケーブルで接続してプログラムを送り込むことができるマイコンボードだ。使い方としては Arduino で現在最も流行している Arduino UNO と同じ感覚で使うことができ、Arduino UNO よりずいぶん小型である。この程度の大きさなら、邪魔なピンを外してしまい、そのまま機器に組み込んでもいいだろう。

P1110873_clip_640_480

Fig.1 Arduino NANO 表側

P1110874_clip_640_480

Fig.2 Arduino NANO 裏側

P1110929_clip_640_480

Fig.3 Arduino NANO と平成20年の 500円玉と 10円玉

P1110882_clip_640_480

Fig.4 Funduino の Arduino NANO 用シールド 表側

P1110888_clip_640_480

Fig.5 Funduino の Arduino NANO 用シールド 裏側

Arduino NANO は機器に組み込みことを想定した Arduino だが、I/O ピンが下向きにしか出ていないのでプロトタイピングには不便だ。そこでこの Funduino の Arduino NANO 用シールドを使ってプロトタイピングをしやすくする。このシールドは Arduino NANO の I/O ピン上向きに並べ、それぞれの I/O ピンの横に +VCC 電源と GND グランドを並べている。また AC アダプタジャックがあり、AC 電源を供給して動かすことができる。

Arduino NANO は FunduinoNANO 用シールドの上部ソケットに差し込む。

P1110897_clip_640

Fig.6 Arduino NANO を Funduino Arduino NANO 用シールドに挿す

P1110902_clip_640_480

Fig.7 Arduino NANO を Funduino Arduino NANO 用シールドに挿した

Arduino NANO を Funduino Arduino NANO 用シールドに挿すと、AC アダプターから電源を共有して Arduino NANO を動かすことができる。スケッチを送り込むときは Arduino NANO の USB コネクタを使う。

P1110904_mid_640_480

Fig.8 Funduino の Arduino NANO シールドに AC 電源を供給して Arduino NANO を動かす

P1110903_mid_640_480

Fig.9 Funduino の Arduino NANO シールドに取り付けた Arduino NANO にパソコンからスケッチを入れる

またこのシールドは、Arduino UNO とピン互換の穴があり、ピンを取り付ければ Arduino UNO のシールドを使うこともできそうだ。ただしこのシールドは、上に Arduino NANO が載るため、上から Arduino UNO 用のシールドをかぶせるにはピンの高さが足りないだろう。ピンを二重に載せるか長いピンを手に入れて取り付ける、あるいはシールドを通常とは逆に下に取り付けることなどを考えなければならないだろう。

Arduino NANO でプロトタイピングをするには便利なアイテムだ。

Written by Yoshio Matsumoto

2016年2月27日 at 12:18 PM

100 円均一ショップで買った乾電池チェッカーで Netduino 2 と Arduino UNO の PWM パルス幅変調アナログ出力をチェックする

leave a comment »

100 円均一ショップには電子工作で使えそうなものがたくさんある。電子パーツとして買うとそれなりに値段がするものが手軽に手に入る。100 円均一ショップで売っていたアナログメーター式の乾電池チェッカーを使って Netduino 2 と Arduino UNO の PWM パルス幅変調アナログ出力をチェックする実験をしてみた。

Netduino 2 や Arduino UNO のアナログ出力は PWM パルス幅変調 Pulse Width Modulation であり、実際に出力電圧が変化しているのではない。5V の電圧を出力するにあたってパルスを使い、パルス幅の 5V と 0V の比を変化させることで平均電圧、という表現は正確ではないかもしれないが、疑似的に電圧を変化させるのと同等の効果を得ているのだ。ちなみに Arduino Due には D/A 変換回路が組み込まれており、本物のアナログ出力を行うことができるようだ。

P1110829_clip_640_480

まず本体を分解する。ニッパーとペンチで角から。分解すると内部はアナログメーターと 4 本の抵抗で構成されていることがわかる。はんだごてではんだを溶かしてばらばらにする。

P1110830_mid_640_480

P1110831_clip_640_480

念のため元の回路とテスターで測った抵抗の実測値をメモしておく。

P1110832_mid_640_480

このアナログメーターで、5V の出力値を MAX で表示できるようにすればいい。そこでいくらの抵抗をつなげばよいかをボリュームで調節して決める。ボリュームの値は 800 オームから 1k オームにすればよいことがわかった。

P1110833_mid_640_480

手元に適当な値の抵抗がなかったので、510 オームの抵抗を 2本直列につなぎ、1.02 kオームにして使うことにした。回路はとりあえず空中配線で。

P1110834_mid_640_480

Netduino 2 で PWM によるアナログ出力をするには、C# では次のようなコードになる。パルス幅を連続的に変化し、フェードイン、フェードアウトの効果を得る出力だ。

———————————————————————————

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace Netduino_Analog_Out_Blink
{
    public class Program
    {
        public static void Main()
        {
            PWM myPWM = new PWM(SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D9,100,0,false);
            double myAdd = 0.001;

            myPWM.Start();

            while(true)
            {
                myPWM.DutyCycle = myPWM.DutyCycle + myAdd;
                Thread.Sleep(2);

                if(myPWM.DutyCycle > 0.999)
                {
                    myAdd = myAdd * (-1);
                }
                if(myPWM.DutyCycle < 0.001)
                {
                    myAdd = myAdd * (-1);
                }
            }
        }
    }
}

———————————————————————————

これを電池チェッカーのメーターで受け取ると、メーターの針がゆっくりと右へ左へ振れることがわかる。

P1110837_mid_640_480

Arduino UNO で PWM によるアナログ出力をするには、次のようなスケッチになる。

———————————————————————————

int bri = 0;
int myAdd = 5;

void setup()
{
  pinMode(9, OUTPUT);
}

void loop()
{
  analogWrite(9, bri);

  bri = bri + myAdd;

  if (bri == 0 || bri == 255)
  {
    myAdd = myAdd * (-1);
  }
  delay(40);
}

———————————————————————————

P1110835_mid_640_480

もはや角型 9V の 006P 乾電池は積層電池ではないのか – Surface Pro 3専用 Surface ペンで使うために 006P 乾電池を分解して AAAA 単6乾電池を取り出すとプラスとマイナスが逆形状だった

with one comment

昔は、で始まることが多くなり、歳をとったことと時代の変化を感じる。角型 9V の 006P 乾電池は「積層乾電池」と呼ばれた。もともとソニーがトランジスタラジオの乾電池として開発したようだが、ギタリストにとってはエレキギターのエフェクターに使われる電池として必需品だった。006P というコードがこの電池の形状をあらわすもののようで、9V という高電圧を得るために内部に 1.5V の起電力を持つ乾電池を複数積み重ねた構造を持っていた。以前は横にスライスしたように、薄いペレット状、たとえるならタブレット型のガムのような形のものを 6 個積み上げた構造だった。子供の頃、乾電池を分解して中の構造を見ることをよくやったが、積層乾電池も分解して中を見て感心した覚えがある。

この 006P 乾電池だが、今は多くのものが単6型、AAAA 型の筒形乾電池を 6個たばねた内部構造をしているようだ。これだと「積層電池」というよりは「連結電池」「束ねた電池」と言いたいところだが、複数の電池を組み合わせているのでやはり「積層電池」と言うらしい。

電池の種類や構造をあらわす形式番号では、単6型乾電池6本積層タイプはマンガンは 6R61 、アルカリは 6LR61 とあらわし、角型一体積層タイプは 6F22 や 6LF22 とあらわすようだ。

一方、AAAA 形式の乾電池は「単6型」と呼ばれるが、これは ANSI 規格、米国国家規格協会 American National Standards Institute 規格の筒形乾電池であり、日本には規格がないようだ。そのためか、Surface Pro の専用 Surface ペンで使われるが、一般に入手が困難で値段も安くない。

Amazon_SurfacePen_mid_640

Amazon_AAAA_単6電池_mid_640

すでに何人もの人が単6電池を手に入れるために、006P 9V 積層電池を分解していることをネットでも公開しており、実際そのようなことができるかどうかやってみた。

念のため、乾電池の分解は自己責任であり、加熱、発火の危険もあるので安易にまねをするのはやめてほしい。とりわけアルカリ電池は内部抵抗が小さいのでショートしたときに過大な電流が流れるためたいへん危険だ。

P1110797_mid_640_480

買ってきたのはこれ。ダイソーで 100 円のアルカリ 006P 積層乾電池。形式番号は 6LR61 とあるので単6電池で構成されていると判断できる。

実際に近寄ってみると、縦に筋が入っていて内部が想像できる。

P1110799_clip_640_480

ペンチやニッパーで分解していく。角から少しずつ。巻いてあるラベルも内部もプラスチック製なので分解しやすい。子供の頃に分解した 006P 積層乾電池は金属製のパッケージだったが。

P1110800_clip_640_480

P1110803_mid_640_480

P1110805_mid_640_480

P1110806_mid_640_480

P1110807_clip_640_480

取り出すとこのように 6 本の単6型乾電池が連結した構造になっていた。ここで気を付けてみておけばよかったのだが、分解することしか頭になかったので、ペンチとニッパーを使って連結金具を全部きれいに取り外してしまった。

P1110809_clip_640_480

金具を取り外してばらばらにして並べてはじめて気が付いた。電池の両端のうち、かすかに出っ張っているのがマイナス極で、プラス極が平らになっている。見た目にはプラスとマイナスが逆のようになっている。

P1110810_clip_640_480

実際の単6電池と並べるとこんなかんじ。実際の単6電池のプラス極はかなり出っ張っていることがわかる。試しにこのまま Surface ペンに入れてみたが、やはりまったく使えない。プラス側に出っ張りをつけなければいけない。もし電池を分解するときに接続金具を一部残したままにしておけば、それが出っ張りになったのだが、後の祭りだ。

そこではんだ付けをしてはんだの出っ張りをつけた。だがこのように乾電池に直接はんだづけをすることは本当はしてはいけない。表面を加熱しただけでははんだはきちんとつかないので、かなりじっくりとはんだごてをあてて加熱することになる。そうすると乾電池の内部構造を熱で傷めることになるからだ。

P1110811_clip_640_480

はんだでプラス極を盛り上げると、Surface ペンでちゃんと使えるようになった。

P1110812_mid_640_480

単4乾電池、AAA の大きさは直径 10.5 mm、高さ 44.5 mm。単6乾電池、AAAA の大きさは直径 8.0 mm、高さ 42.0 mm。このサイズならマイコンボードを組み込むときの電源に使うのもよさそうだ。今回は Surface ペンに使うためにはんだでプラス極を盛り上げるという荒っぽいことをしたが、写真でもわかるようにプラス極側の表面シールが変色してしまっている。かなりの熱を加えた結果だ。このようなはんだ付けをせずに利用するには、分解するときに接続金具を残しておくか、あるいは器具の電池ボックス側でプラス極の形状を工夫するなどが必要だろう。

P1110815_clip_640_480

重ねて言うが、乾電池の分解は自己責任であり、加熱、発火の危険もあるので安易にまねをするのはやめてほしい。とりわけアルカリ電池は内部抵抗が小さいのでショートしたときに過大な電流が流れるためたいへん危険だ。またはんだ付けなどをすると、電池の内部構造が傷みメーカーの保証が得られないどころか火災の原因になる可能性もある。あくまでも知的好奇心を満足させるための実験だ、と理解してほしい。

(追記)この記事には追加の新しい記事があります。

角型 9V の 006P 乾電池から再び Surface Pro 3専用 Surface ペンで使うための AAAA 単6乾電池を取り出す。今回ははんだ付けしなくてもいいように考えた。ニッパーとペンチだけで作業完了。
https://matsumotoyoshio.wordpress.com/2017/05/01/%e8%a7%92%e5%9e%8b-9v-%e3%81%ae-006p-%e4%b9%be%e9%9b%bb%e6%b1%a0%e3%81%8b%e3%82%89%e5%86%8d%e3%81%b3-surface-pro-3%e5%b0%82%e7%94%a8-surface-%e3%83%9a%e3%83%b3%e3%81%a7%e4%bd%bf%e3%81%86%e3%81%9f/

 

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(5) – 生徒基本情報のデータを整理してデータベースに保存する下準備をする

with 5 comments

1.既存のデータを集める

VisualStudio_成績処理_054_mid_640

生徒基本情報のようなデータは、成績処理にデータベースを使っていない学校でも、多くはエクセルのような表計算で管理されているだろう。まず校内にある生徒データを集めてエクセルでまとめる。エクセルはこのようなデータ型が決まっていないデータを集めて整理するには使いやすい。

この例でわかるように、表計算のデータはデータとしてそのまま使えない場合がある。よくあるのは、数字に見えるが実際は日本語の2バイトフォント、いわゆる全角文字になっていること、アルファベットも全角と半角が混在していること、よけいな空白が混じっていること、などだ。上の表計算データの例では、氏名が姓と名に分かれておらず、また空白が入っていること、氏名の後ろに何らかの意味を持った記号「・」があること、などだ。

2.氏名データを姓と名に分ける

VisualStudio_成績処理_055_mid_640

どうしても手作業が発生するのは、氏名データから姓と名を分ける作業だ。ここではエクセルの関数を使って氏名のデータから全角と半角の空白と、これも全角と半角の「・」を取り除き、前から2文字を仮に姓だとして、前から3文字以降を名だとして切り取っている。エクセルの表計算上の関数は次のようになる。

「姓名の空白をとる」関数の例 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2," ","")," ",""),"・",""),"・","")
「姓を切り取る」関数の例 =LEFT(H2,2)
「名を切り取る」関数 =MID(H2,3,10)

また数字のようで日本語であるかもしれない「学年」や「出席番号」を数字にし、性別からよけいな空白を取り除く、クラスを半角にする、などの処理をする。

「学年を数字にする」関数の例 =VALUE(A2)
「出席番号を数字にする」関数の例 =VALUE(D2)
「性別から空白を取る」関数の例 =SUBSTITUTE(SUBSTITUTE(F2," ","")," ","")
「クラスを半角にする」関数の例 =ASC(C2)

3.テーブル構造の見直しとテーブルを生成する SQL 文の変更

こうして既存のデータを整理すると、生徒基本情報データとしてあったほうが良いフィールドに気づく。ここでは「学科名」と「本科か専修コースか」のデータが必要だと考えた。

本校では、クラス名を学科名からつけている。建築科はクラス名に「A」をつけており、1年生は「A1」、2年生は「A2」といったものだ。したがって生徒が所属するクラス名から学科がわかるが、学科名はフィールドとして持っておいたほうが様々な処理がしやすいと考えた。また本校は一般の高校生が学ぶ「本科」に加えて、いちど高等学校を卒業した社会人が学ぶ「専修コース」があるので、それもデータとして加えたい。

・gakka 学科名 ユニコード可変長文字列型(4)
・honsen クラス名 ユニコード可変長文字列型(2)

「gakka」フィールドには「建築」、「機械」、「電気」、「情報技術」のデータを記録することに、「honsen」フィールドには「本科」または「専修」を記録することにする。

テーブル構造を変えるには、最初に作ったテーブル作成の SQL 文を変更して行う。メモ帳などのテキストファイルにしておいた元の SQL 文を次のように変更する。

VisualStudio_成績処理_056_mid_640

SQL 文のうち、[gakka] で始まる行と [honsen] で始まる行を追加した。

4.テーブルの削除とテーブル生成の SQL 文の実行

VisualStudio_成績処理_057_mid_640

Visual Studio の SQL Server オブジェクトエクスプローラーで、作った dbo.Seito テーブルを削除する。削除はテーブル名をポイントして右クリックし「削除」をする。

VisualStudio_成績処理_058_mid_640

テーブルを削除すると、テーブルにデータがあった場合そのデータがすべてなくなってしまうので、たいへん危険な操作になる。そこで「データベース更新のプレビュー」で、ほんとうに削除して良いか聞かれる。よければ「データベースの更新」をクリックする。

VisualStudio_成績処理_060_mid_640

テーブルがなくなった。

VisualStudio_成績処理_061_mid_640

SQL Server オブジェクトエクスプローラーで「テーブル」フォルダを右クリックし、もういちど「新しいテーブルの追加」を行う。

VisualStudio_成績処理_062_mid_640

ここでデザインビューを操作するのではなく、デザインビューの下の「T-SQL」に先のメモ帳で作り直した SQL 文を貼り付ける。すると上のデザインビューにも SQL 文に相当するデザインが表示される。

VisualStudio_成績処理_063_mid_640

テーブルのデザインビューの左上にある上向き矢印「更新」でデータベースを更新する。

VisualStudio_成績処理_064_mid_640

「データベース更新のプレビュー」で「データベースの更新」ボタンをクリックして更新を実行する。

VisualStudio_成績処理_066_mid_640

下部の「データツール操作」で更新が正常に完了したことがわかる。

VisualStudio_成績処理_067_mid_640

SQL Server オブジェクトエクスプローラーで生成したテーブルを確認する。

次回は整理したデータをテーブルに保存する作業を行う。

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(4) – Microsoft Visual Studio 2015 によるテーブル作成

leave a comment »

1.テーブルの作成

VisualStudio_成績処理_040_mid_640

前回までに Visual Studio の新しいプロジェクトを開始し、SQL Server データベースファイルを作成した。今回は SQL Server データベースファイルにテーブルを作成する。

Visual Studio の「SQL Server オブジェクトエクスプローラー」で SQL Server データベースファイルを展開すると「テーブル」が表示されるが、データベースファイルを作成した直後にはユーザーテーブルがなく、「システムテーブル」というフォルダだけが表示されている。これは SQL Server データベースファイル自体が利用するテーブルで、通常は中身を見ることがない。ユーザーが利用するテーブルを作成するには、「テーブル」フォルダを右クリックし「新しいテーブルの追加」を行う。

VisualStudio_成績処理_041_mid_640

Visual Studio の「SQL Server オブジェクトエクスプローラー」で「テーブル」フォルダを右クリックし「新しいテーブルの追加」を行うと、このようにテーブルのデザインビューが表示される。画面の左上にはデフォルトで「名前」、「データ型」、「Nullを許容」、「規定」の要素がある。これらを設定しながらテーブルの構造を決めていく。

2.生徒基本情報を保存するテーブルを作成する

まず生徒の氏名など基本情報を保存するテーブルを作成する。成績処理に必要な項目は何かを考えながらフィールドを決めていく。ここでは次のようなフィールドを作成することにした。

・seitoID 生徒番号 文字列型(6) 主キー
・sei 姓 ユニコード可変長文字列型(50)
・mei 名 ユニコード可変長文字列型(50)
・nen 学年 整数型
・class クラス名 1バイト可変長文字列型(3)
・num 出席番号 整数型
・sex 性別 ユニコード文字型
・birthday 生年月日 日付型
・nyunen 入学年度 整数型
・state 在籍状態 整数型

3.フィールド定義の考え方

ひとりの生徒に対して一意の「生徒番号」を与え、生徒個人にひとつの要素をフィールドとして用意する。姓、名、などだ。性別、生年月日、入学年度なども生徒ごとに決まった不変の値をとる。

学年、クラス、出席番号は、年度ごとに値が変わるフィールドになる。これは別テーブルにして年度ごとのデータを集積しなければならないが、生徒データにも現在の状態を記録することが望ましい。学年やクラスでデータを選択することが多いからだ。同様に、場合によっては姓、名も在学中に変わるケースがある。これも別テーブルで管理しなければならないが、現在の姓、名は生徒基本上でわかるようにしておきたい。これは厳密には「正規化」の概念に反することになる。データベース関係の書籍にはテーブル構造を考えるときに「正規化」をしなさい、と書かれているが、硬直的に正規化すると実際のデータ運用上クエリが複雑になるなど問題がおこる。このあたりは、ある程度データベース運用の経験を積むとわかってくる。「正規化」の考え方を理解した上で、実際にどこまで正規化をするかは、どのような処理をしたいのかを念頭におきながら設計していく。

4.データの型の考え方

次にデータの「型」をどうするかを考える。数値なのか文字なのか、コード化するかしないかは難しい選択だ。データベースは表計算ソフトなどでの集計と違い、それぞれのフィールドはデータの「型」を決めなけらばならない。

合計や平均を計算する必要があるデータは数値とする。たとえば出席日数や欠席時間数、成績といった項目だ。だが数字に見えても文字列型として処理することが望ましい場合もある。ゼロで始まるような数字、たとえば電話番号は数値型としては最初のゼロを記録することができなくなるため文字列型にする。学籍番号もゼロで始まる番号が与えられる可能性があれば、文字列型にする。

コード化するかどうかも選択が難しい。たとえば性別をコード化し、男は「1」、女は「2」とすることは考えがちだが、性別は多くの帳票で表示されるため、性別をコード化すると多くのクエリでテーブルの追加または表示のためのコードが必要となってしまう。漢字ならデータは2バイト、コードなら1バイトとデータ量は異なるが、「男」、「女」とデータを作っておくことが運用上望ましい。正確に分類集計したいとき、コード化しなければデータの統一性が失われる危険がある場合はコード化する。この例では「在籍状態」をコード化することにした。在籍状態は、通常を「1」、休学を「2」、転出を「3」、退学を「4」、卒業を「5」のように決める。コード化することにより、成績処理などでは在籍状態=1、在籍生徒数をカウントするときは在籍状態>=2、卒業生を集計するときは在籍状態<=5のようにして選択できる。ここを日本語で管理すると、「転出」を「転学」と記録してしまうなどデータの統一性が失われてしまう。

5.テーブルの作成

VisualStudio_成績処理_042_mid_640

テーブルのデザインビューで、既定で最初に「Id」という名前、データ型が「int」のフィールドがあり、そこには鍵のアイコンがついている。これは「主キー」である印だ。これを、フィールド名を「seitoID」に、データ型を「char(6)」に変更する。そして続くフィールドも設定していく。

VisualStudio_成績処理_043_mid_640

フィールドの名前、データ型などを決めたら、最後に「Nullを許容」のチェックを全部外そう。

VisualStudio_成績処理_044_mid_640

「Null」を許容にしておくと、データを登録しなくてもよいフィールドとなり、処理のときに例外が発生する可能性がある。もし何らかの事情で、一時的に「Null」データのまま処理したいケースが出てくる場合はチェックしたままにするが、後のことを考えると「Null」は許容しない方がよいだろう。

6.テーブル生成の SQL 文

フィールドを決めていくと、デザインビューの下の「T-SQL」のところに、CREATE TABLE ではじまるテーブルを定義する SQL 文ができあがっていくのがわかる。データベースにテーブルを作成する操作はこの SQL 文によってされるが、このようなテーブルの構造や構成を定義するために用いられる SQL 文を DDL(Data Definition Language)といい、データを操作する SQL 文である DML(Data Manipulation Language)、データへのアクセス権限などを制御する SQL 文であるDCL(Data Control Language)と区別される。

VisualStudio_成績処理_045_mid_640

SQL 文では CREATE TABLE [dbo].[Table] となっていることがわかる。これは「Table」という名前のテーブルを生成する、という意味だ。テーブル名は「Seito」としたいので、SQL 文の最初の行を CREATE TABLE [dbo].[Seito] のように変更する。

VisualStudio_成績処理_046_mid_640

SQL 文の最初の行を CREATE TABLE [dbo].[Seito] に変更した。

VisualStudio_成績処理_047_mid_640

7.SQL 文の保存

作った SQL 文は実行する前に選択して右クリックで「コピー」すると保存することができる。後でテーブル構造を見直したいときなど、SQL 文をコピーしておくと作業のやりなおしがしやすい。

VisualStudio_成績処理_047_mid_640

コピーした SQL 文はメモ帳などに貼り付けて一括管理しておくといい。

VisualStudio_成績処理_048_mid_640

8.データベースの更新でテーブルを作成する

VisualStudio_成績処理_049_mid_640

テーブル構造が決定したら、テーブルのデザインビューの上部にある上向きの矢印「更新」でデータベースの更新をする。

VisualStudio_成績処理_050_mid_640

「データベース更新のプレビュー」ウィンドウが表示されるので「データベースの更新」ボタンをクリックして更新する。これでデータベースに SQL 文が実行され、テーブルが生成する。このとき「スクリプトの生成」ボタンをクリックすると、テーブル生成の DDL 文、CREATE TABLE 文をファイルに保存することもできる。

VisualStudio_成績処理_052_mid_640

データベースの更新が正常に実行できたら、テーブルのデザインビューの下にある「データツール操作」ウィンドウに更新の手順が示される。

VisualStudio_成績処理_053_mid_640

テーブルができたら「SQL Server オブジェクトエクスプローラー」で確認する。ビューを最新の状態に更新すると、「テーブル」フォルダの配下に「dbo.Seito」テーブルができており、テーブル名を展開するとフィールドが列挙される。

次回はこのテーブルに生徒基本情報を保存しよう。

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(3) – Microsoft Visual Studio 2015 による SQL Server オブジェクトの管理とテーブルの表示

leave a comment »

1.SQL Server オブジェクトの管理

VisualStudio_成績処理_035_mid_640

前回は Visual Studio で新しいプロジェクトを開始し、ローカルコンピュータに Microsoft SQL Server データベースファイルを作成してデータ接続を構成した。

作成した Microsoft SQL Server データベースファイルには、実はまだテーブルやビューなど何も存在しない。テーブルやビューなどの作成も Visual Studio で開発することができる。Visual Studio で接続した SQL Server を見るには「SQL Server オブジェクトエクスプローラー」を使う。これはデフォルトで Visual Studio の左側のタブに表示されていないので、メニューの「表示」から「SQL Server オブジェクトエクスプローラー」をクリックして表示する。

VisualStudio_成績処理_036_mid_640

SQL Server オブジェクトエクスプローラーを表示すると左のペインに表示されるが、うっかり閉じるとまたメニューから開かなければならない。このSQL Server オブジェクトエクスプローラーは頻繁に使うので、閉じても左のタブからワンクリックで開くことができるようにしたい。

VisualStudio_成績処理_037_mid_640

SQL Server オブジェクトエクスプローラーをタブからワンクリックで開くことができるようにするには、「SQL Server オブジェクトエクスプローラー」のメニューバーで下向きの三角アイコンをクリックし「自動的に隠す」オプションをクリックしておくといい。

VisualStudio_成績処理_038_mid_640

SQL Server オブジェクトエクスプローラーを「自動的に隠す」オプションにし、左側のタブに固定した。

2.テーブルの表示

VisualStudio_成績処理_039_mid_640

ふたたびSQL Server オブジェクトエクスプローラーを表示すると「SQL Server」の項目がある。左の三角アイコンをクリックすると要素が展開される。「テーブル」まで展開すると、そこには「システムテーブル」のフォルダだけがあり、そのほかのテーブルはない。「システムテーブル」は SQL Server データベースファイル自体の設定に関するデータが保存されており、開くことは通常ない。

次回から、この SQL Server オブジェクトエクスプローラーを使ってテーブルやビューなどを作成する。