Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2003)
サブフォームがブルブルと細かく動いた状態になる
投稿日時: 19/02/04 09:31:16
投稿者: かきぬま

お世話になります。
 
親フォームで検索処理をして
結果をサブフォームに表示する処理をしています。
 
サブフォームが表示されたと思ったら
そのサブフォームがブルブルと細かく動いたままの状態になってしまいます。
その状態からサブフォームの左にある行選択する箇所を左でクリックすると止まります。
この状態は最初の1回目の検索の時だけで、2回目以降は発生しません。
 
サブフォームを表示する時に
DoEvents、Repaint、サブフォームの1項目にカーソルを置くなど
いろいろやってみましたが変化は無しでした。
VBAで一度行選択をして解除すればできるのではと思たのですが
スキル不足でコーディングがわからず試す事も出来ていません。
 
何が考えられるのでしょうか
win7では発生しません。
 
そもそもwin10ではaccess2003は動作しないものとして
あきらめるしかないでしょうか

回答
投稿日時: 19/02/04 10:24:15
投稿者: hatena
投稿者のウェブサイトに移動

かきぬま さんの引用:
親フォームで検索処理をして
結果をサブフォームに表示する処理をしています。

 
この検索処理をVBAでしているということでしょうか。
ならば、まずはそのVBAコードを提示してください。

回答
投稿日時: 19/02/04 10:31:00
投稿者: hatena
投稿者のウェブサイトに移動

かきぬま さんの引用:
そもそもwin10ではaccess2003は動作しないものとして
あきらめるしかないでしょうか

 
2003なのですね。
新バージョンへの移行を検討すべきでしょう。
そのまま使い続けるのはセキュリティ上危険とMSもいってます。
 
Windows XP/Office 2003 サポート終了のお知らせ - Microsoft
https://www.microsoft.com/ja-jp/windows/lifecycle/xp_eos/consumer/default.aspx

投稿日時: 19/02/11 09:56:30
投稿者: かきぬま

hatenaさんレスありがとうございます。
別環境で動作確認するチャンスがあったのでやってみました
結果は
・win7+access2003→問題なし
・win10+access2010→問題なし
・win10+access2003 →NG
でした。
 
ソースなのですがテスト中のものをそのまま貼り付けさせて頂きました。
RecordsetCloneをやめて通常のテーブルにしてみたのですが結果は変わらずでした。
※サブフォームの読み込みならRecordsetCloneはわかるのですが、
今回の件についてはなぜRecordsetCloneにしているのか?です。
 
Private Sub 再現_Click()
'ここは親フォームのボタンを押した時に飛んでくるところ
 
        Dim db As DAO.Database
        Dim rssubf As DAO.Recordset
        Dim i As Long
     
        On Error GoTo ErrorHandler
        DoCmd.SetWarnings False
        DoCmd.RunSQL "Delete From T_作業実績TEMP;" 'サブフォームのレコードソース
        DoCmd.SetWarnings True
         
        Me![T_作業実績TEMPのサブフォーム].Requery
         
        Set db = CurrentDb()
        Set rssubf = Me![T_作業実績TEMPのサブフォーム].Form.RecordsetClone
        For i = 1 To 10
            rssubf.AddNew
            rssubf!SEQ = i
            rssubf!部品コード = "ブルブル再現テスト"
            rssubf.Update
        Next
        rssubf.Close: Set rssubf = Nothing
        db.Close: Set db = Nothing
         
        'サブフォームの項目にフォーカスを置く処理
        Me![T_作業実績TEMPのサブフォーム].SetFocus
        Me![T_作業実績TEMPのサブフォーム].Form!部品コード.SetFocus
 
Exit_Lbl:
        DoCmd.SetWarnings True
        DoCmd.Hourglass False
        Exit Sub
 
ErrorHandler:
        Call err_rtn
        GoTo Exit_Lb
 
End Sub
 
Office2019の移行を検討していますが、
ソフト(ACCESS-VBA)の移行が難かしそうですね。
※前任者はACCESS2003→ACCESS2010の移行でギブアップしてしまいました。

回答
投稿日時: 19/02/11 11:13:18
投稿者: hatena
投稿者のウェブサイトに移動

 Set rssubf = Me![T_作業実績TEMPのサブフォーム].Form.Recordset.Clone
 
としてみたらどうでしょうか。 その場合、すぐには反映されないので、
更新したあとにも、
 
