
アクセスの帳票フォームで入力用チェックボックスが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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
RDBとVSAMの比較
-
差し込み後、元データを変更し...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
ソフトバンクの無料着うたのお...
-
SQLで列名を変数にできないでし...
-
SQLで特定の項目の重複のみを排...
-
複数アドインプログラムをひと...
-
一度のsqlで値を取得するには
-
ある条件の最大値+1を初番する...
-
Outlook 送受信エラー
-
誰か教えてください
-
IDの欠番
-
UWSCでMOUSEORG関数が上手く処...
-
php+mysqlで複数選択削除について
-
この意味の違いを教えてくださ...
-
エクセルの関数について教えて...
-
Excel VBA ADODB
-
VMwareがCDドライブを認識する...
-
OSPFのDRの選出基準について シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
カーソル宣言をIFで分けられま...
-
データ型でFloatとreal の計算...
-
カーソルを使って、最終行レコ...
-
(x 行処理されました)を表示さ...
-
処理件数を非表示にしたい
-
SQL-LOADERの逆のもの
-
RDBとVSAMの比較
-
ストアドプロシージャ_カーソル...
-
Accessで処理経過を表示したい...
-
カーソルオープンの処理について
-
NVLとDECODEのスピード差
-
カーソルがコミットするとクロ...
-
SQL plus で改行
-
PL/SQL で continue ?
-
VBAで複数あるTEXTBOXをクリッ...
-
テーブルの項目が異なるテーブ...
-
クエリの実行時間の目安
-
わり算の結果が整数でも小数点...
-
SELECT と INSERT の速度
おすすめ情報