ADO接続でエラー


ようこ  2006-09-28 21:10:24  No: 133452

VB6 Windows XP Professionalで開発しています。
圧縮ファイル(lzh)の解凍後、ADO接続すると New ADODB.Connectionがうまくいかずメッセージがでて終了してしまいます。解凍の処理を外すと正常にいくのですが、解凍の処理後メモリ破壊か何かしているのでしょうか?それともプログラムの書き方が間違っているのでしょうか?解決方法を教えてください。
*******************
 メッセージ内容
*******************
問題が発生したため、Visual Basic を終了します。ご不便をおかけして申し訳ありません。
作業途中であった場合、その情報は失われた可能性があります。
この問題をMicrosoft に報告してください。
Visual Basic のエラー報告が作成されました。弊社では、この報告を製品の改善に
役立てるとともに、匿名の機密情報として扱います。
      :
      :
*******************
Private mCn             As ADODB.Connection
Private Sub Dataget_cmd_Click()

      :
      :
      :
        
'----- Parameter Set
    lhapath = "e " & DP_FOLDR & "*.lzh " & DP_FOLDR
'----- ファイル解凍
    If LHA(hWnd, lhapath) = False Then
        Ret_ID = MsgBox("LHA 解凍エラー" & FNCNAM, vbOKOnly Or vbCritical, NOMERR)
        exit sub
    End If

'----- 接続データベースの設定
    gbl_cnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=" & GPM_APATH & "..\DB\HBSYS.mdb"
    
    gbl_cnTime = 10

'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       Set mCn = New ADODB.Connection        '→  ここでエラーメッセージ
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    With mCn
        .ConnectionString = gbl_cnString
        .CursorLocation = adUseClient
        .Mode = adModeRead
        .CommandTimeout = gbl_cnTime
        .Open
    End With
      
      :
      :
      :
      :
      :
      :

End Sub

Public Function LHA(hwd As Variant, para As String) As Boolean

  Dim rcd As Long
  Dim cons As String

'** LHA 圧縮解凍
  cons = Space(256)
  rcd = Unlha(hwd, para, cons, LenB(cons))
  If rcd <> 0 Then
    LHA = False
  Else
    LHA = True
  End If

End Function

'** Unlha32 API 定義
Public Declare Function Unlha Lib "unlha32" (ByVal hWindows As Long, ByVal CmdLine As String, ByVal Console As String, ByVal size As Long) As Long


もげ  2006-09-28 23:05:27  No: 133453

>cons = Space(256)
>rcd = Unlha(hwd, para, cons, LenB(cons))

とりあえず、
Dim dwSize As Long
cons = Space(4096)
LenBじゃバッファサイズが単純に2倍あることになってしまうから、
dwSize = Len(cons)
rcd = Unlha(hwd, para, cons, dwSize)
くらいで様子を見ましょうか。
というか、
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t23.htm
の丸ごとコピペですか?  だとすると、
|  ・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
| ・著作権明示部分の改編は認めない。
| ・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
|   プログラムを開発することは自由です。
| ・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
|   その他有償プロダクトとして配布・販売するには、私の許可が必要です。
|   (無償のフリーソフトウェアなら、自由に配布しても良い。)
だそうですけど。
まあ、サンプル作者の責任ではなく、
意味を理解せずに、コピペで済まそうとすることが問題でしょうけど。


ようこ  2006-09-28 23:59:08  No: 133454

解決しました!ありがとうございます。(Y.SAKさん失礼しました。(>_<))


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加