【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

アクセスの帳票フォームで入力用チェックボックスが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ではチェックマークをつけて次のチェックマークを付けるのに待ち時間はありません。)したがって使い物になりません。何か考えられることはありますでしょうか。

A 回答 (4件)

以上と言いつつ、


最初の質問の Me.Refresh を見逃していました。
Me でフォーム全体のRefreshを行うのではなく
個々のコントロールのRefresh、Recalc、Requeryを行えませんかね?
Me!コントロール名.Re…
ただ、Me.Refresh を外しても若干の改善となると。。。
実際にファイルを見られればもう少し何とかなるかも?ですが
やり取りはこのサイトではご法度なのでゴメン。

この回答への補足

http://okwave.jp/qa/q7958022.html
こちらの方も教えて下さい。
宜しくお願い致します。

補足日時:2013/02/22 04:13
    • good
    • 0
この回答へのお礼

ありがとうございます。計算を全部更新するためフォーム全体を行わないといけないと思っておりましたが、CK1だけをRequeryしてやればCK1が確定し全ての計算をやり直してくれました。2003,SP3に比べればまだまだ遅いですが、Me.CKXX,Requeryでずいぶん速くなりました。(.accdbに変更致しました)VB7.0のレジストリ値が怪しいと友人が言っておりましたので、このへんも見てみたいと思っておりますが、随分と改善致しました。ありがとうございます。

お礼日時:2013/02/21 00:16

一つのチェックボックスを変えるだけで、


全てのチェックボックスの値が再更新されるような動きは?
何処かにイベント連鎖的なモノがあって
SP3 だとAccess が気を廻してくれるのが速くて無駄な連鎖を遮断して・・かもです。
ステップ実行してみると何かが見えてくるかも?
私からは以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。2010で更新後処理からme.refreshを外すと少し速くなりました。しかしRefreshしないと値を確定できないため同じ場所へのダブリ予防ができませんし、下のフィールドにある計算結果も出て来ません。チェックマークのチェックを付けた時に値を確定させるのにはMe.refreshだけですよね。Requeryでは恐らくもっと遅くなると思います。色々教えて頂きどうもありがとうございました。

お礼日時:2013/02/20 22:02

ん~


個々のPCに置いてあるという事ですか。。
ネットワークの設定の違いから・・かなと踏んでたのですが違ったようですね。
となるとAccessの内部的な問題になる?ので心当たりはありません。
全体的に遅くなるのか、ある一部(一行)の処理だけに時間が掛かっているのか
経過処理時間をイミディエイトウィンドウに出力するようなのを
数か所おいておいて検証する事くらいしか思いつきません。

後は、Access2010ならACCDB形式にしたら変わるかとか
Decompile して再コンパイル・最適化で変わるかなど。
    • good
    • 0
この回答へのお礼

連絡ありがとうございます。
動きで少し見えるのですが、チェックマークをオンにすると、全てのチェックマークが1つづつ色が変わって元に戻る動きが見えました。恐らくSelect caseを見ているのではないのでしょうか。VBAの問題かな、、と思いました。おっしゃるとおり一部の問題かと思います。
ありがとうございます。

お礼日時:2013/02/20 10:53

して、そのMDBファイルはどこに置いてありますか?

この回答への補足

MDBファイルはC:\DBに入れてあります。テーブルはリンクでなく正規のテーブルです。2003、SP3でネットワーク経由でも使ってみましたがスピードは問題ありませんでした。

補足日時:2013/02/20 01:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報