アクセスの帳票フォームで入力用チェックボックスが84個(ck1からck84)あります。表示データは10個程度ですが、このチェックマークの更新前処理で、同じ場所へのダブリが発生しないような処理をしています。フォームフッターにテキストボックスを84個配し(Text1~Text84)、Text1はCk1の合計を、Text2はCk2の合計を出すようにしておき、CK1の更新前処理に
Select Case Me![Text1]
Case ""
If (Me![ck1]) = -1 Then
MsgBox "Please wait"
Cancel = True
Me.Undo
End If
Case "-1"
If (Me![ck1]) = -1 Then
MsgBox "Already used."
Cancel = True
Me.Undo
End If
End Select
またチェックマークを入れることにより、計算処理をして結果をチェックボックスの下に表示しているためme.Refreshを更新後処理に入れております。アクセス2003+Office2003SP3では問題なく動きますが、アクセス2003+Office2003SP1、アクセス2010+Office2010SP1では次のチェックボックスにチェックを入れるのに5~6秒程掛かります。(アクセス2003+OfficeSP3ではチェックマークをつけて次のチェックマークを付けるのに待ち時間はありません。)したがって使い物になりません。何か考えられることはありますでしょうか。
No.4ベストアンサー
- 回答日時:
以上と言いつつ、
最初の質問の Me.Refresh を見逃していました。
Me でフォーム全体のRefreshを行うのではなく
個々のコントロールのRefresh、Recalc、Requeryを行えませんかね?
Me!コントロール名.Re…
ただ、Me.Refresh を外しても若干の改善となると。。。
実際にファイルを見られればもう少し何とかなるかも?ですが
やり取りはこのサイトではご法度なのでゴメン。
ありがとうございます。計算を全部更新するためフォーム全体を行わないといけないと思っておりましたが、CK1だけをRequeryしてやればCK1が確定し全ての計算をやり直してくれました。2003,SP3に比べればまだまだ遅いですが、Me.CKXX,Requeryでずいぶん速くなりました。(.accdbに変更致しました)VB7.0のレジストリ値が怪しいと友人が言っておりましたので、このへんも見てみたいと思っておりますが、随分と改善致しました。ありがとうございます。
No.3
- 回答日時:
一つのチェックボックスを変えるだけで、
全てのチェックボックスの値が再更新されるような動きは?
何処かにイベント連鎖的なモノがあって
SP3 だとAccess が気を廻してくれるのが速くて無駄な連鎖を遮断して・・かもです。
ステップ実行してみると何かが見えてくるかも?
私からは以上です。
ありがとうございます。2010で更新後処理からme.refreshを外すと少し速くなりました。しかしRefreshしないと値を確定できないため同じ場所へのダブリ予防ができませんし、下のフィールドにある計算結果も出て来ません。チェックマークのチェックを付けた時に値を確定させるのにはMe.refreshだけですよね。Requeryでは恐らくもっと遅くなると思います。色々教えて頂きどうもありがとうございました。
No.2
- 回答日時:
ん~
個々のPCに置いてあるという事ですか。。
ネットワークの設定の違いから・・かなと踏んでたのですが違ったようですね。
となるとAccessの内部的な問題になる?ので心当たりはありません。
全体的に遅くなるのか、ある一部(一行)の処理だけに時間が掛かっているのか
経過処理時間をイミディエイトウィンドウに出力するようなのを
数か所おいておいて検証する事くらいしか思いつきません。
後は、Access2010ならACCDB形式にしたら変わるかとか
Decompile して再コンパイル・最適化で変わるかなど。
連絡ありがとうございます。
動きで少し見えるのですが、チェックマークをオンにすると、全てのチェックマークが1つづつ色が変わって元に戻る動きが見えました。恐らくSelect caseを見ているのではないのでしょうか。VBAの問題かな、、と思いました。おっしゃるとおり一部の問題かと思います。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL-LOADERの逆のもの
-
カーソル0件の時にエラーを発生...
-
NVLとDECODEのスピード差
-
処理件数を非表示にしたい
-
データ型でFloatとreal の計算...
-
(x 行処理されました)を表示さ...
-
差し込み後、元データを変更し...
-
英語ができる方、問題をお願い...
-
UPDATE文のWHERE条件に他のテー...
-
マイクラPC版のコマンドで効率...
-
エクセルで最後の文字だけ置き...
-
フィルターかけた後、重複を除...
-
初心者)DataGridViewの入力桁...
-
列のヘッダーを含めるのをデフ...
-
COBOLの文法
-
IDの欠番
-
Exel VBA 別ブックから該当デ...
-
Outlook 送受信エラー
-
1日に1人がこなせるプログラム...
-
datetime型でNULL値を入れたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
カーソルを使って、最終行レコ...
-
処理件数を非表示にしたい
-
カーソル宣言をIFで分けられま...
-
データ型でFloatとreal の計算...
-
クエリの実行時間の目安
-
ストアドプロシージャ_カーソル...
-
ACCESSで一括処理する方法
-
NVLとDECODEのスピード差
-
Accessで処理経過を表示したい...
-
動的SQLの処理件数
-
SQL plus で改行
-
カーソルがコミットするとクロ...
-
300万件のデータの処理について
-
SELECT と INSERT の速度
-
RDBとVSAMの比較
-
カーソルオープンの処理について
-
(x 行処理されました)を表示さ...
-
SQL-LOADERの逆のもの
-
PL/SQL で continue ?
おすすめ情報