• 締切済み

Windows7でレコオープンに時間がかかる

初めて投稿させて頂きます。 今まで自社で開発しているソフトを、エンドユーザー環境は WINDOWS XP PRO/ACCESS2000(インストール)/VB6 SP6(インストール) で納品していました。 ユーザーが処理するインターフェースはVB6のEXEのみ、 データはクライアントPC内にACCESS2000のMDBに格納されるのみです。 この度、エンドユーザーのパソコン新調につき、エンドユーザー環境が WINDOWS7 PRO(SP1なし、HDDはRAID 1)/ACCESS2003(インストール)/VB6 SP6(インストール) となりました。 対応するために、自社の開発環境は今までの旧エンドユーザー環境と同じ WINDOWS XP PRO/ACCESS2000/VB6SP6 で開発し、 テストのため、エンドユーザーからデータを全て格納しているMDBを WINDOWS 7 PROにコピーして移行し、EXEも上記開発環境で作成・コンパイル したものをコピーしてテストしたのですが、作成したVB6プログラムの一つにて、 Visual Basic は応答していません 画面が出て、画面内の問題の詳細の表示をクリックして見てみると、 説明:   問題が発生したため、このプログラムと Windows の対話が停止しました。 問題の署名:  問題イベント名: AppHangB1  アプリケーション名: VB6.EXE ~省略~ と出て、処理が次に進むまで1~3分待たされるという現象が起きます。 以下、その現象が発生するソースコードです。 ------------------------------------------------------------------------ ※ 参照設定はMicrosoft DAO 3.6 Object Library にチェック Dim GlbJETWS As Workspace Dim GlbJETDB As Database Dim strSQL as String Dim rs As Recordset ' lngMSCode は フォーム上の数値 ' lngDno は フォーム上の数値 Set GlbJETWS = Workspaces(0) Set GlbJETDB = GlbJETWS.OpenDatabase("C:\UserData.mdb") strSQL = "SELECT * FROM JISSEKI" strSQL = strSQL & " WHERE MSCode=" & lngMSCode & " AND DNo=" & lngDno Set rs = GlbJETDB.OpenRecordset(strSQL, dbOpenSnapshot) ------------------------------------------------------------------------ 最後の行、 Set rs = GlbJETDB.OpenRecordset(strSQL, dbOpenSnapshot) を処理した段階で起こります。MSCodeとDNoは主キーに設定しており、 JISSEKIテーブルのレコード件数は約32,000件です。 必ず起こるという訳でもなく、一瞬で次に進む場合もあります。 色々調べてみましたが対処法がわからず困っています。 どなたか、対処法が分かる方がおられましたら、ご教授願います。 以下、Visual Basic は応答していません 画面の全文です。 説明: 問題が発生したため、このプログラムと Windows の対話が停止しました。 問題の署名: 問題イベント名: AppHangB1 アプリケーション名: VB6.EXE アプリケーションのバージョン: 6.0.97.82 アプリケーションのタイムスタンプ: 403acf6c 停止時の署名: 437c 停止の種類: 0 OS バージョン: 6.1.7600.2.0.0.256.48 追加の停止時の署名 1: 437c62729313fb05a4c4360af8eaeafb 追加の停止時の署名 2: 93f1 追加の停止時の署名 3: 93f1a3ce5c07082e07212059c24879e4 追加の停止時の署名 4: 437c 追加の停止時の署名 5: 437c62729313fb05a4c4360af8eaeafb 追加の停止時の署名 6: 93f1 追加の停止時の署名 7: 93f1a3ce5c07082e07212059c24879e4

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

残念ながら同じ環境を作れませんので 私から申し上げることはありません。 こちらなどでご質問されては?と思います。 http://ap.atmarkit.co.jp/bbs/core/ Windows7 + VB6 では、32bit・64bit・UAC ・・・の問題も絡んでくるかも? また、『問題が発生したため、このプログラムと Windows の対話が停止しました』 や 『AppHangB1』 で Google ってみてください。 なお、追加の停止時の署名は Google ってもヒットしませんので 解決の糸口にはならないと思います。 一瞬で次に進む場合はキャッシュを読んでいるのかな。 勝手な言い草ではありますが、こちらは閉じずにおいて 新たなコミュニティで質問されて、解決の折にはこちらにも その内容を載せていただきたいと思います。 マルチポストを勧めるような発言なので恐縮です。 ご判断はそちらにお任せいたします。

Office2011
質問者

お礼

UAC等、関連するのかなどは調べてなかったので調べてみます。 その後成果がなかったら、少し他の所でも質問してみようと思います。 どうもありがとうございました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

確証はありませんが Dim GlbJETWS As Workspace Dim GlbJETDB As Database Dim strSQL as String Dim rs As Recordset ' lngMSCode は フォーム上の数値 ' lngDno は フォーム上の数値 Set GlbJETWS = Workspaces(0) を Dim GlbJETWS As dao.Workspace Dim GlbJETDB As dao.Database Dim strSQL as String Dim rs As dao.Recordset ' lngMSCode は フォーム上の数値 ' lngDno は フォーム上の数値 Set GlbJETWS = dao.dbengine.Workspaces(0) と省略しなかったら?

Office2011
質問者

お礼

nicotinismさん、 早速の回答をありがとうございます。 回答下さった形に変更してみて再試行してみたのですが、 結果は変わらず、改善されませんでした。 Set GlbJETWS = dao.dbengine.Workspaces(0) と記述して下さった所は、 Set GlbJETWS = dao.Workspaces(0) か Set GlbJETWS = dbengine.Workspaces(0) のどちらかでないとダメでしたが、どちらも試して同じでした。