Windows 7 & Office 2010 Access 2010

テーブル/クエリにレコードが1件もない時にメッセージを表示する

投稿日:2017年1月7日 更新日:

Accessのテーブル/クエリでレコードが1件もない時、そのテーブルを基にして作成したフォームを開こうとする場合は、[データがありません]というメッセージウィンドウを表示する方法です。

以下の例では、[生産停止商品]ボタンをクリックしたときに、メッセージウィンドウを表示しています。

メッセージボックス

[T_生産停止商品]というテーブルがあり、そのテーブルを基にフォーム[F_生産停止商品]を作成しています。

参考ここでのウィンドウの表示は、[ウィンドウを重ねて表示する]を選択しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

[コードビルダー]と[マクロビルダー]を使用する方法を記していますが、どちらも動作は同じです。その相違については、以下の記事で解説しています。

[マクロビルダー]と[コードビルダー]を使う場合に気をつけること

Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一 ...

続きを見る

レポートの場合は、プロパティの[空データ時]イベントで設定することができます。

印刷するレコードがない場合はメッセージを表示して印刷を中止する

Accessのレポートで印刷を実行しようとしても、該当するデータがない場合があります。 印刷プレビューで確認すれば、印刷を実行せずに済むかも ...

続きを見る

クリック時イベントの[コードビルダー]で設定

フォーム[F_menu]の[生産停止商品]ボタンをクリックして[F_生産停止商品]フォームが開くようにします。

コマンドボタンのプロパティを開いて[イベント]タブの[クリック時]のビルドボタン[...]をクリックします。

参考[F4]キーを押すと、プロパティシートを開くことができます。

コマンドボタンのプロパティ

以下の[ビルダーの選択]ダイアログボックスが表示されます。[コードビルダー]を選択して、[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

[クリック時]イベントに下のように入力します。

Private Sub 生産停止商品_Click()

Dim RCount As Long
RCount = DCount("*", "T_生産停止商品")

If RCount = 0 Then
MsgBox "データがありません"

Else
DoCmd.OpenForm "F_生産停止商品"

End If

End Sub

コードの入力

設定後のプロパティには、[イベントプロシージャ]と表示されます。

プロパティのクリック時[イベントプロシージャ]

参考ウィザードを使ったコマンドボタンの作成は、以下の記事で解説しています。

ウィザードを使ったコマンドボタンの作成

Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...

続きを見る

クリック時イベントの[マクロビルダー]で設定

マクロビルダーでも同じように設定できます。

コマンドボタンのプロパティを開いて[イベント]タブの[クリック時]のビルドボタン[...]をクリックします。

コマンドボタンのプロパティ

以下の[ビルダーの選択]ダイアログボックスが表示されます。[マクロビルダー]を選択して、[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

[新しいアクションの追加]の▼ボタンをクリックして、メニューから[If]を選択します。

[新しいアクションの追加]のメニューから[If]を選択

テキストボックスに以下を入力します。

Dcount("*","T_生産停止商品")=0

マクロアクション[If]のテキストボックスにDcount関数を入力

[新しいアクションの追加]で今度は、[メッセージボックス]を選択します。下方へスクロールすると見つけられます。

[新しいアクションの追加]で[メッセージボックス]を選択

メッセージのテキストボックスに、表示したいテキストを入力します。ここでは、以下のように入力します。

データがありません

メッセージの種類やタイトルについては、以下の記事を参考にしてください。

MsgBox関数について

メッセージの種類の選択肢は、以下の4つになります。ここでは[なし]を選択しています。

[メッセージタイトル]が空白の場合は、[Microsoft Access]と表示されます。

メッセージの種類

[Elseの追加]をクリックします。

メッセージボックスのテキストボックスにメッセージを入力

[新しいアクションの追加]でマクロアクション[フォームを開く]を選択します。

[新しいアクションの追加]で[フォームを開く]を選択

[フォーム名]の▼ボタンをクリックして、フォーム名を指定します。

[フォーム名]にプルダウンからフォームを指定

以下のようになればOKです。上書き保存してマクロウィンドウを閉じます。

[上書き保存]と[閉じる]ボタン

設定後のプロパティには、[埋め込みマクロ]と表示されます。

プロパティのクリック時[埋め込みマクロ]

これで、[F_menu]フォームの[生産停止商品]ボタンをクリックすると、テーブル[T_生産停止商品]のレコードが0件の場合は[データがありません]と表示されます。

以下は、コードビルダーで設定した時のメッセージウィンドウです。

メッセージボックス

マクロビルダーで設定したメッセージウィンドウは、以下のようになります。

マクロビルダーで設定したメッセージウィンドウ

データ(レコード)がある場合は、[F_生産停止商品]フォームが開きます。

DCount関数については、Microsoftの記事を参照してください。

DCount 関数 - Access(Microsoft)

レポートの場合は、プロパティの[空データ時]イベントで設定することができます。

印刷するレコードがない場合はメッセージを表示して印刷を中止する

Accessのレポートで印刷を実行しようとしても、該当するデータがない場合があります。 印刷プレビューで確認すれば、印刷を実行せずに済むかも ...

続きを見る

関連以下は、Dcount関数に関する記事です。

重複データが入力されたらオリジナルのメッセージを出す

Accessのフォームで受付番号を入力するように作成しています。 受付番号を入力したときに、既に入力済みの番号であればメッセージウィンドウを ...

続きを見る

0を除く平均値を求めるには(Sum関数とDCount関数)

Accessでアンケート集計を作成することになりました。 各質問に[0から5]の5段階の評価をつけもらうことにしました。 ただし、[0]は、 ...

続きを見る

重複しないデータの個数とレコードの抽出件数を自動表示

Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...

続きを見る

オートナンバー型を使わずに自動的に連番を入力する

Accessのテーブルでコードなどに、オートナンバー型を使っているとなにかと不便を感じることもあります。 番号に欠番が生じた場合、再度、番号 ...

続きを見る

フィールドの同じ値の数をカウントするにはクエリでグループ化

クエリのグループ化は、グループごとに集計できる便利な機能です。 たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...

続きを見る

検索

ほかの記事も検索してみませんか?

Profile

執筆者/はま

-Windows 7 & Office 2010 Access 2010

Copyright © 2001-2022 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2022 AllRights Reserved Powered by AFFINGER4.