プロが教えるわが家の防犯対策術!

初めて投稿させて頂きます。

今まで自社で開発しているソフトを、エンドユーザー環境は
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

A 回答 (2件)

残念ながら同じ環境を作れませんので


私から申し上げることはありません。
こちらなどでご質問されては?と思います。
http://ap.atmarkit.co.jp/bbs/core/
Windows7 + VB6 では、32bit・64bit・UAC ・・・の問題も絡んでくるかも?
また、『問題が発生したため、このプログラムと Windows の対話が停止しました』

『AppHangB1』
で Google ってみてください。
なお、追加の停止時の署名は Google ってもヒットしませんので
解決の糸口にはならないと思います。
一瞬で次に進む場合はキャッシュを読んでいるのかな。

勝手な言い草ではありますが、こちらは閉じずにおいて
新たなコミュニティで質問されて、解決の折にはこちらにも
その内容を載せていただきたいと思います。
マルチポストを勧めるような発言なので恐縮です。
ご判断はそちらにお任せいたします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/20 09:29

確証はありませんが


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)

と省略しなかったら?
    • good
    • 0
この回答へのお礼

nicotinismさん、
早速の回答をありがとうございます。

回答下さった形に変更してみて再試行してみたのですが、
結果は変わらず、改善されませんでした。

Set GlbJETWS = dao.dbengine.Workspaces(0)
と記述して下さった所は、

Set GlbJETWS = dao.Workspaces(0)

Set GlbJETWS = dbengine.Workspaces(0)
のどちらかでないとダメでしたが、どちらも試して同じでした。

お礼日時:2011/04/16 14:21

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