忍者ブログ
気ままな一人暮らしの、ささやかな日常
美術鑑賞からプログラムのコードまで、思いつくままに思いついた事を書いています。
[4888]  [4887]  [4886]  [4885]  [4884]  [4883]  [4882]  [4881]  [4880]  [4878]  [4877
ざっくざく > パソコン > Access講座受講メモ:前編
Access講座
こんにちは、和美です。

仕事でなぜかAccessを使わされる羽目になったものの、全く理解が追いついていません。
という話を臨時上司にしたら、就業時間外にAccessの講座を開いてもらうことになりました。

そんな講座のまとめ記事、前後編のうちの前編です。
今回はAccessの基礎知識編の初級 …… だと思います。

【 目次 】

  1. 初めに
  2. データ型指定
  3. オートナンバーと主キー
  4. csv
  5. ODBC
  6. MS-JET
  7. ADOとDAO
  8. 最後に

1. 初めに

前提条件として、和美の知識はExcel、Java、SQL、全てが中途半端に曖昧です。
おかしいな、プログラマーって未経験から三ヶ月で一人前になれると聞いたのに、もう一年半経ってしまいましたよ。
なお、あちこちに話が飛びます。

2. データ型指定

Accessは、というかAccessに限らず、大抵のデータベースは入力する内容 = データ型を指定する必要があります。
練習のために作ったデータベースでは、オートナンバー、数値、日付 / 時刻、短いテキストの四種類しか使っていませんでした。
オートナンバーは後述。
Yes - No型は使ったことがありませんが、『 短いテキスト型 』 よりサイズが小さく、日付・時刻型は数値型よりサイズが小さいそうです。
Accessのデータは重くなりがちなので、なるべく適切な型を指定することでサイズの軽減を図るそう。
後で加工する時に色々便利ですしね。
データベースのSQLiteエスキューライトのように、データ型を指定しても型にあてはまらないデータを挿入できるシステムは少なく、基本的には型と一致していないデータは入力できないので、データの誤入力を防げるという利点もあります。
実例を挙げると、『 数値 』 と指定したところに文字は入れられず、エラーとなります。

3. オートナンバーと主キー

臨時上司が作った、仕事で使っているAccessVBAのコードを見ました。
Excelと同じように、Accessでも簡易プログラミングソフト『 VBA 』 が附属しています。
VBAとマクロはよく混同されますが、VBAで組んだプログラムをマクロと呼ぶそうです。
Accessにある 『 モジュール 』 というのもマクロと同じVBAの一種で、式ビルダーは関数の一種とのこと。
…… Accessでは、VBAとマクロが違うものを指している気もしますが。

Accessなどのデータベースソフトでは、同じ内容のデータを区別するために、主キー( プライマリキー )と呼ばれる数字を設定することが多いです。
参考書などでよく説明に出されるのが社員番号です。
社内に同じ社員番号の人はいないので、番号だけで一つのデータが特定できます。
国民全員に11桁の別々の番号が振られるマイナンバーも同じですね。

なお、小学校や中学校などの出席番号では、「 隣のクラスに同じ番号がいる 」 可能性が高いので、出席番号に学年、組を足した 『 複合主キー 』 という形態になります。
出席番号だけ、学年と組だけ、など二つは同じ人がいても、この三種類が全て同じ番号はいません、という組み合わせです。
例:
行数:学年:組:出席番号:名前:解説
1:1:A:2:岡森 賢  :4行目に同姓同名の別人がいる。
2:1:A:3:永井 美夏 :出席番号以外は1行目と同じ。
3:1:B:2:岡森 賢  :組以外は1行目と同じ。
4:1:B:3:間瀬 陽美 :組以外は2行目と同じ。
5:2:A:2:村田 歩  :学年以外は1行目と同じ。

名前参考:日本人名前自動生成機:樹凱.com様


…… 複合主キーは少ないほうがいいですし、出席番号は毎年変わるので、別の番号を設定することのほうが多いかと思いますが。
前年の組データも保存しておいた方が良いですしね。
上記の例の行数のように、順番なんてどうでもいいけど、とりあえず主キーに設定する時によく使われるのがオートナンバーです。
登録順に自動で採番してくれるので重複はなく、主キーには便利です。

同姓同名なんて滅多にいないのでは、と思われるでしょうが、和美が高校生の時、隣の組に同姓同名の漢字一文字違い( 光士、光志のように漢字も似ている )がいました。
日本語を主キーにしてしまうと、登録時の入力間違い、検索時の変換ミスでデータが存在しない、という事にもなりかねませんし、年金の記録が間違っていてたまにニュースになっています。
アルファベットでも別に構わないと思いますが、上述したデータの型指定では 「 短いデータ型 」 に分類されるため、数字、アルファベット、日本語の中では数字が唯一軽いです。

ですが、Accessでデータをこねくり回す時以外には使わないので、Excelデータなどで加工できるcsvデータには不要です。
なので、Accessからcsvを書き出すマクロには、主キーに設定されている一列目のオートナンバーを除外する、というコードが書かれていました。

AccessにしろExcelにしろ、VBAの勉強に、実際のコードを見てみるのはいいそうですよ。
…… こんなことを書きつつ、まだ該当の臨時上司が作ったAccessVBAコードを見ていなかったので、ようやく見ました。
Excelとは違ってAccessには開発タブがないので探しましたが、すっきりした簡潔なコードで羨ましいです。

4. csv

さらっと書きましたが、知らない人が身近にいたので、ファイル形式:csvの解説もしておきます。
csvとは、メモ帳などでも開けるカンマ( , )区切りのファイル形式で、プログラミングにはよく出てきます。
Comma Separated Value(= カンマ( , )で区切った値 )の略称だそうです。

5. ODBC

Open Database Connectivityオープン・データベース・コネクティビティの略。
コネクティビティはコネクト(接続)の派生で、接続しやすい、のような意味らしいです。

さて、ODBCとは、SQLとAccess、AccessとOracleなど、違うソフトのデータベースを翻訳する機能、ツールの一種だそうです。
似たようなソフトにOracleだとオラクルクライアント、フリーでは A5:SQL Mk-2などがあるそう。
A5:SQL Mk-2は、昨年2019年の九月頃、MySQLと戦っていた時に相談した質問掲示板で紹介されました。

和美は英語が嫌いですが、プログラマーになるには初めに英語を勉強するといい、という笑い話のような提案もあるそうですね。
( 元プログラマーの父には否定されましたが )
たまに英語の意味が分からなくて調べると、英検二級~一級レベルという表記が多いです。

6. MS-JET

『 MS-JET 』 こと 『 Jetデータベースエンジン 』 はAccessの中身だそうです。
Jetだけだと使い辛いので、ソート機能などの機能を付け足したのがAccessになります。
というのはAccess2003までの話で、拡張子が.mdb。
Access2007以降は正式名称 『 Access Database Engine 』 らしいですが、発表当初の 『 ACEエースデータベースエンジン 』 と呼ばれることも多いそうです。
拡張子は.accdb。
単体でも無償配布されているのでAccessがなくても使えるそうですが、よほど詳しい人でもない限りそんな機会はないのでは、と思います。
なお、JetはAccessとは関係のないソフトにも広く使われたそうですが …… 詳しくは知りません。
参考サイト:Accessデータベースエンジン:IT用語辞典 e-Words

7. ADOとDAO

AccessVBAにはデータベースの作成方法として二種類あるそうです。
それがADOとDAO。
DAO:昔からある形式で、上述したODBCを使っています。
MS-JET専用とのこと。
接続方法は、AccessVBA‐DAO‐JET┬Access
                  └ODBC‐SQL
MS-JETからAccessやODBCに分岐するため、作り直す必要が出てくることが多い、Access以外は汎用型のODBCを経由するため遅くなるという難点があるそうです。
ADO:新規で作るなら基本的にこちら。
ソフト間のデータ連携を行える、非リレーショナルデータベースでも使えるOLEという機能を使っているそうです。
非リレーショナルDBデータベースとは、NoSQLとも呼ばれます。
AccessやExcelのような行と列で表形式にできるデータベースをリレーショナルDBと呼び、文章のように形式が決まっていないものが非リレーショナルDB( 非構造化データ )のようです。
代表例はTwitterによるトレンド分析でしょうか。
参考サイト:DBテクノロジーの過去と現在と未来:Data Technology

接続方法は、AccessVBA‐ADO‐OLE┬SQL
                  └Access
OLEまでが共通で、その次は直接他のソフトに繋がるので、作り直しが少ないのが特徴です。

8. 最後に

技術面が足りていない自覚はありましたが、知識面も全く足りていないことがよく分かった初回講座でした。
入社直後、先輩から「 一度で良いから理屈を捏ねくり回した本を読んでおいてほしい 」と三冊の本を勧められたのを思い出します。
( 難易度と時間の都合で、まだ一冊目を読み返している最中ですが ……)

また、Accessの中身を気にしたことがなかったのですが、AccessVBAを書いていると宣言に出てきたり、設定が必要だったり、できることが違ったりと色々あるようです。
使えるソフトなら中身などブラックボックスでいいと思うのですが、世の中そう上手くはいかないようです。
PR
【 この記事へコメント 】
名前
コメントタイトル
URL
本文
削除用パスワード
累計アクセス数
アクセスカウンター
レコメンド
プロフィール
書いている人:七海 和美
紹介:
更新少な目なサイトの1コンテンツだったはずが、独立コンテンツに。
PV数より共感が欲しい。
忍者ブログ [PR]