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

このQ&Aのポイント
  • Accessのフォームで値が見た目変更されないという問題が発生しています。フォームのレコードソースにテーブルを連結させて一覧表示しており、コンボボックスの選択値によって検索をかけてレコードソースの値を書き換えています。しかし、検索結果が0件の場合でもテキストボックスの表示が前回の値のまま変わらないという問題が発生しています。正しい値は設定されており、一時的な表示上の問題のようですが解決方法が分かりません。Accessを再起動しても状態は変わらず、困っています。
  • Accessのフォームで値が見た目変更されないという問題が発生しています。フォームにはテーブルを連結させて一覧表示し、コンボボックスの選択値によってレコードソースの値を書き換えています。検索結果が0件の場合でもテキストボックスの表示が前回の値のまま変わらないため、正しい値を表示する方法を探しています。Accessを再起動しても問題は解決せず、困っています。
  • Accessのフォームで値が見た目変更されない問題が発生しています。フォームのレコードソースにテーブルを連結させて一覧表示し、コンボボックスの選択によってレコードソースを書き換えています。検索結果が0件の場合でもテキストボックスの表示が前回の値のまま変わらず、正しい値を表示する方法が分かりません。Accessを再起動しても問題は解消せず、解決策を求めています。
回答を見る
  • ベストアンサー

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を再起動しても状態は変わらず、困っています。 環境の問題でしょうか? 解決策など解る方いらっしゃいましたら教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • ricman
  • ベストアンサー率58% (10/17)
回答No.2

Me!txt_件数 = Nz( DSum("1", "T_テーブルA", "○○コード = 1"), 0) 上記でテストして下さい。 私は、件数集計は上記で行っています。

hinahinaka
質問者

お礼

教えていただいたように記述しても表示されませんでしたが、 こんな書き方もあるのだと勉強になりました。 Me!txt_件数.Requeryをつけてみたらうまく表示できました。 独学でやってるのでいまいち解っていないのですが;; Me!txt_件数 = Nz( DSum("1", "T_テーブルA", "○○コード = 1"), 0) Me!txt_件数.Requery 2度も投稿していただき、ありがとうございました。

その他の回答 (1)

  • ricman
  • ベストアンサー率58% (10/17)
回答No.1

Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) の後に DoEvents を実行したら表示されると思います。

hinahinaka
質問者

お礼

指定の場所にDoEventsを追加してみましたが、状況は 変わりませんでした。 ご回答ありがとうございました。

