アクセス日記帳の作成(1)

私はアクセス(MS-オフィス)で、「備忘録」として「日記」と「こづかい帳」が合体したもの作成、使用してきました。
日記には「今日の写真」として1枚の写真が表示できるのですが、ずいぶん長い間写真は入れてませんでした。先日、写真を入れようとしたら入らない。調べたらアクセスのバージョンアップで写真(画像)の取り扱い方が変わってました(昔の日記に入れた写真は見れます)。
再度、写真が入れられるように備忘録を見直し改修ましたので、これを機会に「日記」部分の一部を別途作成して、それをブログにしてみました。ブログは数回に分けて投稿したいと思ってます。
新たに作った「日記」では、備忘録の  日記記入年月日で検索表示日記の記事(文字)で検索表示「今日の写真」の一覧表示(年月日を指定して)が行えます。
右図が今回作成した「日記」の起動画面です。
ブログ記載作成日記日記スタート画面

アクセスのデータベースオブジェクトとして「テーブル」「フォーム」「レポート」「クエリー」「マクロ」「モジュール(VBA)」の6つがあります。モジュールは使わなくても殆どの作業が行えます。今回作成した「日記」でも「モジュール」は使ってません。
日記のイメージを知って頂くため各機能の画面を下図に示します。
日記の記載画面
年月日検索
記事での検索今日の写真一覧

ブログは「日記」の作成を元に書きましたが2回に分けて投稿します。1回目はテーブルとフォーム/レポートについて書いています。

「日記」のテーブル
テーブルはデータを格納する入れ物となる表です。アクセスの最重要オブジェクトです。
アクセス「日記」では日記記事などを保存する「日記」テーブル、今日の写真を保存する「今日の写真」テーブルと「天気」テーブルがあります。「日記」と「天気」テーブルはリレーショナルな関係にして使います。また日記記載中の取消しなどを円滑に行うため「日記(TMP)」フォームを使い、ここで日記の記入を行います。
1.「日記」テーブル
「日記」には内容的には「年月日」、「記事」、「天気」、「備考」の4個のフィールドがあります。テーブルには各レコードを識別する主キーが絶対必要ですので「No」フィールドを設けています。天気は数値型として「天気」テーブルとリンクさせてることにより文字で表示します。
60-テーブル

2.「天気」テーブル
「天気」には「WNo」と「天気」の2個のフィールドがあります。「WNo」で「日記」テーブルの「天気」フィールドとリンクして使います。「天気」テーブルを開いたものを緑で囲まれた範囲に示しました。「WNo」は主キーを兼ねています。
62-テーブル

3.「今日の写真」テーブル
「今日の写真」には「年月日」、「写真」、「コメント」、「写真」、「写真2」のフィールドがあります。「写真」は古い OLE オブジェクト型として保存した写真用ですので、新規に始める場合は不要です。「今日の写真」テーブルはフォームで「日記」テーブルとリンクさせるようにしました(「日記」フォームで「今日の写真」フォームとリンク)。画像はデータ型を「添付型」とします。「No」フィールドが主キーです。
63-テーブル

4.「日記(TMP)テーブル」
テンポラリーテーブルとして使いますので「日記」テーブルの構造をコピーしたものです。
日記の記事入力や写真の挿入など日記記載はすべてこの「日記(TMP)テーブル」で行います。入力が完了した後、「日記」テーブルへ転記するようにします。日記の取消しなど入力作業を中断しても、テンポラリーテーブル上での作業ですので本体の「日記」テーブルにはまったく影響を与えません。

「日記」のフォーム
フォームはアクセスにおけるマン/マシン インターフェイスです。
文字などを入力するなどの操作を行ったり、日記内容(レコード)を表示するものです。フォームを通してデータを操作し、その結果もフォームを通してみます。「日記」には8個のフォームがあります。
フォームにはプロパティがあり、フォームをデザインビューで開き、フォーム内の何もない所を右クリックしてフォームのプロパティを選ぶと、背景画像の設定など各種の設定をしたり、必要ならフォームに関連する(必要な)クエリーなどをレコードソースとして設定できます。
フォームに表示されている文字、ボタン、記入欄などはコントロールと呼ばれます。コントロールにもプロパティがあります。各コントロールは右クリックしてプロパティを選び、機能や色などを設定できます。
70-フォーム

