Access(アクセス)の最近のブログ記事

それではフォームの動作を確認しながら、プログラムの意味を確認します。

【1】作成したAccessのファイルを起動します。

【2】画面が開きますので、オブジェクトの「フォーム」を選択します。

【3】「開く」をクリックし、フォームを実行します。

---3で動いているプログラム---

Option Compare Database ←データベース型で比較。
Option Explicit     ←宣言をしないと変数が使えないようにする。
Dim Res As Variant   ← Resという変数をバリアント型で宣言する。

*変数とは数値、文字、日付などを一時的に記憶しておくための場所です。変数はどんなデータが入るか、使う前に型を宣言する必要があります。バリアント型は何にでも使える便利な型です。変数名は自由に決められます。

ここであまり難しく考えずに、「AccessのVBAでは最初に書く必要がある」という程度でかまいません。

Private Sub Form_Load() ←フォームを読み込んだ時。
Me.AllowAdditions = False ←レコードの追加をできなくする。
Me.AllowDeletions = False ←レコードの削除をできなくする。
DoCmd.SetWarnings False ←Accessからのメッセージを非表示に。
End Sub ←プログラムの終わり。

*このプログラムは、フォームを開いた時点で、レコードの追加や削除はできなくしています。追加や削除はボタンから行うようにしたいためです。

【4】フォームが開いたら、「新規」をクリックします。

【5】最後の行に新規レコードが追加されました。

---4、5で動いているプログラム---

Private Sub 新規_Click() ←新規をクリックした時。
Me.AllowAdditions = True ←レコードの追加をできるようにする。
DoCmd.GoToRecord acDataForm, "***", acNewRec ←新規レコードへ移動
Me.***.SetFocus ←***へフォーカスを移動する。
End Sub ←プログラムの終わり

【6】下の図のようにデータを入力します。

更新した瞬間に一番下の空白行が消えます。

---この時動いているプログラム---

Private Sub ***_AfterUpdate() ←***を更新した後。
Me.AllowAdditions = False ←レコードの追加をできなくする。
End Sub ←プログラムの終わり

Private Sub ***_AfterUpdate() ←***を更新した後。
Me.AllowAdditions = False ←レコードの追加をできなくする。
End Sub ←プログラムの終わり

つまり、***か***を更新した後は、新規ボタンをクリックしない限り、レコードの追加をできなくしています。

【7】今入力したレコードを選択し、「削除」をクリックします。

【8】削除確認のメッセージボックスが表示されます。

【9】「はい」をクリックすると、選択したレコードが削除されます。

*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。

---7、8、9で動いているプログラム---

Private Sub 削除_Click() ←削除をクリックした時。

メッセージボックスを表示する。
OKがクリックされた時は以下の処理を実行する。
If MsgBox("削除します。よろしいですか?", vbOKCancel, "確認") = vbOK Then

Me.AllowDeletions = True ←削除できるようにする。

On Error GoTo err_削除_click ←エラーが起こった時はラベルへ飛ぶ

DoCmd.RunCommand acCmdDeleteRecord ←レコードを削除する。
Me.AllowDeletions = False ←レコードを削除できないようにする。

Else ←Cancelがクリックされた時は以下の処理を実行する。
 ←何も処理が書かれていないので、何もしない。
End If ←If条件式の終わり

Exit Sub ←プログラムを抜け出す。

err_削除_click: ←エラーが起こった時はここへ来る。
MsgBox Err.Description ←メッセージボックスでエラーの内容を表示する。

End Sub ←プログラムの終わり

*上記のプログラムは、エラーが起こってもシステムを止めないように、エラー処理を加えています。

【10】今度は「印刷」をクリックします。

【11】印刷確認のメッセージボックスが表示されます。

【12】「はい」をクリックすると、印刷プレビューが表示されます。

*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。

---10、11、12で動いているプログラム---

Private Sub 印刷_click() ←印刷をクリックした時。

変数Resに、メッセージボックスの値を代入する。
Res = MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認")
 
  Resに「はい」が入っていた時は以下の処理を実行する。
If Res = vbYes Then
レポートをプレビューモードで表示する。
DoCmd.OpenReport "***", acViewPreview
Else←「いいえ」がクリックされた時は以下の処理を実行する。
 ←何も処理が書かれていないので、何もしない。

End If ←If条件式の終わり

End Sub ←プログラムの終わり

*今回は変数Resに一度値を代入して、それからIf条件式でどのボタンがクリックされたか判断しています。「削除」ボタンの時のように変数を使わないプログラムの書き方もできます。

13.レポートを確認したら「×」をクリックし、レポートを閉じておきます。

いかがでしたか?動作を見ながらプログラムを確認すると、理解しやすいですね。

業務システムの基本となるのは、データの追加、削除、更新、印刷ですので、ここまで学んだことで基本は習得できています。(Accessは更新は自動で行われます。)

実務で使う時にはもうちょっと処理を加えたほうが良いです。例えば1件もレコードが無い時は印刷しないとか。

とりあえずAccessで業務システムを作るということが、どんなものか掴めたのではないでしょうか。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

Accessはフォームやレポートで、VBA(Visual Basic for Application)を使ってプログラミングができます。これからフォームにプログラムを書く手順を説明します。

*今回の目標は、「プログラムを書いてみる。」ということです。
まずは動かしてみることに集中してください。

