ADODB connessione per eseguire procedure di SQL Server
-
22-09-2019 - |
Domanda
Al momento sto cercando di eseguire una determinata procedura (SQL 2005) in VB6, passando alcuni parametri:
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
Nell'ultima riga ottengo il seguente messaggio di errore:
alt text http://dl.dropbox.com/u/3045472/ERRO .png
che in inglese si legge: "Errore di violazione di accesso o la sintassi"
Questo messaggio è davvero generica, e non ho la più pallida idea di dove potrebbe essere il problema.
Che cosa ho fatto di sbagliato?
Qui è il parametro che riceve parte del codice SQL nella procedura:
@EmpresaCNPJ varchar(14),
@EntradaSaida char(1)=null,
@Participante varchar(60)=null,
@nroNotaFiscal int=null,
@serieNotaFiscal smallint=null,
@EtapaInicial tinyint=null,
@LineComplement varchar(255)=null
Mi è stato detto che non ogni parametro dovrebbe essere passato, e che dovrebbe funzionare con appena cinque (su sette).
Soluzione
Dove stai impostando il nome della stored procedure?
cmd.CommandName = ....
EDIT: Impostare la CommandName
al nome della stored procedure, prima di iniziare a chiamare Parameters.Append