
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も見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
限定しりとり
文字数6文字以上の単語でしりとりしましょう
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
Access クエリの結果が0件だった場合、エラーを表示させる方法
Access(アクセス)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
-
4
accessで該当するレコードがない場合
その他(プログラミング・Web制作)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
7
アクセスVBAのMe!と[ ]
Access(アクセス)
-
8
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
9
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
10
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
-
11
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
12
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
13
アクセスで『0の値以外』を表示する方法
Access(アクセス)
-
14
新規レコード行を非表示にしたい
Access(アクセス)
-
15
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
16
accessのクエリで、該当するデータがなかったときの処理
Access(アクセス)
-
17
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
18
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
19
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
20
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
Access 抽出したデーターの詳細...
-
ACCESSあいまい検索から入力まで
-
AccessでIDを入力したら他の項...
-
ACCESS クエリのデザインビュ...
-
Access 抽出したフォームをフ...
-
ACCESS2000 抽出されたレコー...
-
ACCESSで、EXCELのような、sumi...
-
ACCESS2007 マクロ クエリのパ...
-
フォーム上でレコードを抽出し...
-
ACCESSで、フォームで抽出した...
-
access クエリでIIF文で抽出条...
-
クエリ実行結果0件の場合のフ...
-
AccessでログインIDを抽出条件...
-
アクセスのフォームに連番を表...
-
アクセス2003のカレンダー...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ACCESS 複数のフォームから同一...
-
Access2000 サブフォームのReco...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
クエリ実行結果0件の場合のフ...
-
ACCESSで、EXCELのような、sumi...
-
ACCESS2007 マクロ クエリのパ...
-
ACCESS フォームで抽出したデー...
-
アクセスのフォームに連番を表...
-
ACCESS2003のグループ化のエラ...
-
access クエリでIIF文で抽出条...
-
クエリーの結果をフォームに表...
-
フォームからクエリの抽出期間...
-
Accessでフィルタの実行アクシ...
-
AccessのフォームをExcelに出力
-
VarChar型をINT型に変換するには
-
ACCESSで、フォームで抽出した...
-
ADOレコードセットのコピー
-
Access 抽出したフォームをフ...
-
Accessクエリの抽出条件にフォ...
-
サブフォームを利用したクエリ...
-
【Access2000】月末の日付を条...
おすすめ情報