• ベストアンサー

データ処理実行中に処理件数を表示させたい

こんばんは、ACCESS初心者です。 ACCESSのVBAで、あるデータ処理を行うプログラムを作成しました。 処理件数が多いため、現在処理中の件数をフォーム上に表示させてあげようと、 テキストボックスを配置し、そこへカウンタの値をセットしようと思います。 (カウントアップしているサマをユーザーに見せたい) しかし、ただセットするだけではダメのようで、 再表示的なこと?をしてあげないと表示されない感じなのですが、 処理中にテキストボックスの最新の値を常に表示させるには 何か方法があるのでしょうか? よろしくお願いします。

  • rikiou
  • お礼率95% (223/234)

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

  • ベストアンサー
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

DoEventsを入れてください。

rikiou
質問者

お礼

早速の回答ありがとうございました。うまくいきました。 その代わり、制御の関係だと思いますが処理を中断したい時のCtrl+Breakが効きにくくなりました(^^;) 押すタイミングなんでしょうけど、運が悪いといつまでも受け付けてくれませんね... ありがとうございました。

その他の回答 (2)

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.3

それでは、テキストボックスに表示させるのではなく、タイトルバーに表示させてください。 Me.Cpation に表示したい数字を入れてみてください。この場合はDoEvetsは必要ありません。

rikiou
質問者

お礼

ホントだ...ありがとうございました。 自分のテスト時はタイトルバーに表示させて、本番移行後はテキストボックスに表示させるようにします。 (プログレスバーにも挑戦してみます。) アドバイスありがとうございました。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

> 現在処理中の件数をフォーム上に表示させてあげようと 質問の要旨からはハズレますが・・・ このようなときは、ProgressBarコントロールを使ってみたらどうでしょうか。 絶対お勧めです。

rikiou
質問者

お礼

プログレスバーも一瞬考えたのですが、私の思い違いでなかったら、 あれって「全体の処理件数」と「処理済の件数」から、バーの長さを随時計算して表示するんですよね? ちょっとチャレンジしてみます。アドバイスありがとうございました。

関連するQ&A

  • サブフォームのRecordSourceの件数を取得したい

    <環境>access2007、db:sqlserver2005 メインフォームに日付のテキストボックスがあり、その日付に一致したデータをサブフォームに表示しています。 メインフォームのOPEN時処理 Set FM = Forms![FTop] Set FS = Forms![FTop]![FTop_sub].Form FS.RecordSource = "select * from aaa where day = '"& fm!day &"'" この時、RecordSourceにセットしたデータの件数を取得したいのですが、 サブフォームのフォームヘッダーにテキストボックスを配置して、 そのコントロールソースを =Count(*) としました。 しかし、"#エラー"と表示されてしまいます。 サブフォームは"帳票フォーム"です。 どこが悪いのか困っています。どなたかご教授お願いします。

  • ACCESS フォームの詳細セクションのコントロールを全て非連結で作ろ

    ACCESS フォームの詳細セクションのコントロールを全て非連結で作ろうとしています。 レコードセットに連結していれば、詳細セクションにはレコード件数分の行が自動的に生成され、データのセットも勝手に行われますが、非連結なので、自分で(VBAで)制御する方法を知りたいです。 行にはテキストボックスだけでなくコマンドボタンやチェックボックスも配置します。 ・VBAで行を作ってそこのテキストボックスに任意の値をセットする方法 ・VBAで行にあるオブジェクトの値等を参照する方法 以上を教えていただけませんでしょうか? (そのようなサイトがあれば、それも教えていただきたいです)

  • VBAのイベント処理について

    VBAのイベント処理について お世話になってます。現在、VBAでアプリケーションを作成しています。 1つのフォームに4つのテキストボックスと1つのボタンが配置されており、それぞれイベントが設定されています。 その中のテキストボックスに関するイベントなのですが、1つのテキストボックスに対してKeyPress、KeyDown、MouseUp、AfterUpdate、以上4つのイベントを作成します。 フォームに配置されている4つのテキストボックスすべてに、上記で示したイベントを作成する必要がありますが、各イベントにおける処理の内容はオブジェクト名が違うだけで全く同じです。 ひとつひとつイベントを作成していけば、処理目的は満たせそうですが、ソースがかなり長くなってしまいます。ひとつのオブジェクトに対してこれらの処理をひとまとめにする様な記述方法はありませんでしょうか?考え方だけでも教えていただければ幸いです。 質問が長くなってしまい申し訳ありません。回答宜しくお願い致します。

  • データ件数の表示について

    はじめまして、TXTFILEをACCESS97のテーブルにインポート定義で読み込んで 目的の文字列がフィールドにあったらMSGBOXで表示させたいのですがうまくいきません。 そのコードを試したところ他の文字列の分も表示されてしまいます。 そのコードを記入したので、その原因を教えてください。お願いします。 Private Sub Cmd_KensuuHyouji_Click() Dim i As Long Set G_CurrentDB = CurrentDb() Set Rs = G_CurrentDB.OpenRecordset("Table") '変数を空白にする GetFileName = "" 'フォームのTextBoxにフォーカスを移す Text1.SetFocus 'エラー回避 If IsNull(Text1.Text) Or (Text1.Text) = "" Then MsgBox "ファイルを選択してからクリックしてください", vbOKOnly + vbCritical Exit Sub End If 'ファイル名の左12桁が目的のファイル名なら変数にファイル名をセット If Left$(Text1.Text, 12) = "1013405_0502" Then 'GetFileName変数にText1の値をセット    GetFileName = Text1.Text End If 'ファイルをテキストファイルとしてコピーする FileCopy PathName & GetFileName, PCstPath & "MSCT.TXT" 'テキストファイルをMSACCESS97にインポートする DoCmd.TransferText acImportDelim, "インポート定義", _ "Table", PCstPath & "MSCT.TXT", True 'インポート後レコードセットを最初の行へ戻す、でないと、件数0件で表示される Rs.MoveFirst Do Until Rs.EOF If Rs.Fields("発注者コード").Value = "1013405" Then i = Rs.RecordCount End If Rs.MoveNext Loop MsgBox "データ件数は" & Space$(1) & i & Space$(1) & "件です" Rs.Close G_CurrentDB.Close Set Rs = Nothing Set G_CurrentDB = Nothing End Sub

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

  • [Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには

    Accessにおいて。 帳票フォームの"詳細"に非連結のコントロール(例:テキストボックス)を配置し、それぞれ別々の値を持たせることは可能なのでしょうか? 例えば。 VBAにおいて、カレントレコードのAという値とBという値を計算し、その値を非連結のテキストボックスに挿入したとします。 単票フォームであれば、問題なくテキストボックスには計算後の値が表示されるわけですが…… 帳票フォームの場合では、"規定値"に計算式を入れたときと同様、先頭の値と同じものが連続するテキストボックスに表示されてしまいます。 これを回避し、計算後のデータを連続するテキストボックスにそれぞれの値として表示させるには、どのようにすればよいのでしょうか? もちろん、連結させたコントロールを使用すれば、問題はないのですが…… 状況によっては、これが行えた方が便利かと思い、質問させていただきます。 「帳票フォームでは不可能である」といった回答でもかまいません。 どうぞよろしくお願いいたします。

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • パススルークエリのデータ件数の取得について

    ACCESS2003、SQLSERVER2000を使用しています。 パススルークエリPQ1を作成し、リストボックスのRowSourceにしています。 PQ1はサブクエリを多用しまくっているためか、 結果が返ってくるのに7秒くらいかかっています。 PQ1の件数と、 PQ1の列[可否]の中にある'○'、'×'の件数をフォーム上の テキストボックスに表示したいのです。 Me.txt件数.Value = DCount("*", "PQ1") Me.txt丸件数.Value = DCount("*", "PQ1", "可否 = '○'") Me.txt罰件数.Value = DCount("*", "PQ1", "可否 = '×'") としたところ、約4倍の時間がかかるようになってしまいました (その都度パススルークエリが実行されているのでしょうか)。 なるべく時間がかからないようにしたいのです。 よろしくお願いします。

  • リストボックスで選択したデータを表示する方法

    ソフトはACCESS2000です。 フォームでの入力で、リストボックスから複数選択できるようにしているのですが、このリストボックスの値集合ソースに入っている件数が多いため、下にかなりスクロールすることになります。 そこで、リストボックスの右側に別にリストボックスで選択したものを表示させられないかと思っています。 ここでお聞きしたいのは、 1. 表示エリアとしてテキストボックスを作ったのですが、テキストボックスでOKか? 2. 1でOKの場合、リストボックスで選択したものをテキストボックスに表示させる方法 3. 1でOKの場合、そのテキストボックスへ入力できなくする方法(表示ONLYにしたい) 4. 1でだめな場合、別な方法はあるか?あればその方法 です。 回答は、1~3か、1,4になるかと思います。よろしくお願いいたします。

専門家に質問してみよう