web/EC業界に強い転職。正社員・派遣求人情報 ウェブタント » Accessでやってみよう https://webtant.net web/IT専門 求人・転職ウェブタント Wed, 27 May 2020 11:49:16 +0000 ja hourly 1 http://wordpress.org/?v=4.3.1 内部結合と外部結合 https://webtant.net/217727 https://webtant.net/217727#comments Thu, 03 Mar 2016 01:00:35 +0000 http://webtant.net/?p=217727 こんにちは、SAWAです。

前回は3つのテーブルを使用し、「内部結合」について説明しました。
今回は、同じく3つのテーブルを使用し、「外部結合」について説明します。

まず、定義です。

●外部結合(OUTER JOIN)
2つのテーブルを結合した際、2つのテーブルの項目の値が同じデータだけでなく、
どちらかのテーブルにだけ値があるデータも抽出する。

●内部結合(INNER JOIN)
2つのテーブルを結合した際、2つのテーブルの項目の値が同じデータのみを抽出する。

次に具体的に見ていきましょう。
前回、作成したクエリ「内部結合」をコピーして、「外部結合テスト」という
クエリを作りましょう。

クエリのコピー方法

作成した「外部結合テスト」をデザインで開き、
「区分明細情報」テーブルを削除します。

テーブルの削除

この状態でクエリを実行しましょう。
すると、下図のように3件のデータが抽出されます。

結果1

内部結合で部署コードをキーとして結合しているので、
「社員番号:4」のレコードは部署コード:04」ですが、
「部署情報」テーブルに「部署コード:04」が無いので抽出されません。

それでは、外部結合を使用し、「社員番号:4」のレコードも抽出するように
クエリを修正しましよう。

①「外部結合テスト」クエリをデザインビューで開きます。

②下図のように、キーを結んでる線の上でダブルクリック。
「結合プロパティ」の画面が開くので、
「2:社員情報の全テーブルと部署情報の同じ~」を選択し、「OK」をクリック。

04

③クエリを実行し、結果を確認する。

05

上の図でも分かるように、内部結合時には抽出されなかった社員番号=4のデータが
表示されており、②の結合プロパティの意味がお分かりになって頂けたかと思います。

経験上ではありますが、外部結合を使うケースとしては以下のような場合があります。
・元となるテーブル(今回で言えば社員情報)のデータを取りこぼさないようにしたい時
・社員番号=4のように、部署名が空白(NULL)で抽出されることを利用して、
 プログラムで空白(NULL)の場合は別の処理をさせたい時。

<ちなみに>
以前に書きましたコラム「クエリ)」のところで出てきたSQLでいいますと、
外部結合は左外部結合(LEFT JOIN)と右外部結合(RIGHT JOIN)があります。
この左・右の定義は、元とするテーブルが左側にあるか、右側にあるかの違いです。
今回使用したクエリを SQLビューで見ると以下のように書かれています。

06

これを以下のように変えても、右側の社員情報テーブルを元にする右外部結合になるので
一緒の結果が得られます。

07

以上で、外部結合の説明とさせていただきます。
次回からは、フォームを使用しての社員情報のメンテナンス画面を作っていきます。

ありがとうございました。

]]>
https://webtant.net/217727/feed 0
複数テーブルを使った結合 https://webtant.net/205399 https://webtant.net/205399#comments Thu, 05 Nov 2015 00:00:56 +0000 http://webtant.net/?p=205399 こんにちは、SAWAです。


申し訳ありません!

今回の内容を進めていただく前に、誤りにきづきましたので、

以下の修正を行っていただけますようお願いしますm(_ _)m

修正1)社員情報テーブルをデザインビューで開き、

    .性別のルックアップ.値集合ソースの修正。

     1;男;2;女=>01;男;02;女

08

修正2)社員情報テーブルを開き、「性別」「所属部署コード」の上1桁に’0′(ゼロ)を付ける。

09

※この修正をしておかないと、今回の内容でデータが抽出できません。すみません。


さて、今回は「社員情報」「区分情報」「区分明細情報」「部署情報」テーブルを

使用しての結合を試してみようかと思います。


前回の「クエリ」にて、1つのテーブルに対して希望のデータを抽出する事ができました。

<社員情報テーブル内のデータ>

01

