質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

5456閲覧

帳票形式サブフォームのレコード数の増加のタイミングについて

numnum

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2015/12/15 10:17

はじめまして。 お世話になります。
帳票形式サブフォームのレコード数の増加のタイミングについてご教授ください。
##環境
現在Acceess 2016を使用しています。Access2000で作成されたmdbファイルをaccdbファイルに変換して動作チェックを行っております。
##現状
0. フォーム1にサブフォーム2を作成しそれぞれフォーム1にはクエリ1、サブフォーム2にはクエリ2をレコードソースとして設定しています。
0. サブフォーム2帳票形式でコンボボックス1から値を選択するとそれをクエリ2から参照して、テキストボックス2に値を代入しています。
0. サブフォーム2上のテキストボックス1に"=Count()"と入れていて、そのテキストボックス1の値を条件に条件分岐しています。
0. 自分で調べた所、"=Conut(
)"は、レコードソースの数をカウントするとなっていましたが、クエリ1、クエリ2共に1万件近いデータが入っています。

  1. フォーム1を開いた時点では、テキストボックス1の値は0(ゼロ)になっています。
  2. サブフォーム2をフォーム1の参照エラーを無視しながら開くと、クエリ2の件数がテキストボックス1に代入されています。
  3. テキストボックス2に値が入るとテキストボックスの値は1ずつ増えていきます。
  4. VBAをテキストボックス1の名前で検索しても、条件文にしか記載されておらず、どこかでテキストボックス1の値を変えていることはありません。

##疑問点
0. 現状から、サブフォームの帳票形式では、コンボボックス1からテキストボックス2に値を入れた(検索された時?)時に、サブフォームで扱うクエリ2のレコード数が決定し、1ずつ増えて行くという認識であっているのでしょうか?
0. もし違っていればどういうタイミングで、帳票形式の"=Count(*)"の数は増加するのでしょうか?

具体的なコードが長いので、抽象的ですが質問させて頂きました。わかりにくくて申し訳ありません。
宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

自分で調べた所、"=Conut(*)"は、レコードソースの数をカウントするとなっていましたが、

その認識は間違いですね。
フォームのレコードセットのレコード件数になります。
いいかえると、フォームに表示されているレコード件数です。

レコードソースの件数とフォームに表示されているレコード件数が同じとは限りません。
フィルターがかかっていたり、サブフォームにリンクフィールドが設定されていると、レコードソースの全件が表示されないですので。

フォーム1を開いた時点では、テキストボックス1の値は0(ゼロ)になっています。

その時に、サブフォームにはレコードが表示されていない(レコード件数 0)のでは。
サブフォームのリンク親フィールド、リンク子フィールドが設定されているか、フィルターを掛けるような処理をしていませんか。

現状から、サブフォームの帳票形式では、コンボボックス1からテキストボックス2に値を入れた(検索された時?)時に、サブフォームで扱うクエリ2のレコード数が決定し、1ずつ増えて行くという認識であっているのでしょうか?

新規レコードで入力した後、レコード保存アクションを起こした時にテーブルに追加されます。
レコード保存アクションはいろいろありますが、例えば、レコード移動、レコードセレクタのクリック、Shift+Enter などです。

もし違っていればどういうタイミングで、帳票形式の"=Count(*)"の数は増加するのでしょうか?

=Count(*) の値が変更されるのは、フォームに表示されているレコード件数が変更された時です。

新規レコードを追加した時、既存レコードを削除した時、フィルターの抽出条件が変更されて表示件数が変わった時、などです。

投稿2015/12/15 16:09

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

numnum

2015/12/24 08:12

F9でRecalcされている事が分かりました。他の要素が邪魔をしてまだつかめていないところが多いのですが、助かりました。ありがとうございました。 また、=Count(*)についても詳細にご教授頂けたので、BAといたしました。
guest

0

Requery.サブフォーム2等コマンドが有ればそこで更新されてるのではとももいます。
Requeryはフォームを最新に更新いたします。

http://www.happy2-island.com/access/gogo03/capter40303.shtml

でRequeryに付いて解説してますので参考にしてみてください。

投稿2015/12/15 10:32

kakeru

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

numnum

2015/12/24 08:12

F9でRecalcされている事が分かりました。他の要素が邪魔をしてまだつかめていないところが多いのですが、助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問