2011-01-27 11 views
2

従来のASPページで使用されている.NETアセンブリがあります。私はADODBレコードセットを返すメソッドを作成しました。私のADODBコマンドオブジェクトでは、私がadCmdStoredProc CommandTypeプロパティに次の形式を使用してパラメータを供給しています....NETアセンブリのADODBコマンドにパラメータを追加するときのエラー

With ADODBCmd 
.ActiveConnection = ADODBConn 
.Prepared = True 
.CommandType = CommandTypeEnum.adCmdStoredProc 
.NamedParameters = True 
.CommandText = Sql_GetMyBook 
.Parameters.Append(.CreateParameter("@book", DataTypeEnum.adChar, ParameterDirectionEnum.adParamInput, 50, MyBook)) 
End With 

私は鋳造のエラーを取得...

のSystem.Exceptionは
未処理でしたメッセージ= System.InvalidCastException: タイプ 'System .__ ComObject'のCOMオブジェクトをクラスタイプ 'ADODB.InternalParameter'にキャストできません。 COMコンポーネントを表す型の がCOMコンポーネントを表していない型にキャストできません。しかし は、 の下位COMコンポーネントがサポートされている限り、インターフェイスにキャストできます QueryInterfaceはのIIDを呼び出します。ラインで

.Parameters.Append(.CreateParameter("@book", DataTypeEnum.adChar, ParameterDirectionEnum.adParamInput, 50, MyBook)) 

任意のアイデア?

ストアドプロシージャ:

ALTER PROCEDURE [dbo].[GetMybook] 
    -- Add the parameters for the stored procedure here 
    @book char(50) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    SELECT BookTitle, Author, PulishedDate 
    FROM  Library 
    WHERE  [email protected] 

答えて

6

Microsoft ActiveXデータにおける「.CreateParameter」メソッドの戻り値との差(意図しないかない)があり、ライブラリ

2.7オブジェクト - ADODBによって期待される戻り値 『ADODB.InternalParameter』(。 Commandオブジェクト)

2.8 - 私は2.8から私の参照を変更しなければならなかった私の目的のためには、ADODB.Commandが処理できないか、と何をするかわからない戻り値「システム.__ ComObject」()

コマンドオブジェクトに作成されたパラメータを追加するために、2.7ライブラリに。

私の解決策を絞り込むためにChris Behrensに感謝します。

0

私はそれが "のMyBook" の値に関係していると思います。私たちはそれがデータ型からの単一の文字であることを期待するべきですが、エラーメッセージはそれが本格的なCOMオブジェクトであることを示しているようです。たぶん「MyBook.Id」のようなものでしょうか?

+0

MyBookは実際には文字列で、おそらくもっと明確になっているはずです。 – ihillVT

+0

代わりに型enumをadVarCharに変更してみてください。 –

+0

adVarCharを変更すると、同じエラーが発生しました。 – ihillVT

関連する問題