ラベル [2011]データベース基礎演習 の投稿を表示しています。 すべての投稿を表示
ラベル [2011]データベース基礎演習 の投稿を表示しています。 すべての投稿を表示

2011年11月21日月曜日

オリジナル・データベースの作成手順

1.最終的な画面をイメージ
作成したデータベースを使用する際のフォームまたはレポートを想像し、スケッチしておく。
DB完成イメージ
2.要素の抽出・分類
1で作成したスケッチに含まれる文字列(要素)を抜き出し、内容毎に分類する。
要素抽出/分類

3.テーブルの作成
2で作成した分類毎の要素を使ってテーブルを作成し、リレーションを付加する。
T学生マスター(データシートビュー)
T学生マスター(デザインビュー)

T出席状況(データシートビュー)
T出席状況(デザインビュー)
リレーションシップ

4.クエリの作成
3で作成したテーブルを基として、1で使用する値を抽出するクエリを作成する。
Q出席状況(データシートビュー)
Q出席状況(デザインビュー)

5.フォームの作成
4で作成したクエリを基として、1で使用する値を表示するフォームを作成する。
F出席状況(フォームビュー)

F出席状況(デザインビュー)

必要出席コマ数
=Int(Count([出席日])*6*0.8)

出席状況
=Abs(Sum([1限目]+[2限目]+[3限目]+[4限目]+[5限目]+[6限目]))

6.完成
残り日数により日数の背景色が変化する様に変更
右クリック→条件付き書式

条件付き書式の設定

F出席状況2(フォームビュー)

F出席状況2(デザインビュー)

※サンプルファイルをダウンロード

2011年11月14日月曜日

第5章練習問題

Access2003応用
練習問題(P112)

「Q時間単価更新クエリ」内の登録期間を表示する部分は

登録期間:DateDiff("m", [登録日], Date())
ではなく
登録期間:DateDiff("m", [登録日], "2004/11/14")
を使用すること.


第5章で作成した,勤続期間により時間単価が変更されたデータを用いて,第4章と同様の追加課題を行う.
(第4章とは対象とするデータが異なる事に注意)

今回作成するクエリの中に,勤続期間によって時間単価が変化するフィールドを追加する場合,以下の式が利用できる.
時間単価2: IIf(DateDiff("m",[登録日],"2004/11/14")>=36,[時間単価]+30,[時間単価])
以後賃金を計算する箇所で,フィールド名「時間単価」の部分を「時間単価2」に変更すれば,勤続期間を考慮した時間単価を使用した賃金の計算が可能になる.
追加課題1:
勤務時間が6時間をこえる場合は,1時間の休憩を入れなければならないとする.
このような場合の賃金を表示するフィールドを,「賃金2」というフィールド名で作成せよ.

追加課題2:
退勤時刻が18:00を過ぎた場合,18:00以降の賃金が1.25倍になるとする.
このような場合の賃金を表示するフィールドを,「賃金3」というフィールド名で作成せよ.

追加課題3:
追加課題1と追加課題2の内容を同時に満たすフィールドを,「賃金4」というフィールド名で作成せよ.

2011年11月9日水曜日

第4章練習問題

Access2003応用
練習問題(P73)

追加課題1:
勤務時間が6時間をこえる場合は,1時間の休憩を入れなければならないとする.
このような場合の賃金を表示するフィールドを,「賃金2」というフィールド名で作成せよ.
賃金2: IIf(
    [勤務時間]>6,
    [時間単価]*([勤務時間]-1),
    [時間単価]*[勤務時間]
)

追加課題2:
退勤時刻が18:00を過ぎた場合,18:00以降の賃金が1.25倍になるとする.
このような場合の賃金を表示するフィールドを,「賃金3」というフィールド名で作成せよ.
追加課題2場合分け: IIf(
    DateDiff("n", [退勤時刻], "18:00")>=0,
    "1",
    IIf(
        DateDiff("n", [出勤時刻], "18:00")>=0,
        "2",
        "3"
    )
)
賃金3: IIf(
    DateDiff("n", [退勤時刻], "18:00")>=0,
    [時間単価]*[勤務時間],
    IIf(
        DateDiff("n", [出勤時刻], "18:00")>0,
        DateDiff("n", [出勤時刻], "18:00")/60*[時間単価]+DateDiff("n", "18:00", [退勤時刻])/60*[時間単価]*1.25,
        [時間単価]*[勤務時間]*1.25
    )
)

