Accessフォームでの関連項目検索について

このQ&Aのポイント
  • Accessフォームを使用して関連項目の検索を行いたい場合、カウントや件数を表示する方法があります。
  • 関連項目1〜3の中に特定の数字が入っているレコードの人数や件数を求めることができます。
  • 具体的な手順としては、フォームをデザインし、コマンドボタンを配置し、ボタンを押すと関連項目のカウントや総件数を表示するようなVBAコードを記述します。
回答を見る
  • ベストアンサー

Accessフォーム(コード?)でカウントしたい

T_マスタテーブル ・ID ・氏名 ・関連項目1 ・関連項目2 ・関連項目3 とあり、 関連項目1~3までには1~10のどれかの数字が入っています。 このデータから、例えば、 ・関連項目1~3の中のどれかに3が入っている人は何人か? ・関連項目1~3の中のどれかに3が入っている件数は何件か?(のべ件数) ということをだしたいのです。 「F_関連項目検索」というフォームをデザインから作成し、コマンドボタンを押すと それぞれの件数と総件数を表示したいのです。 イメージ図としては        ┏━┳━┓ ┏━━┓ 関連項目  ┃ ┃▼┃ ┃検索┃        ┗━┻━┛ ┗━━┛         ┏━━┓ 関連項目1 ┃   ┃         ┗━━┛         ┏━━┓ 関連項目2 ┃   ┃         ┗━━┛         ┏━━┓ 関連項目3 ┃   ┃         ┗━━┛         ┏━━┓ 総件数    ┃   ┃         ┗━━┛ というような感じです。 どのようにすればできるでしょうか? Ac2000です。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

間違ってました。 次の3つの行を訂正して下さい。 Me!関連項目.Caption = CStr(KanCount1) を、 Me!関連項目1.Caption = CStr(KanCount1) に訂正 Me!関連項目.Caption = CStr(KanCount2) を、 Me!関連項目2.Caption = CStr(KanCount2) に訂正 Me!関連項目.Caption = CStr(KanCount3) を、 Me!関連項目3.Caption = CStr(KanCount3) に訂正 以上です。 では。

KODAMAR
質問者

お礼

すばやい回答ありがとうございます! ちゃんと数字が表示されました! でも。。。全部0なんです。 一体どこがダメなんでしょう?? またしてもですが、宜しくお願いします。。。

KODAMAR
質問者

補足

