こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessのフォームで値が見た目変更されない

はじめまして、こんにちは。

Accessを使用して自社ツールを作成しています。

バージョン:Access2003
OS:WindowsXP

フォームのレコードソースに、あるテーブルを連結させて一覧にして表示しています。
複数のコンボボックスを用意して、選択された値によって検索をかけ、
レコードソースの値を書き換えて再表示しています。

この検索はコンボボックスの更新後処理にVBAでSQLを記述して行っています。

Dim str_sql As String
str_sql = str_sql & "select * from T_テーブルA where ○○コード = 1"
Me.RecordSource = str_sql

かなり省略していますが、実際はコンボボックスで選択された値によって
SQLを生成しています。

フォームにはtxt_件数という名前でテキストボックスを用意してあります。
レコードソースを設定した後に、同じ条件でカウントし件数を表示しようと
しているのですが、これがうまくいきません。

Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0)

件数が1件でもある時は正しい値が表示されます。
0件の場合は前回の表示のまま見た目上かわりません。

例)
1回目の検索で200件→テキストボックス[200]と表示
2回目の検索で0件→テキストボックス[200]と表示
3回目の検索で10件→テキストボックス[10]と表示

このような感じです。
ただし、実際は正しい値[0]が設定されているみたいです。
別のウインドウを一度フォームにかぶせて避けると[0]になりますし、、
2回目で[200]と表示されているものをコピーすると[0]がコピーされます。

Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0)
If Me!txt_件数 = 0 Then
Me!txt_件数 = 0
End If
馬鹿げていますが、このようにしても正しく[0]が表示されませんでした。

Accessを再起動しても状態は変わらず、困っています。
環境の問題でしょうか?
解決策など解る方いらっしゃいましたら教えてください。

よろしくお願いいたします。

投稿日時 - 2011-06-16 16:28:01

QNo.6813856

すぐに回答ほしいです

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

Me!txt_件数 = Nz( DSum("1", "T_テーブルA", "○○コード = 1"), 0)

上記でテストして下さい。

私は、件数集計は上記で行っています。

投稿日時 - 2011-06-17 17:35:07

お礼

教えていただいたように記述しても表示されませんでしたが、
こんな書き方もあるのだと勉強になりました。

Me!txt_件数.Requeryをつけてみたらうまく表示できました。
独学でやってるのでいまいち解っていないのですが;;

Me!txt_件数 = Nz( DSum("1", "T_テーブルA", "○○コード = 1"), 0)
Me!txt_件数.Requery

2度も投稿していただき、ありがとうございました。

投稿日時 - 2011-06-20 09:50:42

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0)

の後に

DoEvents

を実行したら表示されると思います。

投稿日時 - 2011-06-16 18:12:12

お礼

指定の場所にDoEventsを追加してみましたが、状況は
変わりませんでした。

ご回答ありがとうございました。

投稿日時 - 2011-06-17 09:54:42

あなたにオススメの質問