初めは動きを見てから、次にプログラムの意味を考えたほうが理解しやすいです。その逆だとかなり苦労します。

この段階では、プログラムが何を意味しているかわからなくてかまいません。そのためあえてプログラムの意味は省略しました。意味は次回にまとめて解説します。


----------------------------------------------------------------------
1.Accessのファイルを起動します。

2.画面が開きますので、オブジェクトの「フォーム」を選択します。

3.ツールバーから「コード」をクリックします。

4.VBAの画面が開きました。この画面にプログラムを書いていきます。

5.まず図のように先頭に入力します。

6.次に左のコンボボックスから「Form」、右のコンボボックスから「Load」を選択します。

7.するとFormLoad(フォームを読み込んだ時)に動くプログラムを書く場所ができました。Accessのプログラミングでは、「○○を□□した時」というようにコンボボックスで選択します。

8.「Private Sub Form_Load()」から「End Sub」がプログラムの単位です。この2行は自動で表示されますので、その間に3行プログラムを書きます。

書いている途中で、入力を助けるリストが表示されますので選択します。見た目より書く量は少ないと感じるはずです。

9.同じ要領で2つのコンボボックスで場所を作り、以下のようにプログラムを完成させましょう。(英数字や記号は半角、その他は全角です)

Option Compare Database
Option Explicit
Dim Res As Variant

Private Sub Form_Load()

Me.AllowAdditions = False
Me.AllowDeletions = False
DoCmd.SetWarnings False

End Sub

Private Sub 印刷_click()

Res = MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認")

If Res = vbYes Then
DoCmd.OpenReport "R01商品マスター", acViewPreview
Else

End If

End Sub

Private Sub 削除_Click()

If MsgBox("削除します。よろしいですか?", vbOKCancel, "確認") = vbOK Then
Me.AllowDeletions = True

On Error GoTo err_削除_click

DoCmd.RunCommand acCmdDeleteRecord
Me.AllowDeletions = False
Else

End If

Exit Sub

err_削除_click:
MsgBox Err.Description

End Sub

Private Sub 商品名_AfterUpdate()
Me.AllowAdditions = False
End Sub

Private Sub 新規_Click()

Me.AllowAdditions = True
DoCmd.GoToRecord acDataForm, "F01商品マスター", acNewRec
Me.商品名.SetFocus

End Sub


Private Sub 単価_AfterUpdate()
Me.AllowAdditions = False
End Sub

9.完成したらツールバーの「保存」をクリックして、VBAは閉じておきます。

----------------------------------------------------------------------

どうですか?プログラムの意味はひとまず置いておいて、書くこと自体はそれほど難しくないですね。ここが大事です。

とりあえず書いてみる→動かしてみる→理解する

次回に動作を確認したあと、プログラムを解説します。



>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

Accessのフォームの作り方は、レポートの手順とほとんど同じです。レポートが印刷に使われるのに対して、フォームは主にデータ入力画面に使われます。フォームも1つのテーブルから、用途に合わせて何種類も作れます。

それではフォームを作成してみましょう。

----------------------------------------------------------------------
1.前回作成したAccessのファイルを起動します。

2.画面が開きますので、オブジェクトの「フォーム」を選択し、「新規作成」をクリックします。

3.新規作成の画面が開きますので、図のように「フォームウィザード」を選択し、基になるテーブルを選び、「OK」をクリックします。

4.フォームで表示したいフィールド(列)だけを選択できます。フィールドを選択し「>」ボタンを押すと、右側に移動します。右側に移動したフィールドがフォームで表示されます。最後に「次へ」をクリックします。

5.フォームのレイアウトに「表形式」を選択し、「次へ」をクリックします。

6.スタイルでいろんなデザインを選択できます。今回は「標準」を選択し、「次へ」をクリックします。

7.フォーム名を入力し、「完了」をクリックします。

9.フォームができました。でも使いやすいようにもう少し手を加えます。

10.ツールバーの「デザインビュー」をクリックすると、フォームのデザインが編集できます。

11.フォームヘッダーのラベルと、詳細のテキストボックスの、大きさや配置を調整します。縦と横の定規を目安にしてください。

12.ボタンを配置する場所を作ります。フォームフッターをマウスで図のように下に広げます。

13.ツールバーの「ツールボックス」をクリックすると、ツールボックスが表示されます。

14.ツールボックスのウィザードをオフにした後、コマンドボタンをオンにします。

15.図のようにフォームフッターにコマンドボタンを配置します。

16.コマンドボタンをダブルクリックすると、コマンドボタンのプロパティ(属性設定画面)が開きます。「すべて」のタブをクリックし、「名前」と「標題」の両方に「新規」と入力します。設定が終わったら、プロパティを閉じます。

これでこのコマンドボタンの名前は「新規」となりました。

名前:プログラムで使いますので間違わないように注意します。
標題:画面上の表示用に使います。名前と違ってもOKですが、今回は混乱を避けるため同じにしました。

17.同じ手順で「削除」、「印刷」のコマンドボタンを作成します。名前と標題の変更をお忘れなく。それぞれ削除、印刷と付けてください。

18.フォーム左上隅の黒い四角をダブルクリックすると、フォーム自体のプロパティが開きます。

