Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Parametro Di Ritorno Con Sql Server 2008 R2 E Vb.net

    Salve a tutti, sto facendo un gestionale di magazzino, e sto curando la procedura di scarico.

    Ho fatto una stored procedure semplicissima, che non si occupa di salvare i dati, ma semplicemente di pescare il record di scarico salvato e di affibiargli un numero progressivo (inizialmente salvo il record con numero=0). Passo come parametri l'ID del record del documento (pk) e il l'ID del tipo documento (ci possono essere documenti di tipo diverso, con numerazioni diverse).

    Lo scopo è ripescare come parametro di ritorno il numero di documento salvato

    La procedura è la seguente:

    codice:
    ALTER PROCEDURE AGGIORNA_PROGRESSIVO
    	@IDDOCUMENTO INT,
    	@IDTIPODOCUMENTO INT,
    	@NUMERODOC INT OUTPUT
    AS
    BEGIN
    	SET NOCOUNT ON;
    	
    	SET TRANSACTION ISOLATION  LEVEL SERIALIZABLE
    	BEGIN TRANSACTION
    		UPDATE Documenti.Scarico SET NUMERO = (SELECT MAX(NUMERO)+1 FROM DOCUMENTI.Scarico WHERE IDTIPODOCUMENTO=@IDTIPODOCUMENTO) WHERE ID=@IDDOCUMENTO AND NUMERO = 0
    	COMMIT
    	SELECT @NUMERODOC = NUMERO FROM DOCUMENTI.Scarico WHERE ID=@IDDOCUMENTO
    	RETURN @NUMERODOC
    END
    Da vb 2010, questo è il codice per ripescare il parametro di ritorno

    codice:
    Function Salva() as integer
                Dim Cmd As New SqlClient.SqlCommand
                Cmd.CommandType = CommandType.StoredProcedure
                Cmd.Connection = cnConnessione
                Cmd.CommandText = "AGGIORNA_PROGRESSIVO"
                Dim p As New SqlClient.SqlParameter("NUMERODOC", SqlDbType.Int)
                p.Direction = ParameterDirection.ReturnValue
                Cmd.Parameters.Add(p)
                Cmd.Parameters.AddWithValue("IDDOCUMENTO", ritorno)
                Cmd.Parameters.AddWithValue("IDTIPODOCUMENTO", IDTIPODOCUMENTO)
    
                Cmd.ExecuteNonQuery()
    
                Return Cmd.Parameters("NUMERODOC").Value
    
    End Function
    ritorno è un variabile contenete l'ID del documento appena salvato. Non vi posto il codice di salvataggio, tanto quello funziona.

    Ecco il problema: da codice mi dice che la procedura necessita di un valore per NUMERODOC, ma se provo ad eseguire la stored dal management studio, funziona, fa l'update e mi ritorna il parametro di ritorno.

    Cosa c'è che non va ?
    E il tipo di transazione? Il programma verrà usato da più pc, è ho pensato che isolare la procedura quando viene chiamata poteva essere una buona soluzione per ritrovarmi con numeri di documento doppi o tripli o peggio.

  2. #2

  3. #3
    Perpiacere rispondetemi

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.