ただし、性別・所属部署については1や2といった様にコード化されており、

誰にでもわかるデータではありません。

この分かりにくいデータを、内部結合を使って分かるデータにしましょう。

操作1)クエリデザインを起動し、「社員情報」「区分明細情報」「部署情報」テーブルを配置。

02

操作2)次にキー項目を結合していきます。

   ●性別を取得

    社員情報.性別=区分明細情報.区分明細コード

   ●部署名を取得

    社員情報.所属部署コード=部署情報.部署コード

03

操作3)表示項目を設定する。

   社員情報.社員番号

   社員情報.社員名

   社員情報.生年月日

   社員情報.性別

   区分明細情報.区分明細名

   社員情報.所属部署コード

   部署情報.部署名

06

操作4)区分明細情報.区分コード=’01’、非表示で条件を付ける。

07

操作5)実行し、結果を確認する。


下図の内容で抽出結果が得られればOKです。

操作3)で設定した表示順でデータが並んでおり、

性別の後ろに「男」「女」、所属部署コードの後ろに「部署名」が表示されるようになったことで

分かり易くなりました。

10

ただ、項目名がそのままなので、まだ直観的ではありません。

次に項目名を変更してみます。(「区分明細名」を「性別名」にする。)

操作)作成したクエリをデザインビューで開き、区分明細名のフィールド名の前に「性別名:」と入力。

これで実行をすることで、区分明細名の項目名が性別名となり、さらに分かり易くなりました。

このように、Accessでは「表示名:フィールド名」とすることで、任意の項目名にすることが出来ます。

11

それでは、今回のクエリに「内部結合」という名前をつけ、保存しておきましょう。

気づかれている方もおられるかもしれませんが、

社員情報の全データが抽出できているという訳ではありません。

この理由については、次回に「内部結合と外部結合」ということで説明させていただきます。

今回更新したAccessファイルを添付しておきます。

Access

]]>
https://webtant.net/205399/feed 0
クエリ https://webtant.net/204958 https://webtant.net/204958#comments Mon, 28 Sep 2015 04:18:00 +0000 http://webtant.net/?p=204958 こんにちは!SAWAです。

皆様はシルバーウィーク、楽しまれましたでしょうか?

私は、日曜に実家の稲刈りを手伝いに行き、その後の2日間は筋肉痛で辛い日々を送ってました(- -;)

来年の為に、すこしでも運動しておこうと誓った連休でした。

さて今回は、今まで作成してきたテーブルを使い、「クエリ(query)」について

説明していきます。

「クエリ(query)」とは英単語で、質問(する)、照会(する)などの意味を持っています。

IT用語辞典では、「ソフトウェアに対するデータの問い合わせや要求などを

一定の形式で文字に表したものを指すことが多い。」とあります。

この文言通り、Accessでは作成したテーブル内のデータをこの「クエリ」を使って

閲覧・更新が出来ます。

では、実際にクエリを使用していくつかの操作を行ってみましょう。

操作1)クエリを起動する。

①「メニューバー」→「作成」→「クエリデザイン」をクリック。

01_クエリ起動

②表示された「クエリデザイン」画面の構成を確認。

上段が「フィールドグリッド」で、テーブル・項目を表示します。

下段が「デザイングリッド」で、表示する項目・条件・並び替え順等、

データの見え方を設定する箇所です。

05_クエリデザイン

操作2)「社員情報」のデータをすべて表示

①「テーブルの表示」画面より、「社員情報」を選択し、「追加」をクリック。

02_テーブル追加

②「社員情報」テーブルの「*(アスタリスク)」をダブルクリックし、

デザイングリッドに表示させる。

02_項目追加

③メニューバーの「実行」をクリックし、データを表示させる。

03_実行

④クエリタブ上で右クリックし、「上書き保存」を選択。

作成したクエリを「社員情報表示」という名前で保存する。

04_クエリ保存

操作3)社員情報より、男性社員のみ抽出し、社員名と生年月日のみ表示する。

(男性社員のみ=性別が01の社員)

①社員情報より「社員名」「生年月日」「性別」をデザイングリッドに表示させる。

②「性別」の抽出条件に「=”01″」と入力。

(文字列を条件にする場合は、「”」(ダブルクォーテーション)で括る事。)