すいません!こちらのミスでした! きちんと計算されました! ありがとうございました!! 今後も宜しくお願いします♪

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 いつもご苦労様です。 [検索]ボタンのクリックイベントに以下のように書きます。 なお、関連項目1~3と総件数は表示するだけなので、ラベルコントロールとします。 Dim KanCount1 As Long Dim KanCount2 As Long Dim KanCount3 As Long Dim AllCount As Long KanCount1 = DCount("関連項目1", "T_マスタテーブル", "関連項目1 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount1) KanCount2 = DCount("関連項目2", "T_マスタテーブル", "関連項目2 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount2) KanCount3 = DCount("関連項目3", "T_マスタテーブル", "関連項目3 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount3) AllCount = KanCount1 + KanCount2 + KanCount3 Me!総件数.Caption = CStr(AllCount) DCount関数は、テーブルで、条件に合致するデータ数を返す関数です。詳細はヘルプを参照して下さい。 ちなみにこの場合、複数の関連項目に値が入っていると、総件数ではその人は複数回カウントされます。(のべ件数だからこれでいいと思いますが) では。

KODAMAR
質問者

補足

こんにちは。 >いつもご苦労様です。 いえいえ、いつもありがとうございます。(^^; >関連項目1~3と総件数は表示するだけなので、ラベルコントロールとします。 ということですが、「Aa」マークのでいいんですよね?(恥) -------------------- Private Sub コマンド9_Click() Dim KanCount1 As Long Dim KanCount2 As Long Dim KanCount3 As Long Dim AllCount As Long KanCount1 = DCount("関連項目1", "T_マスタテーブル", "関連項目1 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount1) KanCount2 = DCount("関連項目1", "T_マスタテーブル", "関連項目2 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount2) KanCount3 = DCount("関連項目1", "T_マスタテーブル", "関連項目3 = " & CLng(Me!関連項目.Value)) Me!関連項目.Caption = CStr(KanCount3) AllCount = KanCount1 + KanCount2 + KanCount3 Me!総件数.Caption = CStr(AllCount) End Sub -------------------- コードは上記のようにしましたが、実行すると 「実行時エラー'438'; オブジェクトは、このプロパティまたはメソッドをサポートしていません。」 となります。 どこが間違っているんでしょうか? またしても申し訳ないのですが、回答宜しくお願いいたします。

関連するQ&A

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • ACCESSでのフォームから固定値での更新に関して

    初歩的な質問で申し訳ありません。 教えて下さい。 社員マスタテーブルと評価テーブルが以下の項目で存在しています。 《社員マスタ》  社員マスタ、氏名 《評価テーブル》  社員マスタ、評価、年月 上記内容をフォームを使って、社員番号、氏名、評価、年月 という項目を 表示させ、社員番号が存在するまで評価を手入力するというような仕掛けを考えています。 表示は参照クエリで社員番号をキーにして両テーブルを結合させ、フォームに出力しています。 上記条件の中で、フォームのヘッダーへ年月を入力する欄を設け、そこに入力されたデータで、 追加されるデータの年月を全て入力された年月にしたいと考えております。 何か良い記述?の方法はありますでしょうか。。。 教えて頂きたいと思います。 よろしくお願いします。

  • Accessのフォームで

    教えてください。下のようなテーブルがあり、これを元にフォームを作成したいのですがいい方法が見つかりません。 【テーブル】  品物テーブル(品物ID、品物、製作所)  社員テーブル(品物ID、社員コード、氏名) このテーブルを元にして下のようなフォームを作りたいのです。 【フォーム】  品物ID [テキストボックス]  品物 [テキストボックス]  製作所 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス] ※社員コード、氏名が3つあるのは、同じ品物を3人が作成することがあるため。(この部分で悩んでいます) このようなフォームを作ることは可能でしょうか? また参考になるようなサイトなどあれば教えてください。 よろしくお願いします。

  • ACCESSのフォームを使っての住所録の検索なのですが,

    Accessのフォームを使って住所録から,データを抽出し,その結果をまず表示,その後ラベルシールに印刷をしたいのですが,フォームでの検索は,テーブルのすべての項目について複数の項目を同時検索をできるようにしたいです。 テーブルの構造はごく普通の住所録です。データ件数は8万件ほどです。 どういう方向で作業を進めるべきか分からないのですが,こういった場合は,まず,検索用のフォームを作成し,コマンドボタン(検索・印刷)を配置して, それに対してイベントかマクロの記述をするんだろうなとは思うのですが・・・ 私が思うに,抽出結果を格納するテーブル・検索フォーム・ラベル印刷用のレポートが必要なのだろうと思いますが,それらが何でつながっていくのかが分かりません。参考書などでは,一つ一つのことが別々に書いてあって作業の全体像が分かりません。作業の方向と必要なスキルが同程度などか詳しい方教えてください。

  • access 検索フォームで検索が出来ない(コードについて)

    accessにて、薬の在庫管理DBを構築しています。 「薬剤名」で検索をし、フォーム上に表示させたいと思っていますが、 コード記述をしても検索出来ず、かれこれ2~3週間悩み続けております。 一人で四苦八苦しながら作って居るため、 原因が良く分からず、質問させて頂きます。 よろしくお願い致します。m(__)m 視覚的に説明します。              f_薬剤マスター ~フォームヘッダ~ 非連結のtxt 「薬剤検索」    「検索」ボタン     ※2つがあります ~詳細~ 「薬剤ID」 「薬剤区分ID」「薬剤区分名」 「薬剤名」 「包装内容」 「包装量」 「単位」「適用チェック」 とあります。 フォームヘッダの検索ボタンのイベントプロジーシャに Private Sub コマンド20_Click() Me.Filter = "[薬剤名] Like '*" & Me!薬剤検索 & "*'" Me.FilterOn = True End Sub と記述をしていますが、薬剤名を入れて、コマンドボタンを押しても検索がかけられません。 この「f_薬剤マスター」をメインフォームとして、 サブフォーム 「f_仕入れマスター」と 「f_価格マスター」と 言う順で2つ連結させていますがその関係もあるのでしょうかせいなのでしょうか? 尚、この3つのフォームのリレーションは t_薬剤マスター → t_仕入れマスター → t_価格マスター と、いづれも 1対多 でリレーションを組んでいます。 初心者の為何がおかしいのか良くわかりません。 どなたかご教授の程お願い致します。m(__)m

  • Accessのフォームについて教えてください。

    こんばんは。アクセス入門者です。 入門書やできるシリーズなどいくつかのアクセスの本を見たのですが、 フォームについて、理解できません。 ●担当者マスタ ■客先マスタ ★コードマスタ ▲売り上げ計画マスタ ◎売上げ結果マスタ テーブルを作り、それぞれのテーブルから必要な項目を集めて、クエリを作成しました。思ったとおりの結果になったので、これを元にフォームを作成しました。 思ったとおりの結果が表示されるのですが、このフォームに入力が出来ません。できなかったので、次の方法を試しました。 ★コードマスタと▲売り上げ計画マスタのデータをサブフォームに配置しデータを追加させようと思って、あらたにフォームを作りました。やはり、思ったとおりの表示はされるのですが、追加ができないのです。それぞれのテーブルには、★コードマスタを主にそれぞれ、一対多にリレーションを組んでいます。 1つのフォームで色々なテーブルに結果を反映できるように、参照整合性の更新、削除にもチェックを入れました。 この考えは間違っているのでしょうか。 ○○マスタとあるように、それぞれ1つのテーブルに1つのフォームにしなければならないのでしょうか。 複数のテーブルから取り出したデータの更新は無理なのでしょうか。 ある程度、クエリまで完成したのにフォームでつまずいて苦しんでいます。ご解答宜しくお願い致します。

  • Access テーブルのデータをフォーム上で、検索したい

    こんにちは。Access で簡単な貸出管理データを作っています。 現在、貸出フォームは作ったのですが、 返却フォームを作る際、 今度は、一度テーブルに保存した貸出記録データを 返却フォームで検索して、表示したい場合、どのように したらよろしいでしょうか? 貸出フォームでは、 テーブル1、社員ID、氏名、電話番号 テーブル2、備品ID、備品名、貸出日、返却予定日、 社員ID、氏名、電話番号 これをサブフォームを使ってつくりました。 このテーブル2のデータを返却フォームで検索して、 (備品IDか社員IDで) 表示させたいと思っています。 よろしくお願い致します。

  • ACCESS フォーム設計

    ACCESS2003を使用して、基本情報と明細のテーブルとフォーム設計をしています。基本テーブルに担当者IDと氏名があり、明細テーブルにも担当者IDと氏名があります。明細のフォームで、担当者IDを入力したら、基本情報にある担当者名を自動表示し、明細テーブルに書き込みたいのですが、=DLookup("[氏名]", "[基本情報]", "[担当者ID] = " & Forms("明細")("[担当者ID]")) を指定しても、うまく動作しません。明細フォームの氏名のコントロールソースを空白にしても、テーブルとリンクしてもだめです。 又、明細の更新フォームとして、担当者IDを入力したら、該当レコードの内容を全て表示し、変更内容を入力後、同一主キーでUPDATEモードで書き込む方法も教えてください。

  • Access フォームの参照先について

    こんにちは!いつもこのサイトにはお世話になっています。 今日お聞きしたいことはタイトルにも簡単に書いたのですが、 例えば「社員マスタ」というテーブルを元に「社員マスタ」という 名前のフォームを作成したとします。 その後何らかの事情でテーブル名が「社員マスタ」から「社員名簿」 へ変わってしまった場合、もちろんフォームから「社員マスタ」を開こう としても開きません。 ただ「社員マスタ」フォームには参照先のテーブルの項目にあわせて 幅を調整したり、検索機能を付けたりしているので、 参照するテーブル名が変わっただけでまたフォームを1から作成する のはどうも効率が悪くてしかたありません。 フォームの内容はそのままに参照するテーブルの名前だけを変更する 方法がありましたらご教授お願いします。 ※「社員マスタ」テーブルと「社員名簿」テーブルは名前が変わった だけで、内容は全く変わりません。

  • Access2003 検索用フォームでの検索がうまくいかない

    Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

専門家に質問してみよう