スポンサーリンク

2016年10月28日金曜日

フォームに2つのサブフォームを配置しリンクする

Access2013のフォームに2つのサブフォームを配置しリンクする方法です。

はじめに、共通フィールドを持つサブフォームを2つ作っておいてください。

親となるフォームを作成し、レコードソースにサブフォームと共通フィールドを持つテーブルかクエリを指定します。
レコードソースにサブフォームと共通フィールドを持つテーブルかクエリを指定する

リボンの[フォーム デザインツール]~[デザイン]~コントロールグループの[サブフォーム/サブレポート]を選択し、親フォームに配置します。
[サブフォーム/サブレポート]を選択し、親フォームに配置する

サブフォームを選択し、[ソースオブジェクト]に一つ目のサブフォーム名を指定します。
自動的に[リンク親フィールド][リンク子フィールド]に、共通フィールドが表示されます。
もし表示されない場合は指定します。
[ソースオブジェクト]に一つ目のサブフォーム名を指定する

2つ目のサーブフォームを配置し、[ソースオブジェクト]に2つ目のサブフォーム名を指定します。
[ソースオブジェクト]に2つ目のサブフォーム名を指定する

フォームビューにします。
親フォームのレコードセレクタでレコードを移動すると、2つのサブフォームにリンクされたデータが表示されます。
下のフォームの場合、親フォームで1つの商品を選択すると、商品マスターとその商品の販売履歴が表示されます。
2つのサブフォームにリンクされたデータが表示される

関連する記事
関連する記事
サブフォームの作成方法 その1
サブフォームの作成方法 その2
サブフォームの作成方法 その3
サブレポートの挿入方法

フォームにデータシートを表示する方法

Acess2013で、フォームにデータシートを表示する方法です。

リボンの[作成]~[フォームデザイン]をクリックし、フォームを作成します。
[フォームデザイン]をクリックし、フォームを作成する

プロパティのレコードソースに、データシートを表示するテーブルかクエリを指定します。
プロパティのレコードソースを指定する

プロパティの[既定のビュー]をデータシートにします。
プロパティの[既定のビュー]をデータシートにする

1.リボンの[フォームデザインツール]~[デザイン]の[既存のフィールドの追加]をクリックします。
2.データシートビューに表示するフィールドを選択します。 フィールドの位置やサイズなどを設定する必要はありません、選択するだけでOKです。
データシートビューに表示するフィールドを選択する

フォームビューにすると、データシートが表示されます。
フォームビューにすると、データシートが表示される

関連する記事
関連する記事
既存のテーブルをデータシートビューかデザインビューで開く
データシートビューでフィールドを挿入する
データシートビューでフィールド順を変更する
フォームデザインによる入力フォームの作成方法入門
サブフォームの作成方法 その1

2016年10月24日月曜日

クエリとSQLの関係は?

SQLとはクエリで実行できる、選択・集合・更新・削除などの元になるプログラム言語のようなものです。

クエリでできないことでも、SQLを使えばできることがあります。
SQLを使えばデータベース全体の処理を一発でできてしまうので、クエリでできなければSQLを使うようになります。

ここでは、クエリからSQLを作り、逆にSQLからクエリを作ってみます。

●クエリからSQLを作る

クエリをデザインビューで開き、リボンの[表示]~[SQLビュー]をクリックします。
[SQLビュー]をクリックする

これでSQL文が表示されます。
下の場合「SELECT フィールド名 FROM テーブル名」と表示されています。
SQL文が表示された

●SQLからクエリを作成します。


新規クエリを作成し、リボンの[SQL]をクリックします。
リボンの[SQL]をクリックする

SQL文を入力します。
SQL文を入力する

リボンの[表示]~[デザインビュー]をクリックします。
[表示]~[デザインビュー]をクリックする

これでクエリが表示されました。
クエリが表示された

以上のようにSQLを使い易く、簡単に作成できるようにしたのがクエリだとわかります。

関連する記事
関連する記事
SQLビューでSELECT文を使ったSQLを入力する
クエリデザインで選択クエリを作成する方法

2016年10月14日金曜日

VBAでフォームを開くコードとエラー発生時の対処方法

Access2013のVBAでフォームを開くコードと、エラー発生時の対処方法です。

下記のVBAコードでフォームを開くことができます。
ここでは標準モジュール内に作成しましたが、ボタンのクリックイベント内などでもよく使います。

Option Compare Database

Sub MenuFormOpen()
    DoCmd.OpenForm "F_メニュー"
End Sub

VBAコードでフォームを開く

