ciao!
ho fatto la modifica alla SP:
	codice:
	
ALTER PROCEDURE [dbo].[usp_InsertRichiesta] 
    @RicReferente INT
    ,@RicIntervento INT
    ,@RicCondominio INT
    ,@RicDataInizio DATETIME = NULL
    ,@RicDataUltimo DATETIME = NULL
    ,@RecordID AS INT = 0 OUTPUT
    ,@IDLast float = 0 OUTPUT
    ,@ERROR_NUMBER AS INT = 0 OUTPUT
    ,@ERROR_SEVERITY AS INT = 0 OUTPUT
    ,@ERROR_STATE AS INT = 0 OUTPUT
    ,@ERROR_PROCEDURE AS NVARCHAR(126) = '' OUTPUT
    ,@ERROR_LINE AS INT = 0 OUTPUT
    ,@ERROR_MESSAGE AS NVARCHAR(4000) = '' OUTPUT
    ,@NUMROWSAFFECTED AS INT = NULL OUTPUT
AS
BEGIN
    IF @RicDataInizio IS NULL
    BEGIN
        SET @RicDataInizio = GETDATE();
        SET @RicDataUltimo = GETDATE();
    END;
    SET NOCOUNT ON;
    BEGIN TRY
        INSERT INTO [dbo].[Richieste] (
            [RicReferente]
            ,[RicIntervento]
            ,[RicCondominio]
            ,[RicDataInizio]
            ,[RicDataUltimo]
            )
        VALUES (
            @RicReferente
            ,@RicIntervento
            ,@RicCondominio
            ,@RicDataInizio
            ,@RicDataUltimo
            );
        --SELECT @RecordID = @@IDENTITY
        SELECT @IDLast = SCOPE_IDENTITY()
    END TRY
    BEGIN CATCH
        PRINT 'CATCH:' + ERROR_MESSAGE()
        IF @@TRANCOUNT > 0
            ROLLBACK TRANSACTION;
        SELECT @ERROR_NUMBER = ERROR_NUMBER()
            ,@ERROR_SEVERITY = ERROR_SEVERITY()
            ,@ERROR_STATE = ERROR_STATE()
            ,@ERROR_PROCEDURE = ERROR_PROCEDURE()
            ,@ERROR_LINE = ERROR_LINE()
            ,@ERROR_MESSAGE = ERROR_MESSAGE()
    END CATCH;
END
 
però non ho capito cmq il codice VB come dovrei modificarlo.
ho fatto vari tentativi rilegendomi anche la pagina che mi hai mandato.
mi sembra che ExecuteNonQuery dovrebbe andare, ma vedo sempre 0:
	codice:
	    Protected Sub btnInviaRichiesta_Click(sender As Object, e As EventArgs) Handles btnInviaRichiesta.Click
        oConn.Open()
        Dim cmd As SqlCommand = New SqlCommand("[usp_InsertRichiesta]", oConn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Clear()
        cmd.Parameters.AddWithValue("@RicReferente", uid)
        cmd.Parameters.AddWithValue("@RicIntervento", drpDestin.SelectedValue)
        cmd.Parameters.AddWithValue("@RicCondominio", drpCond.SelectedValue)
        cmd.Parameters.Add("@IDLast", SqlDbType.Int).Direction = ParameterDirection.ReturnValue
        cmd.ExecuteNonQuery()
        'Diagnostics.Debug.WriteLine(cmd.Parameters("@IDLast").Value)
        btnInviaRichiesta.Text = cmd.Parameters("@IDLast").Value
        oConn.Close()
    End Sub