プロパティが開いたら、スクロールバーを「垂直のみ」、移動ボタンを「いいえ」に設定します。設定が終わったらプロパティを閉じます。

19.「開く」をクリックすると、フォームがフォームビュー(実行画面)で開きます。どうですか?システムっぽくなってきましたね。

20.デザインとフォームビューを切り替えながら、微調整してください。

21.編集が終わったら保存して、フォームを閉じておきます。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

テーブルを基にレポート(帳票)を作成します。Accessはデータを表示するために、フォームかレポートを使う必要があります。

一見面倒なようですが、1つのデータから、用途に合わせて何種類もの帳票が作れるのでとても便利です。エクセルだと帳票ごとにデータを保存する必要があります。

1.Accessのファイルを起動します。

2.画面が開きますので、オブジェクトの「レポート」を選択し、「新規作成」をクリックします。

3.新規作成の画面が開きますので、図のように「レポートウィザード」を選択し、基になるテーブルを選び、「OK」をクリックします。

4.レポートで表示したいフィールド(列)だけを選択できます。フィールドを選択し「>」ボタンを押すと、右側に移動します。右側に移動したフィールドがレポートで表示されます。最後に「次へ」をクリックします。

5.グループレベルを指定せずに「次へ」をクリックします。

6.並べ替えも指定せずに「次へ」をクリックします。

7.印刷形式は、レイアウトに「表形式」、印刷の向きに「縦」を選択し、「次へ」をクリックします。

8.スタイルでいろんなデザインを選択できます。選択し、「次へ」をクリックします。

9.レポート名に入力し、「完了」をクリックします。

10.これでレポートが完成しました。

11.ツールバーの「デザインビュー」をクリックすると、レポートのデザインが編集できます。

12.編集したら保存して、レポートを閉じておきます。

ウィザードを使わずに、ゼロからラベルやテキストボックスを配置しても同じようなレポートが作れますが、今回は省略します。まずシステムとして動かしてみることに力を入れたいと思います。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

フォームやレポートを作成する時、あらかじめデータが数件入っているほうがデザインを調整しやすいので、Accessのテーブルにデータを入力しておきます。

1.Accessのファイルを起動します。

2.画面が開きますので、オブジェクトの「テーブル」を選択します。

3.「開く」をクリックします。

4.テーブルの入力画面が開きますので、図のようにデータを入力してください。データ型をオートナンバーにしているので、自動で連番が入力されます。

5.入力が終わったら、ツールバーから「保存」ボタンを押して、テーブルを閉じます。

これでフォームやレポートを作る準備が整いました。

実はAccessはデータを入力した段階で自動的に保存されますので、あえて「保存」ボタンをクリックする必要はありません。しかし保存するクセを付けておいたほうがいいと思います。

複雑なフォームを作っている時や、長いプログラムを書いている途中で、パソコンが停止すると結構ショックです。保存するクセは大事です。

ある程度作業が進んだら、「保存」を心がけましょう。


今回はテーブルに直接データを入力しましたが、Accessで業務システムを作る時は、ユーザーはフォームからデータを入力できるようにします。できるだけユーザーに直接テーブルをいじらせないほうが安全です。



>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

Accessの場合、データを保存する場所であるテーブルを作る必要があります。ここがExcel(エクセル)との大きな違いです。

エクセルなどの表計算ソフトは、データの保存場所と表示場所が同じ「セル」なので、初心者でも直感的に理解できます。しかしAccessなどのデータベースソフトはテーブルを作らないと何もできません。

特にエクセルを経験したことのある人は、このテーブルを作るという段階で戸惑います。エクセルには無い考え方ですので、きっと面倒に感じることでしょう。

でもデータベースではテーブルを作る作業(設計)はとても重要です。と言っても作るのは簡単です。理論よりも、まずはテーブル作成がとういうものか体験してみることにしましょう。

注:これから先は英数字は半角、その他は全角で入力するように習慣を付けてください。

1.マイクロソフトのAccessを起動して新しいデータベースを作成します。「空のデータベース」を選択して、「OK」をクリックします。

2.好きな名前を付けて「作成」をクリックします。

3.画面が開きますので、オブジェクトの「テーブル」を選択し、「新規作成」をクリックします。

4.「デザインビュー」を選択し、「OK」をクリックします。

5.フィールド名とデータ型を図のように指定します。

6.1行を選択し、ツールバーから「主キー」をクリックします。

7.ツールバーから「保存」ボタンをクリックし、名前を付けて保存します。

----------------------------------------------------------------------

これでテーブル(データの保存場所)ができました。
テーブルを作るだけなら簡単な作業です。どう作るかという設計は難しいのですが、何度も作るうちに解ってきます。

今の段階で理論を覚える必要はないのですが、簡単にテーブルの説明をしておきます。わからなくても大丈夫です。体験していくうちに直感的にわかるようになりますから。

【簡単な解説】
・データ型に「オートナンバー」を指定したことで、新規レコード(行)を作成する度にAccessが自動で連番をふってくれます。

・商品コードに「主キー」を設定したことで、同じ番号は入力できなくなります。また主キーはその行がユニーク(他に同じものがない)ということであり、テーブル同士を結びつけるときに重要になります。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

レコードセットの種類を変更することで、データを変更できないクエリにすることができます。

▼操作手順:クエリでデータ変更されないようにする
クエリをデザインビューで開く
 ↓