追加課題3:
追加課題1と追加課題2の内容を同時に満たすフィールドを,「賃金4」というフィールド名で作成せよ.
追加課題3場合分け: IIf(
    DateDiff("n", [退勤時刻], "18:00")>=0,
    IIf(
        [勤務時間]>6,
        "1-1",
        "1-2"
    ),
    IIf(
        DateDiff("n", [出勤時刻], "18:00")>=0,
        IIf(
            [勤務時間]>6,
            "2-1",
            "2-2"
        ),
        IIf(
            [勤務時間]>6,
            "3-1",
            "3-2"
        )
    )
)
賃金4: IIf(
    DateDiff("n", [退勤時刻], "18:00")>=0,
    IIf(
        [勤務時間]>6,
        [時間単価]*([勤務時間]-1),
        [時間単価]*[勤務時間]
    ),
    IIf(
        DateDiff("n", [出勤時刻], "18:00")>0,
        IIf(
            [勤務時間]>6,
            (DateDiff("n", [出勤時刻], "18:00")/60-1)*[時間単価]+DateDiff("n", "18:00", [退勤時刻])/60*[時間単価]*1.25,
            DateDiff("n", [出勤時刻], "18:00")/60*[時間単価]+DateDiff("n", "18:00", [退勤時刻])/60*[時間単価]*1.25
        ),
        IIf(
            [勤務時間]>6,
            [時間単価]*([勤務時間]-1)*1.25,
            [時間単価]*[勤務時間]*1.25
        )
    )
)

算術関数

Access2003応用
練習問題(P69)

追加課題:
算術関数を使用して,以下の表示を行う.

1.受験者数
2.平均点
3.最高得点
4.最少得点
5.65点以上75点未満の受験者数



2011年11月8日火曜日

フィールドのカウント(Dcount関数)

Access2003応用
練習問題(P69)

追加課題:
「T会員マスター」テーブル中の神奈川県の会員数をカウントし,フォームとして表示せよ.

1.「T会員マスター」テーブルの会員NO,名前,住所1を表示するフォームを作成する.
(テキストボックス作成時は,メニューの「表示」→「ツールボックス」を使用します)

2.フッターに神奈川県の会員数を表示するために,テキストボックスを用意し,
テキストボックスの「プロパティ」→「データ」タブ→「コントロールソース」
に関数を設置.


3.フォームビューで,正しく会員数が表示されていることを確認.


解答例
=DCount(
    "会員NO",
    "T会員マスター",
    "Left([住所1],4)='神奈川県'"
)

2011年11月7日月曜日

条件分岐の利用(IIf関数)

Access2003応用
練習問題(P68)

追加課題1:
「T会員マスター」の住所1の中に含まれる市名を表示するクエリを,Mid関数を用いて作成せよ.
(神奈川県横浜市に対応できればOK)

追加課題2:
「T会員マスター」の住所1の中に含まれる市区町村名を表示するクエリを,Mid関数とLeft関数を組み合わせて作成せよ.
(神奈川県横浜市,及び東京都大田区に対応できればOK)

追加課題3:
「T会員マスター」の住所1の中に含まれる市区町村を表示するクエリを,IIf関数/Mid関数/Left関数を多段で組み合わせて作成せよ.
(神奈川県横浜市/海老名市,東京都大田区/世田谷区に対応できればOK)




解答例


追加課題1
市: Mid([住所1],5,3)
市: Mid(
    [住所1],
    5,
    3
)

追加課題2
市区町村: IIf(Left([住所1],4)="神奈川県",Mid([住所1],5,3),Mid([住所1],4,3))
市区町村: IIf(
    Left(
        [住所1],
        4
    )="神奈川県",
    Mid(
        [住所1],
        5,
        3
    ),
    Mid(
        [住所1],
        4,
        3
    )
)

追加課題3
市区町村2: IIf(Left([住所1],4)="神奈川県",IIf(Mid([住所1],5,4)="海老名市",Mid([住所1],5,4),Mid([住所1],5,3)),IIf(Mid([住所1],4,4)="世田谷区",Mid([住所1],4,4),Mid([住所1],4,3)))
市区町村2: IIf(
    Left(
        [住所1],
        4
    )="神奈川県",
    IIf(
        Mid(
            [住所1],
            5,
            4
        )="海老名市",
        Mid(
            [住所1],
            5,
            4),
        Mid(
            [住所1],
            5,
            3
        )
    ),
    IIf(
        Mid(
            [住所1],
            4,
            4
        )="世田谷区",
        Mid(
            [住所1],
            4,
            4
        ),
        Mid(
            [住所1],
            4,
            3
        )
    )
)

2011年11月4日金曜日

リレーションシップの作成(ルックアップフィールド)

Access2003応用
練習問題(P51)

追加課題1:
「Tアルバイトマスター」に職種区分を表示するルックアップフィールドを設定せよ.




追加課題2:
「T勤務状況」に個人コードと氏名を表示するルックアップフィールドを設定せよ.


2011年11月2日水曜日

クエリの作成


Access2003応用
練習問題(P25)

追加課題:
個人コード「7001」のアルバイトに対して,2004/4/1~2004/5/31の期間 (*1) に支払ったアルバイト代の総額を,クエリを用いて表示せよ.

アルバイト代=勤務時間×単価 (*2)
勤務時間=退勤時間ー出勤時間 (*3)



(*1) Between #2004/04/01# And #2004/05/31#
(*2) 勤務時間: ([退勤時刻]-[出勤時刻])*24
(*3) アルバイト代: [時間単価]*[勤務時間]