③性別のデータは表示させないので、「表示」項目のチェックを外す。

④「実行」し、男性社員のデータのみ抽出できていれば正解。

⑤「男性社員抽出」というクエリ名で保存。

06_条件

07_条件結果

操作4)生年月日が1980年以降の社員を抽出する。

①社員情報より「*」をデザイングリッドに表示させる。

②「生年月日」の抽出条件に「=#1980/01/01#」と入力。

(日付型を条件にする場合は、「#」で括る事。)

③抽出条件とした「生年月日」は表示させる必要がないので、

「表示」項目のチェックを外す。

④「実行」し、1980年以降の社員(3名)が表示されていれば正常。

⑤「生年月日抽出」というクエリ名で保存。

08_日付条件

09_日付条件結果

今回は4つ程操作をして貰いながら、クエリの機能について説明させていただきました。

ここで、操作3で作成した「男性社員抽出」クエリを再度表示し、

画面左上のメニューバーより、「表示▼」の▼部分をクリックし、「SQLビュー」を選択して下さい。

10_SQL

すると、「SELECT ~」から始まる文字が表示されます。

これはSQL文と呼び、AccessやOracle等のリレーショナルデータベース管理システムで

データを参照・追加・更新・削除、又はデータベース全体を管理するプログラム言語になります。

デザイングリッドで作成したクエリは、裏ではSQLに変換しているのです。

簡単ですね。

しかし複雑なクエリを作成しようとすると、デザイングリッドで作成するよりも

直接SQLビューに書いていった方が分かりやすいということもありますので、

私自身はそう使い分けています。

SQLについては、今後の流れで必要になった時に説明させていただきます。

次回は、区分情報を使用しての結合についてお話しいたします。

今回更新したAccessファイルを添付しますので、参考にして下さい。

Accessでやってみよう5

]]>
https://webtant.net/204958/feed 0
結合 https://webtant.net/204450 https://webtant.net/204450#comments Wed, 19 Aug 2015 13:11:04 +0000 http://webtant.net/?p=204450 こんにちは!SAWAです。

9月目前だというのに、まだまだ暑いですね。。
通勤するだけで疲れてしまい、お昼休みには椅子で昼寝をしてます。

座ったまま寝るのにもなれまして、12時から20分の昼寝後に昼食を食べるというのが
日課になってしまってます(^^;)

少しの昼寝で、午後からの仕事がスムーズに進むのですが、
昼寝が出来なかった日の午後が辛くて辛くて・・・

少しの昼寝は良いですよ!皆さんも是非、試してみてください!!

さて、今回はリレーショナルデータベースの要となる技術の「結合」のことについて書きます。

第3回で作成した「社員情報」テーブルの「性別」「所属部署コード」を結合を使用して、
コードに応じた名称を取得するようにします。

まずは、「区分情報」「区分明細情報」「部署情報」の3テーブルを用意します。
(今回は部署情報を使用した単純な結合を行います。「区分情報」「区分明細情報」は、次回以降で使用します。)

★区分情報(主キー=区分コード)

【フィールド1】 主キー
フィールド名:区分コード
データ型:テキスト型
フィールドサイズ:2

【フィールド2】
フィールド名:区分名
データ型:テキスト型
フィールドサイズ:50

★区分明細情報(主キー=区分コード、区分明細コード)

【フィールド1】
フィールド名:区分コード
データ型:テキスト型
フィールドサイズ:2

【フィールド2】
フィールド名:区分明細コード
データ型:テキスト型
フィールドサイズ:4

【フィールド3】
フィールド名:区分明細名
データ型:テキスト型
フィールドサイズ:50

★部署情報(主キー=部署コード)

【フィールド1】
フィールド名:部署コード
データ型:テキスト型
フィールドサイズ:2

【フィールド2】
フィールド名:部署名
データ型:テキスト型
フィールドサイズ:50

用意したテーブルに予めデータを入力しておきます。

★社員情報

社員情報_データ

★区分情報

区分情報_データ

★区分明細情報

区分明細情報_データ

★部署情報

部署情報_データ

それでは、社員情報と部署情報を部署情報で結合させ結果を見てみましょう。

①「メニューバー」→「作成」→「クエリデザイン」をクリック。

01_クエリ