画面上部の[フィールド]以外のグレーの部分をクリック
 ↓
メニュー[表示]?[プロパティ]をクリック
 ↓
[クエリプロパティ]?[レコードセット]を「スナップショット」に変更
 ↓
クエリの保存


レコードセットは取得したデータの集まりで、既定では追加・変更・削除が可能な「ダイナセット」になっています。これを変更不可の「スナップショット」にすることで、データの変更をできなくすることができるわけです。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

Excelのワークシート関数:ROUNDは四捨五入をする関数ですが、AccessのRound関数は丸めを行う関数であって四捨五入をする関数ではありません。

Round関数が四捨五入だと思っていた方は、とりあえずサンプルファイルの「Q_Round関数」クエリをご覧ください。


「1.5」「3.5」は、それぞれ「2」「4」に丸められていますが、
「2.5」は「3」ではなく「2」に丸められています。

これがAccessのRound関数の仕様なのです。

我々が一般的にイメージする四捨五入(4以下を切り捨て、5以上を切り上げ)は「算術型丸め処理」と呼ばれるのに対し、AccessのRound関数の仕様は「通貨型丸め処理」「銀行型丸め処理」と呼ばれ、「丸めた結果が偶数になるように丸められます。

なお、Access 2003などのRound関数のヘルプには、「小数点以下の指定された桁以下を四捨五入した数値を返します。」なんて書かれてしまっているので、ヘルプを是非修正していただきたいと私は思っています。

▼操作手順:正の数値の小数点以下を四捨五入する演算フィールドをクエリで作成する
([元の数値]フィールドから、[四捨五入]フィールドを作成する例)

クエリをデザインビューで開く
 ↓
フィールド欄に、
「四捨五入: Int([元の数値]+0.5)」
と記述する

元の数値に、「0.5」を加算しておいてから、Int関数で小数点以下を切り捨て、整数部分だけにするわけです。こうすれば、小数点以下を四捨五入したのと同じ結果になります。



>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

Accessでは、整数部分のみを取得するInt関数と、条件に応じて処理を切り替えるためにIIf関数を使って切り上げをすることができます。

▼操作手順:クエリで小数点以下を切り上げる演算フィールドを作成する
([元の数値]フィールドから、[切り上げ]フィールドを作成する例)

クエリをデザインビューで開く
 ↓
フィールド欄に、
「切り上げ: IIf(Int([元の数値])=[元の数値],[元の数値],Int([元の数値]+1))」
と記述する

主たる処理は、
「Int([元の数値]+1)」
の部分です。

元の数値からInt関数で整数部分のみを取得し、1を加算することでいわゆる「切り上げ」と同じ結果になるわけです。

ただ、このままだとどんなときにも1を加算する処理が行われてしまい、例えば「1.0」を切り上げしても「2」になってしまいます。

これを回避するために、IIf関数で切り分けています。

元の数値と、Int関数で処理したあとの値が等しければ、小数部分が0なので、1を加算する必要がなく、元の数値そのままで問題ありません。