もしもエラーが発生した場合のことを考え、「On Error Goto」を使いメッセージとエラーの理由を表示するようにします。
これにより操作者は自分で対処できたり、管理者にどのようなエラーか知らせることができます。

Option Compare Database

Sub MenuFormOpen()
On Error GoTo ErrEnd
    DoCmd.OpenForm "F_aメニュー"
    Exit Sub
  
ErrEnd:
    MsgBox "エラーが発生し、フォームを開くことができません。" & _
        vbCrLf & Err.Description
End Sub

メッセージとエラーの理由を表示するようにする

エラーが発生すると、下のメッセージが表示されます。
エラーが発生するとメッセージが表示される

関連する記事
関連する記事
ボタンをクリックすると、別のフォームを開き自分を見えなくする
起動時にメニューフォームを開くには
VBAでフォームを閉じるボタンを作成する
検索フォームを作成する

2016年10月9日日曜日

クエリでテーブルを結合する方法

Access2013のクエリでテーブルを結合する方法です。

結合する1つ目の「T_商品テーブル」です。
結合する1つ目の「T_商品テーブル」

結合する2つ目の「T_商品販売テーブル」です。
この2つのテーブルは「商品ID」が共通フィールドになっています。
結合する2つ目の「T_商品販売テーブル」

クエリデザインで1つ目の「T_商品テーブル」を配置しています。
クエリデザインで1つ目の「T_商品テーブル」を配置する

次に2つ目の「T_商品販売テーブル」を配置すると、下のようの共通フィールドの「商品ID」が結合線で結ばれます。
下のように矢印がない線で結ばれることを「内部結合」といいます。
内部結合とは、「両方のテーブルの結合フィールドが同じ行だけを含める」ことをいいます。
内部結合

表示するフィールドを選択します。
表示するフィールドを選択する

クエリを実行すると、内部結合の結果が表示されます。
内部結合の結果が表示

結合線をダブルクリックすると、結合プロパティが表示されるので「左側結合」にします。
左側結合とは、「(1つ目のテーブル)の全レコードと(2つ目のテーブル)の同じ結合フィールドのレコードを含める」ことをいいます。
結合プロパティが表示されるので「左側結合」にする

左側結合にすると、結合線の右端に矢印が表示されます。
左側結合にすると、結合線の右端に矢印が表示

クエリを実行すると、左側結合の結果が表示されます。
左側結合の結果が表示

次に「右側結合」にします。
右側結合とは、「(2つ目のテーブル)の全レコードと(1つ目のテーブル)の同じ結合フィールドのレコードを含める」ことをいいます。
右側結合

右側結合にすると、結合線の左端に矢印が表示されます。
右側結合にすると、結合線の左端に矢印が表示

クエリを実行すると、右側結合の結果が表示されます。
右側結合の結果が表示

関連する記事
関連する記事
クエリウィザードで選択クエリを作成する方法
クエリデザインで選択クエリを作成する方法
追加クエリを作成する
不一致クエリを作成する
更新クエリの作成方法
よく使うクエリの抽出条件の一覧

2016年10月1日土曜日

よく使うクエリの抽出条件の一覧

Access2013で、よく使うクエリの抽出条件の一覧です。

抽出条件はクエリデザインの下画面の矢印位置に記入します。
抽出条件の記入位置

●数値の抽出条件

値に完全一致 123
どちらかを含む 123 or 456
指定値より小さい値 <123
指定値 以下 <=123
指定値より大きい値 >123
指定値 以上 >=123
指定範囲内 Between 123 and 456
指定範囲外 <123 or >456
値リスト In(123, 456, 789)

●テキストの抽出条件

値に完全一致 "あいう"
値に一致しない Not "あいう"
どちらかを含む "あいう" or "かきく"
指定文字を含む Like "*あいう*"
指定文字を含まない Not Like "*あいう*"
Nullを含む Is Null
Nullを含まない Is Not Null
値リスト In("あいう" , "かきく")

●日付・時刻の抽出条件

値に完全一致 #2015/10/01#
値に一致しない Not #2015/10/01#
どちらかを含む #2015/10/01# or #2015/11/15#
指定日より前 < #2015/10/01#
指定日より後 > #2015/10/01#
指定期間内 Between #2015/10/01# and #2015/11/15#
指定期間外 < #2015/10/01# or >#2015/11/15#
値リスト In(#2015/10/01#, #2015/11/15#)

関連する記事
関連する記事
指定条件以外のレコードを抽出する
抽出条件を入力する入力フィルターでレコードを抽出する
クエリでLike演算子を使いあいまい抽出をする
クエリでAND条件を使い複数条件で抽出する
クエリでOR条件を使い複数条件のどちらかで抽出する