Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Errore nell'esecuzione di un SP di insert

    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

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Errore nell'esecuzione di un SP di insert

    Originariamente inviato da valeria75
    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
    Attenta return ti fa uscire prima dalla SP, per i parametri mi sembra tutto corretto ma ho visto velocemente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.