Accessのテーブル/クエリでレコードが1件もない時、そのテーブルを基にして作成したフォームを開こうとする場合は、[データがありません]というメッセージウィンドウを表示する方法です。
以下の例では、[生産停止商品]ボタンをクリックしたときに、メッセージウィンドウを表示しています。
[T_生産停止商品]というテーブルがあり、そのテーブルを基にフォーム[F_生産停止商品]を作成しています。
参考ここでのウィンドウの表示は、[ウィンドウを重ねて表示する]を選択しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
[コードビルダー]と[マクロビルダー]を使用する方法を記していますが、どちらも動作は同じです。その相違については、以下の記事で解説しています。
-
マクロアクション(マクロビルダー)とVBA(コードビルダー)
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
設定後のプロパティには、[イベントプロシージャ]と表示されます。
これで、[F_menu]フォームの[生産停止商品]ボタンをクリックすると、テーブル[T_生産停止商品]のレコードが0件の場合は[データがありません]というメッセージウィンドウが表示されます。
以下は、コードビルダーで設定した時のメッセージウィンドウです。
参考ウィザードを使ったコマンドボタンの作成は、以下の記事で解説しています。
-
コマンドボタンウィザードを使用したボタンの作成
Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...
クリック時イベントの[マクロビルダー]で設定
マクロビルダーでも同じように設定できます。
コマンドボタンのプロパティを開いて[イベント]タブの[クリック時]のビルドボタン[...]をクリックします。
以下の[ビルダーの選択]ダイアログボックスが表示されます。[マクロビルダー]を選択して、[OK]ボタンをクリックします。
[新しいアクションの追加]の▼ボタンをクリックして、メニューから[If]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
テキストボックスに以下を入力します。
Dcount("*","T_生産停止商品")=0
[新しいアクションの追加]で今度は、[メッセージボックス]を選択します。下方へスクロールすると見つけられます。
メッセージのテキストボックスに、表示したいテキストを入力します。ここでは、以下のように入力します。
データがありません
メッセージの種類やタイトルについては、以下の記事を参考にしてください。
メッセージの種類の選択肢は、以下の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つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...