ParamArray に問題があります。これはデフォルトでOPTIONALになっているはずですが、そうではないようです。
ASP ページに次のコードがあります。
dim oUtil, sSQL, oRs, bCARS
Set oUtil = server.CreateObject("CPUtility.Feature")
sSql = "select CARSFlag from Version"
set oRs = oUtil.Execute("", sSql)
それから私のCOMクラスには次の定義があります
Public Function Execute(ByVal oDBConnection As Object, ByVal sSQL As String, ByVal ParamArray avParameters() As Object) As ADODB.Recordset
これにより、Execute メソッドが見つからない/サポートされていないというエラーが発生します。しかし、ASP ページの Execute メソッドを変更して ParamArray に何かを渡すと、問題なく動作します。
dim oUtil, sSQL, oRs, bCARS
Set oUtil = server.CreateObject("CPUtility.Feature")
sSql = "select CARSFlag from Version WHERE dbLanguage=? AND UtilityUpgrade=?"
set oRs = oUtil.Execute("", sSql, _
Array("lang", adVarchar, adParamInput, 1, "E"), _
Array("bit", adBoolean, adParamInput, 0, 1))
ParamArray パラメーターを省略すると、メソッドが見つからない/サポートされない理由がわかりません。
これは .NET 4.6.2 を使用しており、クラスは GACUTIL を使用して GAC に登録され、REGASM を使用してすべてのエントリがレジストリに追加されています。