• ベストアンサー

ラベルの色がかわってくれない

VBでこんなことをしているのですが (1)ボタンが押されたタイミングで ラベルの色を変える (2)SQLを実行する(←これがかなりおもい 100万件のSELECT文) (3)計算などの処理をして再びINSERT (4)(1)で色をかえたラベルをまた色を変える ここで問題なのですが(1)でラベルの色がかわってくれないのです 先に(2)が動いてしまっているみたいにみえてしまうのですが コーディングには問題はないはずです 順番は正しいのです こういった問題を回避するためにはどのようにしたらよいのか おしえてください よろしくおねがいします。

  • ayato
  • お礼率25% (16/64)

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

  • ベストアンサー
回答No.2

ボタンもしくは画面のリフレッシはしていますか? XXXX.Refresh

ayato
質問者

お礼

早速の回答ありがとうございました。 できました。困っていたのでたすかりました!

その他の回答 (1)

  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.1

お疲れ様です。 リフレッシュしてみてはどうでしょうか。 色や文字変更後に重い処理を実行すると変わらないことがあるので自分はリフレッシュで対応しています。   '// ラベル色の変更   Label1.BackColor = vbRed   '// ラベル表示のリフレッシュ   Label1.Refresh   '//SQL実行 間違っていたらごめんなさい。

ayato
質問者

お礼

丁寧なご回答たすかりました。 ありがとうございました!

関連するQ&A

  • SELECT実行中にINSERTしたい

    テーブルTに対し、データ抽出に数分かかるようなSELECT文を実行しているとして、 そのSELECT文の実行中にInsertしたらどのような挙動になるでしょうか。 (INSERTした瞬間にエラーが発生する?) また、SELECT文の実行中にInsertしたら、 「SELECT文が実行終了するまで待って、そのあとにINSERTする」 という動きにしたい場合、どのように設定(or SQLを書けば?)すればよいでしょうか。

    • ベストアンサー
    • MySQL
  • Access にて DISTINCROW を使用した INSERT SELECT

    お世話様です。 Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、 普通のINSERT-SELECT文はOKですが、 そのSELECT文にDISTINCROW句を使用していると、 数百件程度のSELECT結果しかINSERTできません。 本当は数千件のSELECT結果をINSERTしたいのですが、 これを実行した場合、エラーにもならず、1レコードもINSERTされません。 ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、 2000件以上でもINSERTできました。 DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか? ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、 数千件でも結果を表示できます。 SQL例: str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3)  SELECT DISTINCTROW A.項目1, A.項目2, B.項目1  FROM テーブル1 A, テーブル2 B  (WHERE句はあってもなくても現象変わらず)  ORDER BY A.項目4 ASC, A.項目5 ASC " DoCmd.RunSQL (str_SQL) よろしくお願いいたします。

  • Oracleでのスクリプト実行について

    SQL*Plusで作成した1つの×××.sqlファイル複数のSQL文があります。このSQLを1つづつ確認しながら実行 する事が可能でしょうか? 例えば、以下の×××.sqlファイルでselect文とinsert文 の間で確認をしたいのですが.....。 select ename from emp; insert into (empno) values(10); よろしくお願いします。

  • VB6より長文INSERT文でORA1756単一引用符が閉じられていないが発生する

    初めまして。 VB6、ORACLE8iでダイナセットを使用しテーブルに対してINSERT文を 発行していますが、INSERT文が長文になると”単一引用符が閉じられていません” とエラーが返ってきます。このSQL文と同一のものをPLUSにて実行させても 同一のエラーが発生するのですが、メモ帳等で改行して一行を短くすると 正常にINSERTされます。 それならと思い、SQL文作成コード内に改行コードを挿入したのですが VB上からは同じようにエラーが返ってきます。改行コード入りのSQL文を イミディエイトより取り込みPLUSにて実行させると正常に動作します。 どうすればVB上から正常実行できるのでしょうか? 初心者ゆえどうすればよいかさっぱりわからなくなりました。 VB上からは何か制約があるのでしょうか? どなたかご存知の方ご教授願います。 長文失礼しました。

  • VBAでoracleDBのupdate

    VBAでoracleDBにupdate(SQL文)でのアップデートができません。なぜでしょうか? ちなみに、insert、select文は何の問題もなく実行することができます。 Err.Numberは3073(更新できないクリエー)でした。 宜しくお願いします。

  • ACCESSのクエリ(SQLビューについて)

    こんにちはtmgmです。 ACCESSのクエリ(SQLビューについて)について質問です。"INSERT INTO TBL SELECT * FROM TBL1"というようなINSERT文をSQLビューに書き込んで実行することはできるんですが、これが複数行になるとどうしてもエラーが出てしまいます。ちなみに実行したい同じような文体のSQL文は100行近くあります。どうすればよいでしょうか?

  • VBでSQL

    題の通りなのですが VBでSQLサーバ上のデータベースを操作したいのです 接続はできたのですが、 SQL文をVB上で実行するやり方がわかりません いろいろ試してみたのですが、 オブジェクトがないとか言われてしまいました。 初心者なので意味がよくわからず困っています。 アップデート、インサートなどをします。 本当に困っています。 よろしくお願いします。

  • オラクル+SQL Plus

    SELECT A FROM AAA WHERE ROWNUM<=5とSQLを実行すると 必ず5つ返ってくるとは限らないみたいで… テーブル名やフィールド名が分かっている状態で 何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 個数さえ合っていれば順番は特に気にしません。 よろしくお願いします。

  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。

  • TruncateしたテーブルへのInsertの遅さが気になる

    こんにちわ。 日次処理として、毎晩ワークテーブルをTruncateしてInsertしなおすというプログラムを数年前に作りました。 このプログラムはVB6、ADO、OLE DBプロバイダはOracleのものを使っています。 他のテーブルからSelectし、それを元に1レコードずつInsert文を作っては実行を繰り返す処理で正直遅いのですが、このプログラムの動作が不思議です。 日々数十万件のInsertを行っているのですが、ログを確認すると最初の2万件のInsertには40分掛かるわりに最後の2万件は5分で終わるのです。 今まで処理時間の遅さが問題になることもなく、バグもなく動いているしであまり気にしていなかったのですが、最近なぜこのような動きになるのか気になってきました。 最初も最後もSelect結果に偏りはなく、Insert文を作る処理に掛かっている時間は同じようなものかと思います。 とすると、遅いのはDBでのInsert処理か?と考えています。 レコード件数が少ないうちのInsertには時間が掛かるものなんでしょうか? だとするとそれはなぜ? 別に処理速度を速くしたいとか言うことではなく、なぜInsertの処理時間にこれほどの差が生じるのかが気になっています。 なおこのテーブルは主キー以外に索引を作っていません。 Insert文を作る際の元になるデータは論理的な単位ごとにSelectします。1回がだいたい数十件ぐらいです。 またその論理的な単位の分のデータをInsertしおわるごとにcommitしています(数十件ごとのcommitになります)。