関連するQ&A

  • フォーム上のテキストボックスの値を変更させない方法って?

    アクセス2000を使っています。 フォーム上にテキストボックスを作成して、テーブル の値を表示しています。 VBAでこのテキストボックスの値が1の時は, me!txt.enabled=true(テキストボックスが開く) 0の時は、me!txt.enabled=false(テキストボックスがグレーアウト)というようにさせたいのです。さらにこのテキストボックスの値を変更できないようにしたいのですが方法はありますか? 要は、表示だけさせたいのです。 プロパティで値ロックするとenableが利かなくなります。 よろしくお願いいたします

  • access2003コンボボックスの質問です

    Access2003+sql2005で コンボボックスのテーブルに顧客マスタ(顧客コード+顧客名)を値集合にセットしています。 最大レコード件数を10万にしているのですが、中身はちょうど1万件しか入ってきません。 コンボボックスは1万件が最大なのでしょうか? ご存知の方、教えて下さい。

  • フォームのプロパティを設定したい(Access2000)

    Access2000 XPです。 都道府県名が1レコードに1つずつ入っているテーブルと 各都道府県名のテーブルが47コあります。 新規でフォームを作成し(フォームのレコードソースはまだ未設定) コンボボックスを1つ置いて、値集合ソースに都道府県テーブルを設定し コンボボックスで選ばれた都道府県にフォームのレコードソースを変更しようと思っています。 Me.RecordSource=コンボボックス.text 単純にこれで良いと思うのですがエラー(入力された値は、フィールド又はコントロールで定義されている入力規則に従っていません)が出て全然更新されません。 どなたか分かる方、解決法をお願いします。。。

  • ACCESS2000 VBA フォームのコントロールに値を転記

    <やりたいこと> 保存されているレコードのフィールド値を修正するために、修正用非連結フォームを開くとき、当該レコードの値を転記したい。 <できないこと> コンボボックスに値が転記できない。 (テキストボックスには値が転記できる。) Private Sub Form_Load() Dim Sql As String Sql = "SELECT* FROM T_履歴 WHERE NO.=" & Key & ";"  'KeyはPublic変数、別のフォームモジュール内で値が格納されている。  'Keyによって、レコードはひとつに絞られている。 Dim DB As ADODB.Connection Set DB = CurrentProject.Connection Dim RS As New ADODB.Recordset RS.Open Sql, DB, adOpenForwardOnly, adLockOptimistic, adCmdText Me!氏名combo = RS!氏名 ↑この式で思うような結果が得られない。  .Text .Value のプロパティを付加しても結果は同じ。  ACCESS97ではこのように コンボボックス名="値" で、  値が代入され、コンボのソースの中からその値が選ばれた状態になったのに…。  

  • アクセス コンボボックス値をレポートに反映

    アクセス初心者の為、やりたい事を検索しコードコピー等真似ることで どうにか作っている状態です。 現在あと一歩のところでつまずいてしまったのでお力添え頂けると助かります。 環境:アクセス2003 ------------------------------------------------------------------------------ フォームのコンボボックスで表示された値と一致するレコードを下にあるテキストボックスで表示  ⇒レポートにその値を反映させたい ------------------------------------------------------------------------------ フォーム上: 送付先:「A社」 (コンボボックスで選択) 担当者:「Aさん」 (コンボボックスで選択するとテキストボックスで表示) 現在の状況: フォーム上ではコンボボックスの値、その値と一致するレコードを該当テーブル(T_送付先)から テキストボックスに表示されている。 レポート上でだけ何故か送付先の部分が元テーブル(T_送付先) の送付先ではなく(フォームでは表示されてるのに) 数字が代わりに表示されてます。 担当者のテキストボックスにはフォームと同様に表示されてます。 ------------------------------------------------------------------------------ フォーム上にある送付先のコンボボックスには↓ Private Sub コンボ8_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ID] = " & Str(Nz(Me![コンボ8], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub ------------------------------------------------------------------------------ フォームの送付先を表示するテキストボックスには↓ =[Forms]![F_送付先]![コンボ8] ------------------------------------------------------------------------------ フォーム上のコンボボックス、コンボ8のプロパティ 値集合ソース: SELECT T_送付先.ID, T_送付先.送付先 FROM T_送付先; 連結列: 1 ------------------------------------------------------------------------------ テーブル(T_送付先)の一列目にID項目がありオートナンバー設定してあります。 その値が表示されてる気がします・・・ 他にもコンボボックスを使用してますが、全部レポートには表示されています。 コントロールの値と一致するレコードを検索するこのコンボボックスだけが 表示されない為コードが影響しているのかな・・と考えられますが お手上げ状態です・・・ どなたかアドバイス頂けると助かります。 よろしくお願いします。

  • アクセス2013の値集合ソース内の検索か抜き出し

    アクセス2013のフォームのコンボボックスの『値集合ソース』内に書かれたSQLコードの検索か抜き出しはできませんか。 ※書き方がよくなかったので再投稿しています。 アクセス2013でゴリゴリに作られた画面があります。 そこで使われているテーブルを検索して影響範囲の調査をしたいのですが、検索しても『値集合ソース』内に書かれたSQLコードにはヒットしてくれません。 どの画面とどの画面のどこでそのテーブルが使用されているのかが知りたいですが、 コンボボックスとその『値集合ソース』を多用しているために困っています。 『値集合ソース』内に書かれたSQLコード内のテーブルを検索する方法か、 フォームに書かれた『値集合ソース』のコードをテキストで抜き出す方法はありませんか。

  • Access フォームのコンボボックスでの検索

    Access2010で質問です。 フォーム上のコンボボックスで レコードを検索・抽出したいと考えています。 以下のような事をやりたい場合、 フォームやVBAをどのように 作ればよろしいのでしょうか? お忙しいところたいへん恐れ入りますが、 ご教授いただけますと助かります。 ======テーブルの説明===== 以下の3つのテーブルがあります。 ◆メインテーブル |No|職業 |住所|年齢|名前| -------------------------- |01|会社員|東京| 31|品川| |02|自営業|埼玉| 30|川口| |03|会社員|東京| 30|渋谷| |04|自営業|埼玉| 20|戸田| |05|自営業|埼玉| 20|熊谷| |06|自営業|東京| 30|太田| ◆職業テーブル |No|職名 | ----------- |01|自営業| |02|会社員| |03|無職 | ◆住所テーブル |No|地名| --------- |01|東京| |02|埼玉| |03|千葉| そして、各テーブルは 以下のようにリレーションされています。 ・職業テーブルはメインテーブルの「職業」へリレーション ・住所テーブルはメインテーブルの「住所」へリレーション =====検索方法の説明===== 検索はフォーム上で行いたいです。 フォームに以下のようなコンボボックスを2つ作成します。  コンボボックス1・・・職業が選べます  コンボボックス2・・・住所が選べます それぞれのコンボボックスで条件を選んだ後、 「実行」ボタンを押すことで検索結果を表示させたいです。 ◆両方のコンボボックスが空欄だった場合 「検索条件を選んでください」との メッセージボックスを表示させたいです。 ◆複数のレコードが抽出された場合にやりたい事 各レコードの「年齢」を比較して 値が一番小さいレコードだけが 抽出されるようにしたいです。 「年齢」が同じ値だった場合(競合した場合)は 「No」の値が小さいレコードを抽出したいです。 ◆検索結果の表示方法 抽出されたレコードの「名前」だけを フォームに表示したいです。 =====検索結果の例(やりたい事)===== ◆事例1 コンボボックス1=「会社員」 コンボボックス2=「東京」 検索結果=「渋谷」 01と03が検索にヒットしますが 「年齢」の値が小さい方(03)だけを 抽出されるようにしたいです。 ◆事例2 コンボボックス=「自営業」 コンボボックス=「埼玉」 検索結果=「戸田」 まず02と04と05が検索にヒットしますが 02の「年齢」の値が大きいので除外します。 次に04と05の「年齢」の比較ですが、 同じ値になっています。 したがって「No」の値が小さい04が 抽出されるようにしたいです。 ==================== 以上です。 できるだけ詳細に書いたつもりですが、 不足な情報がありましたらご指摘ください。 なにとぞよろしくお願いいたします。

  • Accessのフォームにて顧客番号を検索して無ければ新規作成したい

    Access2003のフォームで社員管理システムを作ろうとしていますが、VBAの記述でわからないことがあるので、教えてください。 まず、テキストボックス「txt_検索」に社員番号を入力し「cmd_検索」ボタンを押すと、社員管理テーブルの社員番号フィールドより検索をします。 社員管理テーブルに該当するレコードがある場合は、レコードの編集となり、社員番号がない場合はテキストボックス「txt_社員番号」に「txt_検索」の値を入れた新規レコードの作成としたいのです。 入力した値でレコードの検索をして、無いなら新規作成といったコードは どのような記述になるのか教えてください。 よろしくお願いいたします。

  • アクセス2000でまた質問です。

    Win2000,アクセス2000使用しています。 フォーム上のコンボボックスを使用してデータを入力しています。 コンボボックスの値("新規";"変更")のそれぞれ件数を計算したいのですがうまくいきません。 例)コンボボックスの値→"新規";"変更"   新規が何件   変更が何件 というようにしたいんですが、件数を表示させるテキストボックスのプロパティのコントロールソースという所を使って計算させることができますか? よろしくお願いします。

  • アクセスのフォームで

    アクセスのフォームで、品番一覧というテーブルを基にした、F品番一覧というフォームがあります。 ヘッダー部に検索するコンボボックスがあり、品番一覧テーブルの品番を参照しています。 検索ボタンを押すと、コンボボックスの内容に当てはまるものが、フォームの詳細部に一覧として表示させる様にしたのですが、品番に"50#1"や"50#2"という#を使い、1と2を分けている物があるのですが、コンボボックスで、この#が付いた物で検索すると検索結果がなにも表示されません。#が付いていない物はちゃんと一覧が表示されます。 #が付いている場合でもちゃんと表示するにはどの様にしたら良いですか?テーブル側の#を取り除く事はできません。 検索ボタンのコードは Private Sub 検索_Click() Dim strFilter As String, strExp As String, aryOpe As Variant If Not IsNull(Me.txt氏名) Then strFilter = strFilter & " AND 品番 Like *" & Me.品番一覧 & "*" End If Me.Filter = Mid(strFilter, 5) If strFilter = "" Then Me.FilterOn = False Else Me.FilterOn = True End If となっています。 うまく説明できなくてすいませんが、誰か教えて頂けませんか? よろしくお願いします。 End Sub