Access初心者です。
テーブルのデータをクエリで抽出し、フォームで表示しようと考えています。
たとえば、
「テーブル1」に、「ID」「氏名」「部署」「趣味」のフィールドが、
「結果表示フォーム」にも対応するレコードソースを持つボックスがあり、
「条件指定フォーム」に「部署」という名のボックスと、「マクロ1」を割り当てた「ボタン1」がある場合に、
「テーブル1」を基にした「クエリ1」で、「部署」の抽出条件に「[条件指定フォーム]![部署]」と設定し、
「マクロ1」では、「クエリ1」をフィルタにして、「フォームを開く」コマンドで「結果表示フォーム」を開きたいと考えています。
この場合、
「条件指定フォーム」の「部署」ボックスにたとえば「総務部」と入力して「ボタン1」をクリックすると、「テーブル1」中に総務部の社員がいれば「結果表示フォーム」は問題なく展開しますが、「総務部」の社員がデータ中にないときには、すべてのテキストボックスが空欄のまま「結果表示フォーム」が展開してしまいます。
そこで、
「クエリ1」実行の際、結果のレコード数が0件の場合には、「結果表示フォーム」の展開を中止してメッセージボックスを表示するような修正を「マクロ1」に追加したいと思います。
どのような条件付けをすればよいでしょうか。
どなたかよいアドバイスをお願いいたします。
No.2ベストアンサー
- 回答日時:
マクロの条件で
Dcount("*","クエリ1")<>0 →フォームを開く
ではどうでしょう?
又は、
Dcount("*","クエリ1")=0 →メッセージボックス
... →マクロの中止
→フォームを開く
o23さん、ありがとうございました。
おかけで、無事に思い通りの動きをさせることができました。
マクロのレベルでしたら自分でも理解ができましたので、アドバイスがとても役に立ちました。
簡単そうでなかなか自分では思いつかないものですね。
Dcountと「*」の組み合わせなど、なるほど、という感じでした。
No.1
- 回答日時:
初心者にしては、滅茶苦茶に難しいことに挑戦されていますね。
私なんて生まれて初めて同じことをやってみました。
さて、ここでマクロを改良するのは至難です。
が、その程度のことは、オープンするフォームに4行程度のVBAコードを書けば達成できます。
Private Sub Form_Open(Cancel As Integer)
Cancel = CBool(Me.RecordsetClone.RecordCount = 0)
If Cancel Then
MsgBox "該当するレコードがありませんのでフォームオープンをキャンセルします!"
End If
End Sub
なお、一般的にはこの手法も稀だと思いますよ。
Private Sub コマンド4_Click()
On Error Resume Next
Dim intCount As Integer
Dim lngBango As Long
If Len(Me.伝票番号 & "") > 0 Then
lngBango = Me.伝票番号
intCount = DCount("*", "売上伝票", "伝票番号=" & lngBango)
If intCount > 0 Then
DoCmd.OpenForm "売上伝票", , , "伝票番号=" & lngBango
Else
MsgBox "該当するレコードがありませんのでフォームオープンをキャンセルします!"
End If
End If
End Sub
このように、先ず、条件指定フォームの条件欄が入力されているかをチェックするでしょう。
If Len(Me.部署 & "") > 0 Then
次に該当するレコードが存在するか否かをチェックするでしょう。
intCount = DCount("*", "XXXX", "部署='" & Me.部署 & "'")
If intCount > 0 Then
該当するレコードが存在すると
DoCmd.OpenForm "XXXX", , , 部署='" & Me.部署 & "'"
で、条件を指定してフォームをオープンします。
もちろん、この場合には、Form_Open()でのキャンセル文は不要です。
Husky2007さん、ありがとうございました。
(1)条件欄入力の有無のチェック
(2)該当レコード存在の有無のチェック
(3)条件指定によるフォーム展開
という3段階に分けての処理、なるほどと思いました。
このようにすればエラーになることはないですね。
とても参考になりました。
VBAにはなかなか手が回りませんが、ご教示いただいた点を参考にしつつ、勉強してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access クエリの結果が0件だった場合、エラーを表示させる方法
Access(アクセス)
-
accessで該当するレコードがない場合
その他(プログラミング・Web制作)
-
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
-
4
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
5
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
6
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
7
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
8
アクセスVBAのMe!と[ ]
Access(アクセス)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
Access VBAでクエリーのレコード件数を取得したいのですが
その他(データベース)
-
11
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
12
Accessクエリ 複数フィールドを対象に空白の場合は全件表示したい
Access(アクセス)
-
13
access・カウント結果がゼロでも、「0」を表示させるには?
その他(データベース)
-
14
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
15
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
16
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
17
アクセスのフィルタ nullについて。
その他(データベース)
-
18
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
19
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
20
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
ACCESSで、EXCELのような、sumi...
-
クエリ実行結果0件の場合のフ...
-
Accessクエリの抽出条件にフォ...
-
クエリーの結果をフォームに表...
-
ACCESS2003のグループ化のエラ...
-
VarChar型をINT型に変換するには
-
サブフォームを利用したクエリ...
-
AccessマクロのWhere条件式でタ...
-
ACCESS フォームで抽出したデー...
-
Access 抽出したデーターの詳細...
-
ACCESSあいまい検索から入力まで
-
Accessでフォームに自動入力し...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ACCESS 複数のフォームから同一...
-
インデックスまたは主キーにはn...
-
access別のテーブルを参照して...
-
前のレコードの値を自動で入れたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
ACCESSで、EXCELのような、sumi...
-
クエリ実行結果0件の場合のフ...
-
ACCESS2007 マクロ クエリのパ...
-
Accessクエリの抽出条件にフォ...
-
access クエリでIIF文で抽出条...
-
ACCESSで、フォームで抽出した...
-
サブフォームを利用したクエリ...
-
ACCESS フォームで抽出したデー...
-
ADOレコードセットのコピー
-
ACCESS クエリのデザインビュ...
-
ACCESS2003のグループ化のエラ...
-
VarChar型をINT型に変換するには
-
アクセスのフォームに連番を表...
-
AccessのフォームをExcelに出力
-
クエリーの結果をフォームに表...
-
AccessでログインIDを抽出条件...
-
Accessのパラメータクエリ作成...
-
Access 2段階のクエリの作り方
おすすめ情報