②「テーブルの表示」で、「社員情報」と「部署情報」を結合対象テーブルということで追加。
その後、「テーブルの表示」画面を「閉じる」で消す。

02_クエリ

③「社員情報」の「所属部署コード」を「部署情報」の「部署コード」上にドラック&ドロップ。

この作業で「所属部署コード」と「部署コード」での「結合」ができる。

03_クエリ

④「結合」の結果を表示する。

今回は「社員情報」「部署情報」のすべての項目を表示できればよいので、
各々のテーブルの「*」をダブルクリックする。

04_クエリ

⑤「メニューバー」→「実行」をクリック。
すると、結合したテーブルの結果が表示される。

05_クエリ


以上が「結合」の結果となります。

「結合」により別々のテーブルからキーを利用して、
必要なデータを集めて1つのテーブルとしてデータを表示することが出来ます。

~終わりに~

今回の例でいえば、「わざわざ部署情報を作成して部署名を分けずに、
社員情報の中に項目として持たせればいいじゃないか。」と思うかもしれません。

ただ、実業務の中では社員数に応じてデータが出来ますし、部署も複数に分かれます。
トップの判断で部署名が変わることもザラにあります。

社員情報の中で部署名を入れてしまうと、
そのような場合に該当の部署名を探し、1レコードずつ更新していかなければなりません。
(実際は、SQLという言語で一括更新が可能ではあるが、誤りのリスクと効率が悪い。)

部署情報を別テーブルとして管理しておけば、該当と部署コードの部署名のみを更新するだけで
済むという非常に効率の良い運用が可能になります。

こうやって、発生しうるデータをまずは1つのテーブルと考えて、
段階的にテーブルを分けて考えていく事は「正規化」といい、
データベース設計でとても重要な作業であります。

以上で、今回のコラムテーマ「結合」については終わります。

次回は、今回出てきました「クエリ」について話、その次の回で区分情報の結合の話を行っていきたいと思います。

今回使用したAccessファイルを添付しておきます。
基本は自ら手を動かしながらの方が覚えは良いかと思いますが、ご参考にして下さい。

Accessでやってみよう4

]]>
https://webtant.net/204450/feed 0
データ投入 https://webtant.net/204076 https://webtant.net/204076#comments Sun, 12 Jul 2015 15:53:54 +0000 http://webtant.net/?p=204076 こんにちは。SAWAです。

前回は、「社員情報テーブル」を作成しました。
今回はその「社員情報テーブル」にデータを入力しながら、
データ型や詳細なフィールドについて見ていきます。

それでは、社員情報を構成する5つのフィールドを見ていきます。
(フィールドプロパティについては主要な項目のみ抜粋します。)
テーブル

[フィールド1]
・フィールド名:社員番号
・データ型:オートナンバー型
・フィールドサイズ:長整数型
・新規レコードの値:インクリメント
・インデックス:はい(重複なし)

データを追加した際に、社員番号を自動的に連番にて採番するように設定しています。
「フィールドサイズ」→「新規レコードの値」→「データ型」の順で日本語にすると、
「整数型で1づつ加算しながら自動採番せよ」となります。
「インデックス」は、第1回で話した「関連付け」で高速にデータ検索を行うための設定です。

[フィールド2]
・フィールド名:社員名
・データ型:テキスト型
・フィールドサイズ:20
・空文字列の許可:いいえ
・IME入力モード:オン

社員の名前を格納する項目です。
注意点としては、フィールドサイズ:20という部分です。
ここでのサイズは「文字数」です。
他のRDB製品(Oracle、SQLServer)では、半角=1バイト・全角=2バイトと「バイト数」で
制限をがありますが、Accessでは簡単に表現されてテキスト型では文字数での制約となります。
「空文字の許可」は、必ず氏名は入力しなければならないようにするために、
空文字は認めないとしています。
「IME入力モード」で、この項目を入力する時には自動で全角入力に切り替わるなるようにしています。

[フィールド3]
・フィールド名:生年月日
・データ型:日付/時刻型
・書式:日付(S)
・IME入力モード:オフ
・日付選択カレンダーの表示:日付

社員の生年月日を格納する項目です。
生年月日は日付なので、「データ型」は日付/時刻型にしています。
且つ、「書式」を日付(S)とすることにより、「yyyy/mm/dd」の形式で格納します。
入力の支援として、「IME入力モード」で自動で半角に切り替わるように設定し、
「日付選択カレンダーの表示」で入力時に日付選択ボックスが表示されるようにしています。

