タイトル : Re: IOraField' から型 'String' へのキャストが有効ではありません。 投稿日 : 2005/03/15(Tue) 16:03 投稿者 : 魔界の仮面弁士
> VB6+oo4oをVB.NETに移行しています。 COMオブジェクトの解放処理が面倒かも……。 ODP.NET等に移行した方が楽なのでは? > sSS$ = P_ORA.Fields("USER_ID") ← カラム名を直指定して値取得のイメージ 『Valueプロパティ』を使う必要がありますね。 VB6 と違って、VB.NET では、「引数の無い Default Property」は省略できません。 とりあえず、こんな感じで。 'Oracleへの接続 Dim OraSession As OracleInProcServer.OraSession OraSession = New OracleInProcServer.OraSessionClass Dim OraDatabase As OracleInProcServer.OraDatabase OraDatabase = DirectCast(OraSession.OpenDatabase(Server, User & "/" & Pass, 1), OracleInProcServer.OraDatabase) 'SELECT文を発行 Dim Dyn As OracleInProcServer.OraDynaset Dyn = DirectCast(OraDatabase.CreateDynaset("SELECT * FROM DUAL", 0), OracleInProcServer.OraDynaset) '後から、ReleaseComObjectにて Fieldsオブジェクトを '解放する必要があるため、変数にキャッシュしておく Dim Fs As OracleInProcServer.OraFields Fs = DirectCast(Dyn.Fields, OracleInProcServer.OraFields) '後から、ReleaseComObjectにて Fieldオブジェクトを '解放する必要があるため、変数にキャッシュしておく Dim F As OracleInProcServer.OraField F = DirectCast(Fs("DUMMY"), OracleInProcServer.OraField) '文字列型で取得 Dim S As String Do Until Dyn.EOF S = CStr(F.Value) '★FieldオブジェクトのValueプロパティ Trace.WriteLine(S) Dyn.MoveNext() Loop 'COMオブジェクトの解放処理 System.Runtime.InteropServices.Marshal.ReleaseComObject(F) System.Runtime.InteropServices.Marshal.ReleaseComObject(Fs) System.Runtime.InteropServices.Marshal.ReleaseComObject(Dyn) System.Runtime.InteropServices.Marshal.ReleaseComObject(OraDatabase) System.Runtime.InteropServices.Marshal.ReleaseComObject(OraSession) |