Me![T_作業実績TEMPのサブフォーム].Requery
 
が必要ですが。
 
RecordsetClone と Recordset.Clone の違いについては下記を参照してください。
 
フォームの Recordset, RecorsetClone, RecordSet.Clone の違いとは? - hatena chips
https://hatenachips.blog.fc2.com/blog-entry-108.html
 

引用:

Office2019の移行を検討していますが、
ソフト(ACCESS-VBA)の移行が難かしそうですね。
※前任者はACCESS2003→ACCESS2010の移行でギブアップしてしまいました。

 
バージョンが離れれば離れるほど、移行は難しくなりますが、
ACCESS2003→ACCESS2010の移行は、私もしましたが、そんなにトラブルはなっかたですよ。
カレンダーコントロールがなくなったのですが、その代わりにプロパティで「日付け選択カレンダー」ができましたので、それに切り替えるだけでしたし。
 

投稿日時: 19/02/11 15:18:00
投稿者: かきぬま

hatenaさんありがとうございます。
 
ACCESS2003→ACCESS2010の移行経験があるのですね。
私が引き継いだ資料では、まずはデータ(日付時刻の部分)が移行できなかったと書かれていました。
何か手順がおかしかったのか?今となってはわからないのですが
 
とりあえず
RecordsetClone を Recordset.Clone にしてやってみましたが
結果は変わらず、サブフォームは永遠にRequeryを繰り返しているようにブルブル表示でした。
 
何らかのアクションを入れてみれば変化があるかも?と思って
GoToControlとFindRecordを入れましたが、やはり変わらず。
 
Me![T_作業実績TEMPのサブフォーム].SetFocus
DoCmd.GoToControl "SEQ" '←追加してみた
DoCmd.FindRecord 1, acAnywhere '←追加してみた
Me![T_作業実績TEMPのサブフォーム].Form!部品コード.SetFocus
 
 
新規で空のデータベースを作って、既存のものをインポートしてみてもDBのサイズは小さくなったものの結果は変化無し。
 
どうにもならないものだろうか?もう少し頑張ってみます。

回答
投稿日時: 19/02/13 09:57:38
投稿者: hatena
投稿者のウェブサイトに移動

引用:
サブフォームは永遠にRequeryを繰り返しているようにブルブル表示でした。

 
永遠に、とは、下記のどちらでしょう。
 
コマンドボタンをクリックして、サブフォームにレコードを追加する処理をしている間。
追加処理が終わって再クエリした後は止まる。
 
追加処理を終わっても、永遠にブルブルしている。
 
あと、下記の情報も提示してください。
 
メインフォームは連結か非連結か。
連結の場合は、サブフォームのレコードソースとの関係。
 
サブフォームコントロールのリンク親フィールド、リンク子フィールドの設定。

投稿日時: 19/02/13 12:50:52
投稿者: かきぬま

hatenaさんお忙しい中すいません。
 
状況なのですが
 
追加処理を終わって処理が完了しても
サブフォーム内はブルブル表示したままです。
※Exit Sub が実行された後でも自然に止まる事はありません。
 
ソースオブジェクト
T_作業実績TEMPのサブフォーム
 
サブフォームコントロールの
リンク親フィールド、リンク子フィールドの設定はありません。
 
来週になってしまいますが、
サブフォームの部分だけを削除してしまい
その部分だけ作り直してみたら何か変化があるか?やってみようと思います。

回答
投稿日時: 19/02/13 14:18:56
投稿者: hatena
投稿者のウェブサイトに移動

かきぬま さんの引用:
追加処理を終わって処理が完了しても
サブフォーム内はブルブル表示したままです。
※Exit Sub が実行された後でも自然に止まる事はありません。

 
だとしたら、追加処理ではなく別の部分に問題がある可能性の方が高いと思えます。
 
あるべくシンプルなものを一から作り直して、少しずつ設定やコードを追加していって、その都度、動作確認していくという作業が必要かと。
症状が発生した直前に追加した部分に問題があると特定できます。
 
どちらにしても、バージョン依存の問題で、こちらで症状が再現できないので、こちらからアドバイスできることはもうないです。

投稿日時: 19/02/18 13:30:07
投稿者: かきぬま

hatenaさん何度もありがとうございました。
いろいろとやってみましたがOS依存の動作不良はどうしようもないです。
やった事が全てNG
これ以上時間をかけるくらいならば作り直した方が早いので
access2019で1から作り直す事に決めました。