[フィールド4]
・フィールド名:性別
・データ型:テキスト型
・フィールドサイズ:1
・空文字列の許可:いいえ
・IME入力モード:オン
・ルックアップ
_表示コントロール:コンボボックス
_値集合タイプ:値リスト
_値集合ソース:1;男;2;女
_連結列:1
_列数:2
_列見出し:いいえ
_リスト行数:2

性別を区分(男なら「1」、女なら「2」)として格納する項目です。
入るべき値としては、「1」か「2」のどちらかなので、
ルックアップ機能を使用して、それ以外の項目が入らないようにしています。
この機能によりデータ入力の際、下図のように選択入力が可能になります。

ルックアップ

[フィールド5]
・フィールド名:所属部署コード
・データ型:テキスト型
・フィールドサイズ:2

所属部署コード(0詰、2桁)を格納する項目です。
今後作成する、部署マスタと結合する際のキーとなる項目です。

以上でテーブルの作成は完了しましたが、
社員番号を「主キー」にする作業を行います。

「主キー」というのは、必須の設定事項ではありませんが、
テーブルの登録されたデータの中でどれか1つの行を
特定する際に便利な機能です。
「主キー」に設定された項目(複数項目可)は、対象となった項目内での重複・空文字は許されなくなります。
設定方法は、主キーとしたい項目を選択し、メニューバーの「主キー」をクリックします。
主キー

次はデータを入力する画面を表示します。
テーブルを保存して、メニューバーの「表示」→「データシートビュー」をクリックします。
表示

表示された「データシートビュー」に直接値を入力していきながら、
上記で行った設定がどのように動作するかを検証してください。
(実業務では、直接テーブルに手入力で値を入力することは、あまりしません。
しかし、手で入力することにより各設定の意味が分かると思います。)

今回は、項目設定の方法と意義を社員情報テーブルを元に確認してもらいました。
各項目でデータ型に応じて様々なパターンがあるため、とても書きにくく読みにくい
内容になってしまったと感じています。すみません。。

正直、この部分は色々なテーブルを作りながら、必然的に分かってくる箇所が多いです。
こういうプログラムやシステムを自習する上では、
「本を読むだけ」とか「ブログを読むだけ」では無く、
色々とテーマを考えて実際に手を動かしながら勉強していくのがベストと考えます。

次回は、部署マスタ等の他のテーブルを用意し、
リレーショナルデータベースの重要な機能「結合」について書いていきたいと思います。

]]>
https://webtant.net/204076/feed 0
テーブルを作ろう https://webtant.net/202783 https://webtant.net/202783#comments Sun, 31 May 2015 12:43:01 +0000 http://webtant.net/?p=202783 こんにちは。SAWAです。


早速ですが、今回は前回の内容をベースとして、「社員情報テーブル」を作ってみましょう。

大まかな手順としては、以下の順になります。

①Accessのファイルを作る

②テーブルを作る

③データを登録する(次回)


それでは、参りましょう。


【Accessファイルを作る】

01_1


まずは、Accessを起動し、Cドライブ直下のTESTフォルダの中に、TEST.mdbxという形で

データベースファイルを作成しましょう。


<データベース作成の手順>

Accessを起動後、「新規作成」→「空のデータベース」→「ファイル名」に

「TEST.accdb」と入力の上、フォルダアイコンをクリック→保存先「C:\TEST」を選択し、

「OK」→「作成」をクリック。

accdb作成


これで、Cドライブ直下のTESTというフォルダ内にTEST.accdbというファイルができます。

05


【テーブルを作る】

Accessファイルができたところで、「社員情報テーブル」を作っていきましょう。

Accessファイルを作った後、「テーブル1」というテーブルツール画面が開かれます。

この状態で、左上部「表示」アイコンの▼をクリックして、展開してみましょう。

すると、「データシートビュー」と「デザインビュー」があります。

07


データシートビューとは、テーブル内のデータを閲覧・編集する場合に使用します。

デザインビューとは、テーブルの作成・編集する場合に使用します。


これからテーブルを作成していきますので、デザインビューを選択します。