1.「スタート」フォーム
「日記」起動時に「Autoexec」マクロにより自動的に開く画面です。この画面から日記記入など各作業を選びます。
日記スタート画面 86--フォーム

2.「日記記入フォーム」フォーム
日記を記入する画面です。
年月日は自動的に今日の日付となりますが、日付欄をからカレンダーを表示できますので、別の日に変えることも簡単です。曜日は自動的にその日付の曜日になります。
天気はリストボックスに表示されている天気をクリックして入力します。
日記の記事は「日記」の他、「備考」欄を作りました。これは定例的に記入・記録することを、例えば散歩などに関することなどを記入するのに使えると思います。日記記事と分けることで振り返って日記を見る場合に便利だと思います。
写真は「今日の写真」フォームをサブフォームとして入れています。
71-フォーム89--フォーム

「今日の写真」フォームは「日記」フォームと日付でリンクするように設定します。
写真表示(Sub)フォームのプロパティを開き、「日記記入フォーム」フォームの「月日」コントロールを親とし、写真表示(Sub)フォームの「年月日」をリンク子フィールドとしてリンクさせます。
76-フォーム

3.検索文字、検索年月日の入力フォーム
1)「文字検索入力」フォーム
フォーム日記記事と備考記事の双方を検索する文字を入力します。「検索開始」をクリックすると検索が開始され、該当する日記レコードを表示させます。72-フォーム

2)「日記月日検索入力」フォーム
月日を指定して日記レコードを開くためのものです。カレンダーからの年月日入力は、直近の年月日入力には便利ですが数年前の日付の指定には不便。次の「写真一覧開始年月日設定」フォームで使ったコンボボックス方式が良いと思います(ここでは比較のため使ってみました)。
74-フォーム73-フォーム

3)「写真一覧開始年月日設定」フォーム
月日を指定してその日以降の写真を一覧表形式を開くための年月日指定フォームです。
75-フォーム77-フォーム年、月、日をコンボボックスにリスト形式で設定します。年については、日記の記録のある年次から今後使うであろう先の年次までを入れます。
78-フォーム

4.検索結果の日記表示フォーム
検索して表示する画面は、年月日で検索しようが文字で検索しようが同じフォームが良いと思います。ただフォームが参照するレコードソースは異なりますので、それぞれで用意する必要があります。なお写真一覧の検索結果はレポートして表示します。文字検索では日記の本体記事も備考の記事も一緒に検索してますので、どちらのフィールドに在っても検索されます。
「文字検索結果表示」フォーム(「日記年月日検索結果表示」フォームは省略)
複数の検索結果がある場合はページとして表示されます。82--フォーム

フォームのレコードソースは、文字検索の場合は「文字検索表示」クエリー、年月日検索の場合は「日記閲覧」クエリーとなります。
81-フォーム

82--フォーム 85-フォーム

5.写真表示(Sub)フォーム
日記に添付する写真を表示するフォームです。日記入力(記載)画面や表示画面でサブフォームとして表示します。
レコードソースは「今日の写真」テーブルです。コントールとして配置しているのは「コメント」と添付ファイル型画像の「写真2」ですが、「写真2」の背面に「写真」という古いOLE 型の画像フィールドも重ねて置いています。添付ファイル型の写真がなければ、そして OLE 型古い画像があればこれを表示するためです(新しく作った場合は OLE 型画像はないので不要)。
87--フォーム
88--フォーム

「日記記入フォーム」のサブフォームとして「写真表示(Sub)」を使うためには、日記記入フォームの「月日」とサブフォーム写真の「年月日」でリンクさせることが必要です。
76-フォーム

「日記」のレポート
今日の写真一覧の表示にはレポートを使っています。
レポートはテーブルやクエリーのレコードを印刷・表示するためのものです。当然データ入力の機能はありませんがページの概念がありますので、「日記」では写真一覧の表示に使ってます。
レポートでは「今日の写真」テーブルの全フィール(除く主キー)を表示させています。レコードソースはクエリーの「今日の写真一覧」です。レポートヘッダーとして「写真一覧」を表示させました。
90-レポート
1ページには横7列写真が並ぶようにしてます。レポートで設定した写真表示サイズの大きさで、A4用紙 横に何枚並べられるか、列数が決まります。
93-レポート

レポート表示例です。
94-レポート

次のブログでは、クエリーとマクロについて書く予定です。

 

カテゴリー: アクセス タグ: , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください