• ベストアンサー

Access2000 CopyFromRecordsetでの出力状態をプログレスバーに反映させたい。

Access2000のレコードセットをCopyFromRecordsetメソッドを使用してデータ出力させています。 しかし、最近データ量が多くなったため、進行状況をプログレスバーで表示したいと思っています。 画面下のステータスバーに表示されるのではと思ったのですが、 「そんなとこまでうちの社員は見ないだろう」と却下されてしまいました。 通常ならDo~Loop処理などの際にプログレスバーのValue値を変えればいいとおもうのですが、 このような「Accessにおまかせ」状態の時はどのようにすればいいのでしょうか。 となたかご教授ください。よろしくお願いします。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

>クエリなどは下のステータスバーに表示されたりするのに そうですよねぇ。 ただ、先の回答はいわゆる正攻法ってやつで、API使ったらまだ道はあると思いますよ。 例えば、メッセージをフックするAPIを使って、ステータスバーに送られるメッセージを横取りするとか… 「メッセージ フック OCX」などのキーワードをネットで検索すると、その手のコントロールも落ちてると思います。 ただ、そこまでする必要があるかと言うと、私としてはちょっと疑問なんですが…

j279702
質問者

お礼

ありがとうございます。初めてメッセージフックというモノを知りました。 早速メッセージフック等を調べたのですが、「お前理解できるのか???」と自問自答・・・というか早くも挫折しています。 うちの会社も結構無茶を言います。 今日はsyscmdなど調べたのですが 「だからその値をプログレスバーに入れたいんだよ~!!」 と、もう少しで暴れてましたね。 これはやはり問題となったAccessファイルを会社で使用させる際に「こういうものだ」と教育した方が早そうですね。

j279702
質問者

補足

うわぁ。すみません。放たらかしにしてたぁ。締切もしてないし。 とにかく本当にありがとうございました。 あれから社内で話し合ってアイコンを動かしてとりあえずフリーズではないと 見た目に判るようにすることで解決しました。 でも調べれば調べるだけ、結構Accessって奥が深いって判りました。 これからも勉強していきますので、またよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

データを例えば1000件ごとに分割しまして、Do~Loop内で1000件ずつ転送する処理を書いてやればいいかと思います。(重くなるかもしれないけど(汗))

j279702
質問者

お礼

そうですか。やはり一括処理されてしまう更新・追加クエリや、コピーの進捗状況って把握できないんですかねぇ。クエリなどは下のステータスバーに表示されたりするのに、悔しいですね。 情報いただき本当にありがとうございました。また宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2000のステータスバーにプログレスバーを表示したい。

    こんにちわ たびたび申し訳ありません。 Access2000 の左下のステータスバーにプログレスバーを表示したいのですが、どのようにしたら良いでしょうか・ Access97 ではやった事有るのですが、やり方を忘れてしまいました。 もしご存知の方いらっしゃいましたらよろしくお願い致します。

  • Access プログレスバー 画面固まる

    Access 2007 VBA でファイル出力処理が長いため、以下を参考にしてプログレスバーを設置しました。 http://www.moug.net/tech/acvba/0060023.htm 1,000件程度だと進行状況がちゃんと表示されるのですが、10,000件単位になるとAccess自体が応答せず、プログレスバーも途中で止まったまま、だけど処理は裏で動いているようでファイル出力自体は時間はかかりますがちゃんと出力されます。 DBアクセスを含んだファイル出力処理なので、多少時間がかかっているのかと思います。 また、私の技術の低さから処理自体に時間がかかってしまっていることもあると思いますが、私の技術では処理自体を変えて早くするのは限界です。 Access画面が固まらず、リアルタイムでプログレスバーを進行させる手段等ございましたらご教授いただけるとありがたいです。

  • プログレスバーでの経過状況表示

    vb.netでのtimerのようなものをやりたくてvbaでプログレスバーを使用して経過状況を表示するプログラムを作りました。プログレスバー自体での視覚的な経過状況表示はできたのですが、現在のパーセンテージをlabelに表示することができません。 Private Sub CommandButton4_Click() Dim i As Long Application.Visible = False i = 1 For i = i To 1000000 UserForm1.ProgressBar1.Value = i / 1000000*100 UserForm1.Label1.Caption =UserForm1.ProgressBar1.Value i = i + 1E-44 Next Application.Visible = True End Sub 上記のようにするとプログラム終了時にlabel1に現在のプログレスバーの値が表示されますが、進行中には表示されないのです。これを進行中も表示させるにはどうしたら良いのでしょうか?

  • C# or VB プログレスバー

    プログレスバーで進行状況を表示する処理を入れています。 http://dobon.net/vb/dotnet/programing/progressdialog.html 上記のサイトをパクってとりあえず作ってみました。きちんとできているのですが 1つだけ問題があって try { ProgressDialog pd = new ProgressDialog(); //ダイアログのタイトルを設定 pd.Title = "カウントアップ"; //プログレスバーの最小値を設定 pd.Minimum = 0; //プログレスバーの最大値を設定 pd.Maximum = 10; //プログレスバーの初期値を設定 pd.Value = 0; //進行状況ダイアログを表示する pd.Show(this); //処理を開始 for (int i = 1; i <= 10; i++) { //プログレスバーの値を変更する pd.Value = i; //メッセージを変更する pd.Message = i.ToString() + "番目を処理中..."; //キャンセルされた時はループを抜ける if (pd.Canceled) break; //1秒間待機する(本来なら何らかの処理を行う) System.Threading.Thread.Sleep(1000); } //ダイアログを閉じる pd.Close(); } catch { MessageBox.Show("error"); } こんな感じで使い、プログレスバー表示中に例外が走るとMessageBoxがモーダレスで 表示されてしまいます。プログレスバー表示前だとモーダルのままです。 色々調べたところ原因は裏でスレッドが走っているからだと思います。たぶん・・ ところが対処法となると少々困っています。モーダルでMessageBoxを表示させたいのですが どうすればよいのでしょうか?教えてください。

  • javascriptによるプログレスバーの表示制御

    javascriptで任意の処理を実行中に、HTMLのプログレスバーの表示を制御する方法をご教示ください。 ただし、JQueryなどのライブラリは使わないものとします。 実現したい処理は以下です。 (1):処理開始時にプログレスバーを表示  (HTMLに定義されている<progress>を表示) (2):処理A実行 (3):プログレスバーの進捗を50%に更新 (4):処理B実行 (5):プログレスバーの進捗を100%に更新 (6):処理終了時にプログレスバーを非表示 上記を実現するために、例えば以下のようなコードを書いても、(1)~(6)の全処理が終わった結果が画面に反映されるため、画面上はプログレスバーは表示されません。 <progress id="prog" max="100" value="0" style="display:none">Loading...</progress> <script> //(1):処理開始時にプログレスバーを表示 document.getElementById("prog").style.display = 'block'; //(2):処理A実行(仮の処理としてsleep) Sleep(3); //(3):プログレスバーの進捗を50%に更新 document.getElementById("prog").value = '50'; //(4):処理B実行(仮の処理としてsleep) Sleep(3); //(5):プログレスバーの進捗を100%に更新 document.getElementById("prog").value = '100'; //(6):処理終了時にプログレスバーを非表示 document.getElementById("prog").style.display = 'none'; //Sleepメソッド(テスト用) function Sleep(T){ var d1 = new Date().getTime(); var d2 = new Date().getTime(); while( d2 < d1+1000*T ){ d2=new Date().getTime(); } return; }; </script> プログレスバーの進捗を更新する度に、画面にその内容を反映するにはどのようにしたらよいのでしょうか。

  • ACCESSからEXCELを開いて印刷をかけたい

    お世話になっております。 環境 ACCESS2007、win7 ACCESS VBAを見よう見まねでコピーしながら作ってるぐらいの ど素人ですので、お手柔らかに願います。 会社パソにコードは入ってるんですが、家からの質問で コードを載せることが出来ないので それでも推察していただける方、ぜひ宜しくお願い致します。 テーブルにEXCELファイルのフルパスデータを溜めておいて、 それをVBAで一番最初のレコードから最後まで印刷をかけたいのです。 DO until fullpass.EOF ’fullpass ←EXCELファイルのフルパスデータ入れたテーブル fullpass![パス名] = insatu_file ’フルパス名を 変数に入れておきたい Workbooks.Open FileName:= insatu_file 省略(EXCELを操作するためのコード) fullpass.movenext loop て感じでネットで探したコードを切り貼りしながら作ったのですが、 フルパスを変数に入れるとこでエラーが出ます。 ”Update または CancelUpdate メソッドには、対応する AddNew または Edit メソッドが必要です。” 試しに、変数関係なしで直接フルパスを打ち込んでvba動かすと ちゃんとEXCEL開いて印刷しました。 すみません、ちんぷんかんぷんな説明なんですが わかる人いらっしゃったら助けてください<m(__)m>

  • ExcelのマクロをAccessで動かすには…

    今までExcelを使用していてVBAも段々と理解してきたのですが 今回Accessを使用することになって詰まってしまいました。 下のようなExcelのマクロ(VBA)があるのですが、 これをAccessでも同じように動かしたいのですがわかりません(汗) ----------------------------------------------- Sub テスト() Dim GYO As Long GYO = 1 Do Until Worksheets("テスト").Cells(GYO, 1).Value = "" If Worksheets("テスト").Cells(GYO, 1).Value >= 80 Then Worksheets("テスト").Cells(GYO, 2).Value = "合格" Else Worksheets("テスト").Cells(GYO, 2).Value = "不合格" End If GYO = GYO + 1 Loop End Sub ----------------------------------------------- これでAccessのレコード一つ一つの合否を入力する欄に 自動で入力されるようにしたいのですが、 Accessでの記述方法がよくわからないのです。(^_^;) お詳しい方、よろしくお願いしますm(_ _)m

  • access2003のエラーについて!!

    access2003のエラーについて!! ACCESSでデータを入力中に突然テーブルのレコードが「レコード削除された」のメッセージが表示され、レコードが消えてしまいました。 また、フォームでは、レコードが表示されていないにもかかわらず、データが表示されます。 新規にレコードを作製しようとしても「レコードは削除されています」のメッセージが表示され、 作成できません。 この状態を、元に戻す方法はないでしょうか?

  • アクセスVBAでデータを検索したいのですが、

    アクセスVBAでデータを検索したいのですが、 エクセルVBAのcells(i,1)にあたるようなものはないでしょうか。 添付画像のような信号を抽出したいので、立ち上がりの部分をさがしたいのですが。 ご存知のかた教えてください。 i=1 Do until cells(i,1)>=4 i=i+1 Loop 開始レコード=i データテーブルの1列目は行番号、2列目は信号が入っています。

  • Access2003はチューニングは可能ですか?

    以下のように、レコード1件ずつ処理させるVBAをAccess2003で書いているのですが、処理が遅いです。(1件ずつなので当たり前ですが・・・) AccessやWindows2000をチューニングして、早くすることは可能でしょうか? 基本的にCPUやメモリの増設は金欠のため考えておりません。 あと、開始から終了までミリ単位で計測するVBAの書き方も知りたいです。   '開始 '先頭のレコードに移動する DoCmd.GoToRecord , , acFirst Do '処理 ' ... '次のレコード DoCmd.GoToRecord , , acNext Loop While Me.NewRecord = False   '終了

このQ&Aのポイント
  • 転職先の給与について、現金輸送車の警備員としての給料は月給20万円以上ですが、手取りは16万円程度になると予想されます。
  • 交通費は約5千円程度、残業代は約1〜2万円程度です。試用期間前の研修時の時給は860円です。
  • 内定をもらっているが、正式な手続きをしていないため、交通費と残業代を含めた手取りが18万円以上を希望していることを担当者に伝えることは適切です。
回答を見る

専門家に質問してみよう