
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でクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
-
4
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
7
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
8
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
9
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
10
accessで該当するレコードがない場合
その他(プログラミング・Web制作)
-
11
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
12
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
13
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
14
accessのクエリで、該当するデータがなかったときの処理
Access(アクセス)
-
15
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
16
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
17
アクセスで『0の値以外』を表示する方法
Access(アクセス)
-
18
Access サブフォームでの選択行の取得
その他(データベース)
-
19
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
20
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
AccessのフォームをExcelに出力
-
AccessでログインIDを抽出条件...
-
アクセスのフォームに連番を表...
-
Access2002のフィルタ機能について
-
アクセス2007 フォームフィル...
-
ACCESSで抽出したデータだけ印...
-
(続き)accessでの2段階クエリの...
-
Accessの使い方
-
ACCESS2007 マクロ クエリのパ...
-
ACCESS2003のグループ化のエラ...
-
ACCESSで、EXCELのような、sumi...
-
フォームからクエリの抽出期間...
-
ACCESSのレポートにフォームの...
-
Accessで月ごとのレポートを出...
-
レコード→CD
-
入力した値をコンボボックスに...
-
ACCESSでの画面更新について
-
Accessのコンボボックスでリス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
クエリ実行結果0件の場合のフ...
-
ACCESSで、EXCELのような、sumi...
-
ACCESS2007 マクロ クエリのパ...
-
Accessでフィルタの実行アクシ...
-
Access 抽出したフォームをフ...
-
ACCESS2003のグループ化のエラ...
-
アクセスのフォームに連番を表...
-
フォーム上でレコードを抽出し...
-
access クエリでIIF文で抽出条...
-
AccessでログインIDを抽出条件...
-
ACCESSで、フォームで抽出した...
-
フォームからクエリの抽出期間...
-
Access 抽出したデーターの詳細...
-
ACCESSあいまい検索から入力まで
-
アクセス2003のカレンダー...
-
クエリーの結果をフォームに表...
-
ADOレコードセットのコピー
-
ACCESS2000 抽出されたレコー...
おすすめ情報