このことを意味しているのが
「IIf(Int([元の数値])=[元の数値],[元の数値],」
の部分です。

上記の例では等号を使って条件判断をしていますが、下記のように不等号を使って条件判断を行い、IIf関数の第2引数と第3引数を等号を使ったときと逆に指定しても、勿論同じことです。
「切り上げ: IIf(Int([元の数値])<>[元の数値],Int([元の数値]+1),[元の数値])」

「Q_切り上げ_不等号で判定」クエリが、不等号を使って小数点以下を切り上げしている例です。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

マイクロソフト社のオフィスソフトが「Office 2007」となって、一番、戸惑うのが、いわゆる「ユーザーインターフェース」と呼ばれる、操作のために使われる「メニュー」などが、大幅に変更されたことです。

中でも、以前のバージョンで慣れ親しんで使ってきた「メニューバー」や「ツールバー」がなくなり、代わりに「Officeボタン」や「リボン」といった、見慣れないツールが一気に採用されたのは驚きでした。

◆ リボンを使用する - ヘルプと使い方(Microsoft Office Online)
http://office.microsoft.com/ja-jp/help/HA100898951041.aspx

   
もちろん、マイクロソフト社が膨大な開発費をかけて導入した新機能を盛り込んだ「Office 2007」ですから、良い点もいろいろあるはずです。

◆ 2007 Office system vs Office 2003 使い比べ十番勝負!!
http://www.microsoft.com/japan/office/2007/prodvalue/vs/


シンプルだし、場所も取らないし、そして慣れていたし...。

正直、ここまで変える必要があるのか、分かりません。

そのため、しばらく使っていれば慣れると思って我慢していたのですが、私の場合、もう1年半が経つというのに、やはりこれまでのバージョンのほうが使いやすいし、同じ意見の方は少なくないと思っています。

  
そんな方に試していただきたいのが、「Dr. あでもく」さんが公開している「Office 2007 オールドスタイル メニュー アドイン」という名のフリーソフトで、「窓の杜」でも取り上げられたスグレモノです。

◆ Office 2007 のインターフェイスを使い慣れた旧バージョン
  のスタイルに変更(窓の杜 NEWS 08/04/21)


インストールすると「メニュー」というタブが増え、その下に
懐かしい(?)各種メニューとツールバーが表示されます

◆ Dr. あでもくのページ
┃ http://members.at.infoseek.co.jp/dr_admk/ 
┗◇ Office 2007 オールドスタイル メニュー アドイン
   http://members.at.infoseek.co.jp/dr_admk/o2007oldui/

とりあえず、私の持っている2台の Windows Vista 搭載パソコンには「Office 2007」もインストールされており、この「オールドスタイルメニュー アドイン」は2ヶ月以上使っていますが、入れたことによるトラブルもなく、便利に利用しています。


◆◇◆

問題があるとすれば「リボン」の使い方に慣れるのが遅れてしまうことかもしれませんが、何年もかかって従来の「ワード」や「エクセル」の使い方に慣れたのに...、という人にとっては、ありがたいツールです。

私は Windows Vista 上の「Office 2007」でしか検証していませんが、「コントロールパネル」の「プログラムのアンインストール」できちんとアンインストールできることも確認済みです。

◆ インストール方法 | トラブルシューティング
http://members.at.infoseek.co.jp/dr_admk/o2007oldui/install.html

使い込んでくると「カスタマイズできない」など、ちょっと物足りなく感じる部分もありますが、完全無料でここまでよくできたツールを公開してくださっている「Dr. あでもく」さんには、ただ感謝するのみです。

もちろん、いつものように導入は「自己責任」が基本の「フリーソフト」なので、最終的にはご自身の責任と判断でご利用ください。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

▼操作手順:テーブルでカスタム書式を設定する
※マイナスの数値に△をつけ桁区切りカンマを表示する例
テーブルをデザインビューで開く
 ↓
書式を設定する数値型データのフィールドを選択
 ↓
[フィールドプロパティ]?[書式]に
 「#,##0;△#,##0」と入力


セミコロンの前の「#,##0」がプラスの数値と0のときの書式、セミコロンの後の「△#,##0」がマイナスの数値のときの書式です。

Excelでユーザー定義書式を使ってらっしゃる方なら、難しくないはずです。

「#,##0」
はExcelでもお馴染みの3ケタ区切りのカンマを表示する書式指定方法で、
「;」セミコロンが一つのときにセミコロンの前が正の数と0の書式、セミコロンの後が負の数の書式というのもExcelと同じです。

その負の数・マイナスの数値を指定する「;」セミコロンの後に
「△#,##0」
と指定してありますから、先頭に「△」が表示され、3桁ごとの桁区切りカンマも表示されるわけです。

桁区切りカンマが不要ならば、
「0;△0」
マイナスの数値を「△」ではなく「▲」をつけ、桁区切りカンマも表示するなら
「#,##0;▲#,##0」
と指定してください。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

以前のバージョンではメニュー[ツール]?[データベースユーティリティ]に、最適化を行うコマンドが存在しましたが、Access 2007ではそもそも[ツール]に該当するようなタブがリボンに存在しません。

そのためにいただくご質問です。

▼操作方法:最適化と修復を行う
[Officeボタン]
 ?[管理]
  ?[データベースの最適化/修復]をクリック


上記のようにAccess 2007では[Officeボタン]内に[データベースの最適化/修復]コマンドが配置されています。

アクセスファイルを開いた状態で実行すると、開いているファイルの最適化と修復が開始され、ファイルを開いていない状態で実行すると、最適化・修復を行うファイルを指定するダイアログが表示されます。

なお、[データベースの最適化と修復]コマンドがAccess 2007でどこにあるのかも、リボンマッピングブックにしっかり記載されています。

以前のバージョンから2007に乗り換えた方はご自分の利用しやすいフォルダにリボンマッピングブック(accessmap.xls)を置いておき、疑問が生じたときに随時確認するといいんじゃないでしょうか。



>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

2003までのAccessでは、メニュー[ツール]?[起動時の設定]をクリックして表示される、[起動時の設定]ダイアログで、アプリケーション作成に必要な設定を簡単に行うことができます。

ユーザーインターフェースの大きく変更になったAccess 2007で、この[起動時の設定]ダイアログはどこから表示できるのか、同様の機能はどこにあるのか、というご質問です。

▼操作方法:Access 2007で2003までの起動時の設定ダイアログと同様の設定を行う

[Officeボタン]
 ?[Accessのオプション]ボタンをクリック
 ↓
[Accessのオプション]ダイアログ
 ?[カレントデータベース]をクリック
 ↓
設定変更後
[Accessのオプション]ダイアログ
 ?[OK]ボタンをクリック

2003までとは見た目も随分違いますが、Access 2007では上記のように[Accessのオプション]ダイアログ?[カレントデータベース]で、2003までの[起動時の設定]ダイアログと同様の設定を行うことができます。

Access 2007にバージョンアップした方はご確認ください。

この件に限らず、Access 2007で
「あのコマンドはどこに行ったんだろう?」
という疑問がある場合、まずはリボンマッピングブック(コマンド対応表)をご覧になることをおすすめします。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

テーブルの作成|アクセス

user-pic

テーブルはそのつど最初から作る
テーブルはプログラムによって違いますから、最初からフィールド名を入力していくしかありません。
といっても、フィールド名と文字列の場合の長さと、インデックスの設定だけです。


新規に作る場合の手順を説明しておきます。
まずオブジェクトのウインドからテーブルを選んで、作成の中のテーブルデザインを選びます。

テンプレートは使わないで最初から作ります。

白紙のデザイン画面が出ます。
ここに、登録していきます。


フィールド名、データ型、説明の項目があります。
説明欄は入力する必要はありませんが、内容をメモしています。
1行ごとに、そのフィールドの細かい設定が下にあるプロパティでできます。
たくさん項目がありますが、登録するのはデータ型によって下記の項目だけでいいです。

・テキスト型?[フィールドサイズ]、[インデックス]
 [フィールドサイズ]は文字数です、漢字は1文字で数えます。少し長めにとっておけばいいでしょう。ただし、5桁にした場合、99999人までの登録しかできません
 [インデックス]は、検索にその項目を使ったりする場合に[あり(重複あり)]にしておきましょう。

ここで主キーのついて説明しておきます
テーブルには1つだけ主キーを設定しておきましょう。フィールド名にカーソルがあるときに、右ボタンをクリックして、主キーをクリックします。するとキーのアイコンが付きます。
主キーが設定されたフィールドは、[インデックス]が[あり(重複なし)]となり、このフィールドに同じ内容の文字(あるいは数字)が登録できなくなります。
とりあえず、一番大事なコード的なフィールドに主キーを必ず設定すると覚えてください。

・数値型?[フィールドサイズ]
 [フィールドサイズ]は通常、長整数型でいいでしょう。9億くらいまでまでの数値が扱えます。
 ただし、小数点以下の数値を扱う場合は、単精度浮動小数点型か倍精度浮動小数点型を使います。

・日付型?日付型の場合はプロパティは関係ないです。
 [インデックス]を[あり(重複あり)]にするくらいでしょうか。
 [インデックス]をあまり意識することはありません、設定されていなくても並び替えもできますし、検索もできます、スピードが落ちると感じることも、通常ありません。

説明の欄については、そのフィールドのことについて少し書いておけば、後で見たときに、わかりやすいです。

これで、できました。
新規でテーブルを作った場合、ウィンドを閉じると、テーブル名を聞いてきます。


名前を付けて登録しましょう。
名前は、後からでも変えられます。
ただし、プログラムをどんどん作ってから、変更すると修正が大変ですから、テーブル名、フィールド名はよく考えて付けましょう。
テキスト型の場合のフィールドサイズの変更は、プログラムができあがってからでも簡単に変更できます。たとえば、データが長い場合、長さを大きくしても他に何も影響ありません。
ただし、長さを小さくする場合は、登録されているデータが切られてしまいますので注意してください。


>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

リレーションシップとは、個々のテーブルがどのように関わり合っているかを線をつないで、登録することによって作られます。
リレーションシップは登録しなくても、データとしては使えるのですが、必ず登録するようにしてください。データの矛盾を防ぐことができますし、クエリーを作るときにも解りやすいです。
何より、リレーショナルデータベースの特徴がここに集約されているのです。


「データベースツール」のリレーションシップを選んでください

白紙のウィンドが出ます。
メニューから?「デザイン」?「テーブルの表示」を選びます

ここで、すべてのテーブルを追加で、下のウインドに出します。

【例】勤務先番号を例にとって説明します。
勤務先番号を1クリックでドラッグしてもう一つの勤務先番号の上でドロップします(どちらからでもかまいません)


参照整合性にチェックを付けます。
「結合の種類」ボタンをクリック


データが1対1になる場合は、一番上になります。
「OK」ボタンで登録して、作成ボタンで、作成します。

このように、リレーションシップを登録します。

最後にウィンドを閉じて、リレーションシップのレイアウトの変更を登録して、終わりです

少し複雑かもしれませんが、重要な部分です。
作っているうちに、慣れてきますので、あまり難しく考えないでください。


フィールドの連鎖更新とフィールドの連鎖削除のついて、話をしておきます。
リレーショナルデータベースの場合、リレーションシップで登録しているコードが複雑な関係で、相互に影響をあたえます。
たとえば、片方のデータのコードを変更すると、相手に存在する同じコードも自動で変更してくれるのが連鎖更新です。一方のデータが削除された場合、その下に存在する、明細的なデータを自動で削除してくれるのが、連鎖削除です。連鎖削除の場合、連鎖データを削除していいかどうかの、確認画面が出てしまいます。

ただ、こういった重要なコード変更や削除はプログラマー自身がプログラムの中で、自分で管理しなければいけないものだと考えます。データベースに任せてしまうべきものではないのです。
したがって、サンプルプログラムでは、この機能は使いません。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

フォームには、帳票フォームと単票フォームの2種類あります。
ここでは、帳票フォームを使った入力を説明します。
帳票フォームは、一覧表になっていて、次の行に移ったときに、データが1レコード登録される仕組みになっています。
フィールド数が少なく入力チェックは必要ないようなデータ入力に使います。



>文書作成代行
>パソコン企業研修
>パソコン教室 
>パソコンの家庭教師BEST

フォームをメニューから呼び出したり、閉じたりボタンをクリックした時に、何をさせるかという命令をマクロを使って記述していきます。

仮定として、以下をを使ってみます。
クエリー:「qu区分削除」
フォーム:「fo区分」「fo区分削除選択」
マクロ:「ma区分」

まず、マクロの「ma区分」のデザインを見てください


マクロ名と条件の列がない場合は、上のメニューの「デザイン」の、マクロ名と条件をクリックしてください。
マクロは、多くの場合フォームから呼び出して実行します。
たとえば、「ma区分.削除選択を開く」というマクロを呼び出すと、アクションの所にかかれている、処理を上から順番に実行していきます。
一連の処理をいくつでも処理させることができます。

マクロには、たくさんの処理があります。今ここで全てを説明できませんし、全てを覚える必要もありません、サンプルプログラムでの使い方を真似して、コピーして使っているうちに慣れてきますし、サンプルで使っていないものも使えるようになるでしょう。


次に、フォーム「fo区分」のデザインを見てください


フォームの下にウィンドが1つありますが、フォームで使ういろんなコントロールの設定をするためのプロパティなので、常に開いておきます。
開いていない場合は、上のメニューから「デザイン」?「ツール」?「プロパティ」で開いてください。

フォーム全体の設定をします。
終了ボタンの1センチ右のあたり(何もない所)をクリックします。
すると、プロパティのウィンドの表題がフォームになります。フォーム全体の設定ができます。
ここで、見るべき項目は次のものです。
[レコードソース]:入力したいテーブル(あるいはクエリー)の名前をコンボボックスから選択
[表題]:ウインドの左上に出る、フォームの表題
後の項目は、変更する必要は無いでしょう。

ここで大事なことは、帳票フォームを新しく作るときは、以前作ってある帳票フォームをコピーして[レコードソース]と[表題]を変更して作るということです。
新規でフォームを作成すると、もっとたくさんの項目を設定していかなければいけません。
[レコードソース]と[表題]を変更した後、入力項目のコントロールソースを変更するだけで、簡単に帳票フォームは新しく作ることができます。

プロパティの下の方に、○○時というのがたくさん並んでいます。
これは、このフォームで起こるイベント(マウスがクリックされる、閉じる、開く等・・・)の項目が並んでいます。これらの項目発生時にどう処理するかということを指定することによって、プログラムが構築されていきます。
全てのコントロール(フォーム、フォームの中の入力コントロール、ボタン等)に内容は少しずつ違いますが各種イベントがあります。
その内容、使い方に関してはサンプルを見ていただければ、だいたい解ると思います。
全てを最初に理解する必要はありませんし、ほとんど使わないようなものもあります。

それでは、フォームに貼ってある、コントロールを見てみましょう。

・ラベルコントロール
フォームヘッダーにある、区分名のところをクリックしてみてください。
プロパティのウィンドの表題がラベルになっています。ラベルのコントロールです。
これは、入力項目が何であるかを教えるための文字を表示するためのコントロールです。
フォームに中に文字を表示するためのものと考えて下さい。
このコントロールのプロパティの見るべき項目は、次のものです。
[標題]:表示したい文字です。
[名前]はAccessが自動で付けてくれますので、そのままでいいです。
他に、色の設定等がありますが、これはプログラムを作る人の好みですので、気に入ったものをいくつか作っておいて、コピー貼り付けで使えば修正する必要はありません。

・テキストボックスコントロール
詳細にある、区分名のところをクリックしてみてください。
プロパティのウィンドの表題がテキストボックスなっています。データが入力され、実際にデータが表示されるコントロールです。
一番よく使われるコントロールです。
このコントロールのプロパティの見るべき項目は、次のものです。
[名前]:コントロールソースと同じにしておいてください。
[コントロールソース]:コンボボックスから選びます
[書式]:ここは、日付、数値などによって様々なものが入ります。サンプルを参照してください。後でたくさん出てきますので、後で確認できます。文字列の場合は特に入力する必要はありません。
[定型入力]:日付の入力の時などに使います。
[規定値]:ここで指定しておくと、入力前から指定したものが入っています。たとえば生年月日の和暦を入力する欄などでは、昭和を規定値にしておくと実際昭和の人が多いですから、コンボボックスから選ばなくても、そのまま通過できて、入力が早くできるといったものです。
[IME入力モード保持]:いいえにいておきましょう
[IME入力モード]:漢字で入力する場合は、ひらがなにしておきます。オンは使わないでください。データベースをバージョンアップした時に、半角カナとかに変わってしまう場合があります。数値入力の場所は、使用不可にしておきます。オフと使用不可の違いは、オフの場合はキーボードから漢字のボタンを押すと漢字が入力出来てしまいますが、使用不可の場合は漢字ボタンに反応しませんので、漢字入力は不可能です。
[ふりがな]:名前を入力したときに、ふりがなの項目に自動でフリガナを転記してくれます。後の説明で出てきます。
[住所入力支援]:郵便番号を入力すると自動で住所が転記されます。次回の住所録のバージョンで追加予定です。
[可視]:ここをいいえにしておくと、デザイン画面でしか見えません。集計用の日付のコントロールで使っています。後の説明で出てきます。
[使用可能]:いいえにすると、見えるけれど、マウスでクリックしても止まらない項目になります。
[編集ロック]:はいにすると、マウスでクリックすると止まりますが編集はできない項目になります。
[タブストップ]:いいえにするとタブキーで移動していっても、止まりません。フォームの詳細の中のボタン(通常の入力では使わないけど、何かを検索するときだけ押されるボタン等)を貼ってある場合等では便利です。マウスでクリックすれば使えます。

他に、色の設定等がありますが、ラベルコントロールと同じで、プログラムを作る人の好みですので、気に入ったものをいくつか作っておいて、コピー貼り付けで使えば修正する必要はありません。

ここにも、イベント発生時の処理を指定する項目があります。
後の説明で出てきます。

・コマンドボタンコントロール
詳細にある、削除のボタンをクリックしてみてください。
プロパティのウィンドの表題がコマンドボタンなっています。
ここでは必要なときだけ、マウスでクリックしてもらいます。したがって、[タブストップ]はいいえになっています。
このコントロールのプロパティの見るべき項目は、次のものです。
[名前][標題]:同じにしておきましょう。(見栄えをよくするために標題の方にスペースを入れたりする場合有り)
フォームフッターの、終了ボタンをクリックしてみてください。
標題に&Xと付いています。これは、Altキーを押したまま、Xのキーボードを押すと、マウスを移動してそこをクリックしなくても、このボタンがクリックされたのと同じ結果になる、いわゆるショートカットキーの設定です。マウスを使わなくても通常の登録がどんどんできるようにするためのものです。

これは、ボタンですので、クリックされたときに、必ず何か処理があるはずです。
削除ボタンの場合、クリック時にマクロの削除確認のフォームを開くように指定してあります。
終了ボタンでは、自分自身のフォームを閉じるマクロが指定されています。
イベントの発生と処理の書き方が、おわかりいただけたでしょうか?

メインメニューで区分登録のボタンがクリックされた時のクリック時に、このフォームを開くマクロが指定されています。
そこで、このフォームが開きます。
データを入力したり、編集したりします。
終了ボタンがクリックされると、このフォームが閉じられて、下にあるメインメニューに戻るといった具合です。



>文書作成代行/データ入力代行サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール 
>パソコンの家庭教師BEST

削除処理で使っている、削除クエリーについて説明しておきます。

その前に、削除の確認フォームを作っています。
削除ボタンがクリックされた瞬間に削除されてしまっては、困ります。
「何かな?と思ってクリックしたら、消えてしまった」ということになりかねません。
削除とか、データ更新のような、大事な処理の前には、確認画面が必要です。
「はい」、「いいえ」だけを確認するのはフォームを作らなくてもできるのですが、今後の学習に使いますので、あえてテーブル毎に削除選択画面を作っています。

簡単なフォームです。
フォーム「fo区分削除選択」のデザインを見てください。
標題だけ設定されていて、レコードソースがありません。
レコードソースが無いフォームもあるのです。

コントロールも2つのボタンとメッセージのラベルだけです。
削除するか、中止するかだけの処理しかしません。
こういった、小さなメニューのようなフォームはよく使いますので、これを複製して作ってください。

それでは、削除クエリーに移ります。
「削除する」ボタンをクリックした場合、マクロから、クエリーの「qu区分削除」が呼び出されて、実行されます。

それではクエリー「qu区分削除」のデザインを少しながめて、閉じて下さい
実際に同じものを作ってみます。
クエリーも、テーブルと同じで、新しいプログラムを作る時には、1つずつ作っていかなければなりません。

削除クエリーは次の手順で作ります
データベースウィンドでクエリーを選びます。
新規作成をクリック。
ウィンドが開いて、一番上のデザインピューが規定値で選ばれていますから、OKボタン
テーブルの「ta区分」を選んで、追加ボタン
閉じるボタンで、テーブルの表示ウィンドを閉じます。
テーブルの表示ボタンは、上のメニューから「デザイン」「クエリ設定」の中の「テーブルの表示」でいつでも出せます。
白紙のクエリーに「ta区分」が1つあります。
上のメニューから「クエリー」「削除」で削除クエリーにします。
「ta区分」の中から、区分名をドラッグアンドドロップで、下の空白の左端の列のどこでもいいですから、落とします。
その列の抽出条件にマウスをもっていき、右ボタンをクリックします。
ウィンドが開きますから、ビルドをクリックします。
いろんな条件式等の入力を助けてくれる、ウィンドが開きます。
下の左端の窓のフォームをダブルクリック、その中の、すべてのフォームをダブルクリック。
そうすると、「fo区分」が下の方にありますから、それをクリック。
中央の窓の区分名をダブルクリック。
最後に右上のOKボタンをクリック。
抽出条件は入りました。
「ta区分」の中の一番上にある、"*"(アスタリスク)をドラッグアンドドロップで、抽出条件の設定をした列の右の列のどこでいいですから落とします。
完成しました!
クエリーをウィンドの右上の×をクリックして閉じます。
名前を聞かれますので、名前を付けて保存する。(ここではキャンセルしておいてください)
このような流れになります

慣れてくれば簡単な作業です。
他のクエリーを作る場合も、同じようなで順です。
通常新規でクエリーを作ると選択クエリーが作られます。

今作った削除クエリーは、左端に抽出条件、隣の列に削除されるテーブルがあるといった感じです。
左端の抽出条件のないクエリーを作って実行した場合は、そのテーブルの全てのデータが削除されます。作業用の一時データを保存するテーブルを削除するときに使われます。これは後の説明で出てきます。



>文書作成代行
>パソコン企業研修
>パソコン教室
>パソコン教室久喜市 
>パソコンの家庭教師BEST

test

user-pic

Access(アクセス)