今回は『クエリの実行結果時、レコードのあるなしを判断する』ということですが、私が作成した例では、データがあればレポート印刷を実行、データがなければ(0)そのまま何もしないというコードを書きました。
何もしないと何も起きないので、今回はデータがあるならメッセージボックスに『データあり』、何もなければ『データなし』と表示するように作ってみたいと思います。
目次
【AccessVBA】クエリ実行結果時、レコードのあるなしを判断する
流れの確認
商品リストの中から『売価修正日』が『本日の日付』(2017/12/04)のデータを抽出する。
該当データがある場合はデータをレポートで印刷、該当データがない場合はメッセージボックスで『データなし』と表示する。
クエリの確認
商品リストのクエリには本日のデータを抽出するために抽出条件に『Date()』を使います。
※いろいろテストで作成したものなので、リレーションがごちゃごちゃしているのでご了承ください。
ちなみにクエリで日付を使って抽出する場合は以下のようなものを使います。
クエリでの日付を使った抽出条件
Accessでは『Today』関数がありませんので、Excelでなじみのある『Today』関数が使えません。Accessでは『Date』関数を使います。
クエリでの日付を使った抽出条件 | |
---|---|
昨日 | Date()-1 |
今日 | Date() |
明日 | Date()+1 |
【AccessVBA】フォームでボタンを作ってコードを書く
フォームでボタンを作って、『クリック時』に以下のコードを書きます。
実行時コード
Private Sub 実行_Click()
If DCount("*", "商品リスト クエリ") = 0 Then
MsgBox "データなし"
Else
DoCmd.OpenReport "商品リスト クエリ"
End If
End Sub
解説
Dcount関数で『商品リスト クエリ』にレコードがあるかないか確認します。
レコードが0の時はメッセージボックスに『データなし』と表示し、レコードがある時は、レポート『商品リスト クエリ』を印刷します。
まとめ
Accessでは『Today』関数はないので、『Date』関数を使用して抽出するようにしましょう。
今回のようにデータのあるなしを判断してメッセージボックスに表示させたり、印刷を実行したり、該当データがある時だけ、フォームを開くことができるなど、使い方によっていろいろと使えるコードだと思います。
最後までお読みいただきありがとうございました。