2011年10月18日火曜日

リレーションシップの作成(2)


練習問題(P89)

追加課題:新規にテーブルを作成し,既存テーブルとの間にリレーションシップを作成せよ.

3.T受注リストをベースとし,各テーブルに分散しているデータ全てを一覧表示するクエリを作成せよ.

(例)
デザインビュー

データシートビュー

※新規テーブルを追加後,データシートビューで内容が表示されない場合は,リレーションについて再確認してみてください.それでも正しく表示されない場合は,1からクエリを作り直すと正しく表示される場合もあります.


4.テーブル「T顧客リスト」内の担当部署をもとに,「担当部署(部)」と「担当部署(課)」の2つのテーブルを作成し,リレーションを作成せよ.

4-1.まずはもととなるデータ中の表記のブレを1つに統一する.
(総務部総務課,本部総務課,総務課) → (総務部総務課)

4-2.部と課毎にテーブルを作成する.

(T担当部リスト)
担当部ID
担当部名


(T担当課リスト)
担当課ID
担当課名




(例1)表記のブレをまとめる

■総務部
総務部総務課
総務課総務担当
総務課
総務部秘書室
本部総務課
秘書課顧客G

総務部
├─総務課
└─秘書課

■営業部
営業部第一営業課
営業部サポート課
営業部広報課
営業本部サポート部
第二営業部一課
第三営業部顧客サポート課
営業企画部推進室
営業二課サポート室
営業グループ
営業一課

営業本部
├─営業部第一営業課
├─営業部サポート課
├─営業部広報課
├─第二営業部一課
├─第三営業部顧客サポート課
├─サポート部
└─営業企画部推進室

■顧客サポート部
顧客サポート部
顧客サポート課
CS部特別推進課
CSセンター
カスタムサポートG

顧客サポート部
├─顧客サポート課
└─特別推進課

(例2)部と課毎にテーブルを作成する.

(T担当部リスト)
担当部ID担当部名
1総務部
2営業本部
3顧客サポート部


(T担当課リスト)
担当課ID担当課名
1総務課
2秘書課
3営業部第一営業課
4営業部サポート課
5営業部広報課
6第二営業部一課
7第三営業部顧客サポート課
8サポート部
9営業企画部推進室
10顧客サポート課
11特別推進課


デザインビュー

データシートビュー

2011年10月12日水曜日

リレーションシップの作成


練習問題(P89)

追加課題:新規にテーブルを作成し,既存テーブルとの間にリレーションシップを作成せよ.

1.新たに「T都道府県リスト」テーブルを作成し,「T顧客リスト」テーブルとの間にリレーションシップを作成する.

(T顧客リスト)
顧客NO
顧客名
フリガナ
担当部署
担当者名
郵便番号
住所
TEL
DM



(T顧客リスト)
顧客NO
顧客名
フリガナ
担当部署
担当者名
郵便番号
都道府県ID
住所
TEL
DM



(T都道府県リスト)
都道府県ID
都道府県名


2.新たに「T担当者リスト」テーブルを作成し,「T顧客リスト」テーブルとの間にリレーションシップを作成する.

(T顧客リスト)
顧客NO
顧客名
フリガナ
担当部署
担当者名
郵便番号
都道府県ID
住所
TEL
DM



(T顧客リスト)
顧客NO
顧客名
フリガナ
担当部署
担当者ID
郵便番号
都道府県ID
住所
TEL
DM



(T担当者リスト)
担当者ID
担当者名

テーブルの作成

練習問題(P78~81)

追加課題:「主キー」「データ型」に注意しながら,新規テーブルを追加せよ.

1.T顧客リスト内の「住所」フィールド内の都道府県を別テーブルに分割する.

(T顧客リスト)
...住所電話番号...
100-0000東京都港区1-1-103-0000-0000



(T顧客リスト)
...都道府県ID住所電話番号...
100-000037東京都港区1-1-103-0000-0000



(T都道府県リスト)
都道府県ID都道府県名
1北海道
2青森
...
37東京都
...



2.T商品リスト内の「カタログギフト」を別テーブルに分割する.


カタログギフトに含まれる商品は,すべてT商品リストに記載されていると仮定する.
今回作成するTカタログギフトを用いる事で,各カタログギフトに含まれる個別の商品が分かるものとする.


(T商品リスト)
商品NO商品名分類NO価格
1001商品券\1000A0011,000
4001カタログギフトAA00220,000
...




(T商品リスト)
商品NO商品名分類NO価格
1001商品券\1000A0011,000
...





(Tカタログギフト)
カタログギフトNO商品名備考価格商品1商品2商品3商品4商品5
C0001カタログギフトA飲料セット20,000100210041005

C0002カタログギフトB金券セット25,0001001200630063011
C0003カタログギフトC詰め合わせセット20,00010032003200530043010
...








※各カタログギフトに含まれる商品の最大の個数は5個と仮定する.