0

私は現在、VB6で特定のプロシージャ(sql 2005)を実行しようとしており、いくつかのパラメータを渡しています。

Dim conn As Connection
Set conn = New Connection
conn.Open "Provider=whateverprovider;Data Source=whateversource;Database=whateverdatabase;User Id=whateverID;Password=whatever"
Dim CMD As ADODB.Command
Dim rs As ADODB.Recordset
Set CMD = New ADODB.Command
Set CMD.ActiveConnection = conn
CMD.CommandType = adCmdStoredProc
CMD.Parameters.Append CMD.CreateParameter("@EmpresaCNPJ", adVarChar, adParamInput, 14, "64687015000152")
CMD.Parameters.Append CMD.CreateParameter("@EntradaSaida", adChar, adParamInput, 1, "S")
CMD.Parameters.Append CMD.CreateParameter("@Participante", adVarChar, adParamInput, 60, "0000000020")
CMD.Parameters.Append CMD.CreateParameter("@nroNotaFiscal", adInteger, adParamInput)
CMD.Parameters("@nroNotaFiscal").Value = 2289
CMD.Parameters.Append CMD.CreateParameter("@serieNotaFiscal", adSmallInt, adParamInput)
CMD.Parameters("@serieNotaFiscal").Value = 1
Set rs = CMD.Execute

最後の行に、次のエラーメッセージが表示されます。

代替テキストhttp://dl.dropbox.com/u/3045472/ERRO.png

英語では「構文エラーまたはアクセス違反」と表示されます。

このメッセージは本当に一般的なものであり、問​​題がどこにあるのかについての手がかりはありません。

私は何を間違えましたか?

手順のSQLコードの一部を受け取るパラメータは次のとおりです。

   @EmpresaCNPJ varchar(14), 
   @EntradaSaida char(1)=null, 
   @Participante varchar(60)=null, 
   @nroNotaFiscal int=null, 
   @serieNotaFiscal smallint=null, 
   @EtapaInicial tinyint=null, 
   @LineComplement varchar(255)=null 

すべてのパラメーターを渡す必要はなく、5つ(7つのうち)で機能する必要があると言われました。

4

1 に答える 1

1

ストアドプロシージャの名前はどこに設定しますか?
cmd.CommandName = ....

編集:CommandName呼び出しを開始する前に、をストアドプロシージャの名前に設定しますParameters.Append

于 2010-02-23T13:27:07.893 に答える