デザインビューをクリックすると、「名前を付けて保存」画面が表示されます。

ここに、「社員情報」と入力しましょう。

そうすると「社員情報」というテーブルが作られ、「デザインビュー」に遷移します。

08


デザインビューは、次の図のような構成になっています。

09

「この項目ってなんだろう?」ということがあれば、

その項目にカーソルを合わせることで「項目説明」が表示されるので、ヘルプ代わりになります。

それでは、図のようにフィールド名を設定しながら、社員情報テーブルを作ってください。

フィールド名は入力、データ型や詳細設定はプルダウンリストより選択で設定できます。

各フィールドの詳細設定については、デフォルト値から変更したもののみ、図の下に記入し

ます。

10


●社員番号[オートナンバー型]

●社員名[テキスト型]

●生年月日[日付/時刻型]

 書式:日付(S)

●性別[テキスト型]

 フィールドサイズ:1

●所属部署コード[テキスト型]

 フィールドサイズ:2


ここまでの作業で「社員情報」テーブルが完成しました。

そこで、情報を保存しておきましょう。

保存は、画面左上の「フロッピーディスク」マークの上書き保存です。

12


今回はAccessデータベースを作る作業と、テーブルを作る作業を行いました。

テーブルを作る作業で重要な、データ型や詳細なフィールドの設定については、

次回、データを入力しつつ、動きを追いながら説明させていただこうかと思っております。




~雑~

今回の記事の最後で、「保存は、画面左上の「フロッピーディスク」マークの~」と書き、

思ったのですが、いつまで「フロッピーディスク」のアイコンを使い続けるのでしょうね?

今やフロッピーディスクを搭載しているパソコンなんて皆無に等しいし、今の若者世代は存在自体知らないのでは・・・

1.44MBしか入らなかったフロッピーを懐かしく思いつつ、年齢を感じる今日この頃でした。

]]>
https://webtant.net/202783/feed 0
Accessって? https://webtant.net/202178 https://webtant.net/202178#comments Tue, 28 Apr 2015 08:00:55 +0000 http://webtant.net/?p=202178 皆様、初めまして。SAWAと申します。今回からAccessについての記事を書かせて頂きます。
少しでも役に立てば・・・と思ってます。

  • Accessって?


まずは、Accessって何なのでしょう?

wikiより、最初の文言だけ抜粋すると、

マイクロソフトMicrosoft Windows 向けに販売している、関係データベース管理

システム (RDBMS) のソフトウェアである。」と書かれています。

そのままですが、マイクロソフト社がWindows向けに製造した、
リレーショナルデータベース(RDB)のソフトウェアなのです。

  • データベースって?


データベースという単語が出てきました。

データベースというのは、「データを検索や抽出し易いように一定のテーマ毎に集めたもの」ということで、
Excelで社員情報の表を作ったり、商品情報の表を作ったり
というのも前述の目的を果たすのでデータベースといえるのです。

01_ExcelDB

では、AccessとExcelのデータベースとしての違いは?というと、
それが「リレーショナル(関係)」の部分なのです。

  • リレーショナルデータベースって?


「リレーショナル(関係)を持てるデータベース」について説明します。

先ほどの「社員情報」で考えてみると、「社員番号、社員名、生年月日、性別」までは変わることはありません。
(社員名は結婚で姓が変わる場合がありますが、変更の頻度は極端に少ない。)

ただ、それ以外の「部署コード、部署名」は異動等で変わる可能性がありますし、
組織の再編等で部署名が変わることもあります。

≪Excelデータベースでの部署名変更時≫

02

Accessを利用すると、以下の図のように「社員情報」と「部署情報」を分けて
部署コードに関連を持たせることができ、名称の変更も部署コード=”02″の部署名を
変更するだけで名称の変更が完了となります。

≪Accessで社員情報と部署情報のリレーション≫

04

05



これが、項目に「リレーショナル(関係)」が持てるAccessデータベース等のリレーショナルデータベースの特徴となります。


◆◆◆◆◆◆◆◆◆◆

今回はAccess、データベース、リレーショナルデータベースの事前知識としての部分を説明させていただきました。

これをざっくりとした知識として、次回からはテーブルの作成・リレーショナルの作り方といった部分に話を進めたいと思います。

]]>
https://webtant.net/202178/feed 0