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
>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 の開発関数である。
| ・著作権明示部分の改編は認めない。
| ・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
| プログラムを開発することは自由です。
| ・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
| その他有償プロダクトとして配布・販売するには、私の許可が必要です。
| (無償のフリーソフトウェアなら、自由に配布しても良い。)
だそうですけど。
まあ、サンプル作者の責任ではなく、
意味を理解せずに、コピペで済まそうとすることが問題でしょうけど。
解決しました!ありがとうございます。(Y.SAKさん失礼しました。(>_<))
ツイート | ![]() |