Da 4 ore sto cercando di capire cosa sbaglio in questo codice che non mi ha mai dato problemi fino a qualche modifica fa :-)) (il problema è che non ricordo la modifica)... ho verificato tutti i parametri e li passo tutti!!!!
Ottengo questo errore
Procedure or function st_DocumentiRighe_Insert has too many arguments specified.
nell'esecuzione di questo codice
string qry = "st_DocumentiRighe_Insert";
dbMananger.OpenConn();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = qry;
cmd.Parameters.Add(new SqlParameter("@IDClienti", clas.getNumber(myReader["IDClienti"].ToString())));
cmd.Parameters.Add(new SqlParameter("@Anno", myReader["anno"].ToString()));
cmd.Parameters.Add(new SqlParameter("@Numero", Numero));
cmd.Parameters.Add(new SqlParameter("@Pos", myReader["pos"].ToString()));
cmd.Parameters.Add(new SqlParameter("@IDArticoli", clas.getNumber(myReader["IDArticoli"].ToString())));
cmd.Parameters.Add(new SqlParameter("@DataConferma", Convert.ToDateTime(myReader["dataconferma"])));
cmd.Parameters.Add(new SqlParameter("@QtaOrd", qtaMovimentata));
cmd.Parameters.Add(new SqlParameter("@QtaSped", "0"));
cmd.Parameters.Add(new SqlParameter("@Prezzo", clas.getDecimalNumber(myReader["prezzo"].ToString())));
cmd.Parameters.Add(new SqlParameter("@IDIva", clas.getNumber(myReader["IDIva"].ToString())));
cmd.Parameters.Add(new SqlParameter("@IDTestata", IDTestata));
cmd.Parameters.Add(new SqlParameter("@Sc1", clas.getDecimalNumber(myReader["Sc1"].ToString())));
cmd.Parameters.Add(new SqlParameter("@Sc2", clas.getDecimalNumber(myReader["Sc2"].ToString())));
cmd.Parameters.Add(new SqlParameter("@provv", clas.getNumber(myReader["provv"].ToString())));
cmd.Parameters.Add(new SqlParameter("@stato", "A"));
cmd.Parameters.Add(new SqlParameter("@Codice", Regex.Replace(myReader["Codice"].ToString(), "'", "''")));
cmd.Parameters.Add(new SqlParameter("@Descrizione", Regex.Replace(myReader["Descrizione"].ToString(),"'","''")));
cmd.Parameters.Add(new SqlParameter("@Tipo", "P"));
cmd.Parameters.Add(new SqlParameter("@Aliva", clas.getNumber(myReader["aliva"].ToString())));
cmd.Parameters.Add(new SqlParameter("@tipodocumento", TipoDocDestinazione));
cmd.Parameters.Add(new SqlParameter("@DataDocumentoRiga", dataDocumento));
cmd.Parameters.Add(new SqlParameter("@IDMagazzini", clas.getNumber(myReader["IDMagazzini"].ToString())));
cmd.Parameters.Add(new SqlParameter("@IDMagUbicazioniArticolo", clas.getNumber(myReader["IDMagUbicazioniArticolo"].ToString())));
cmd.Parameters.Add(new SqlParameter("@Nota", ""));
cmd.Parameters.Add(new SqlParameter("@RigaSconto", myReader["RigaSconto"].ToString()));
cmd.Parameters.Add(new SqlParameter("@IDRigaDocumentoPadre", clas.getNumber(myReader["id"].ToString())));
SqlParameter outputParameterResultRighe = new SqlParameter();
outputParameterResultRighe.ParameterName = "@vEsito";
outputParameterResultRighe.SqlDbType = SqlDbType.Int;
outputParameterResultRighe.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outputParameterResultRighe);
SqlParameter outputParameterIDRighe = new SqlParameter();
outputParameterIDRighe.ParameterName = "@ultimoID";
outputParameterIDRighe.SqlDbType = SqlDbType.Int;
outputParameterIDRighe.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outputParameterIDRighe);
cmd.Connection = dbMananger.dbconn;
cmd.ExecuteNonQuery();
la SP è qualche cosa del tipo:
ALTER PROCEDURE [dbo].[st_DocumentiRighe_Insert]
(
@IDClienti int,
@Anno int,
@Numero varchar(20),
@Pos int,
@IDArticoli int,
@DataConferma datetime,
@QtaOrd int,
@QtaSped int,
@Prezzo decimal(18,4),
@IDIva int,
@IDTestata int,
@Sc1 decimal(10,2),
@Sc2 decimal(10,2),
@provv decimal(10,2),
@stato varchar(1),
@Codice varchar(20),
@Descrizione varchar(150),
@Tipo varchar(1),
@Aliva int,
@tipodocumento varchar(2),
@DataDocumentoRiga datetime,
@IDMagazzini int,
@IDMagUbicazioniArticolo int,
@Nota varchar(250),
@RigaSconto varchar(1),
@IDRigaDocumentoPadre int,
@vEsito int OUTPUT,
@ultimoID int OUTPUT
)
AS
-- dichiaro le variabili
declare @Errore int
-- setto i valori
set @Errore = 0
set @vEsito = 0
BEGIN TRANSACTION
SET NOCOUNT ON;
INSERT INTO DocumentiRighe(IDClienti,Anno,Numero,Pos,IDArticol i,DataConferma,QtaOrd,QtaSped,Prezzo,IDIva,IDTesta ta,
Sc1,Sc2,provv,stato,Codice,Descrizione,Tipo,Aliva, tipodocumento,DataDocumentoRiga,IDMagazzini,IDMagU bicazioniArticolo,
Nota,RigaSconto,IDRigaDocumentoPadre)
VALUES (@IDClienti,@Anno,@Numero,@Pos,@IDArticoli,@DataCo nferma,@QtaOrd,@QtaSped,@Prezzo,@IDIva,@IDTestata,
@Sc1,@Sc2,@provv,@stato,@Codice,@Descr
....
...
return @vEsito
return @ultimoID