As per your coding you are checking InvstAc column value. so if same Investmant A/C no is exist it will return -1 else it will insert details and return Investmant No.
First you need to change your store procedure so it will work correct in both cases. You are returning the -1 value if record is exist but not returning the Investmant A/c no if it get inserted so you first need to change in your stored procedure as below. 
CREATE PROCEDURE [dbo].[RDPrintedPassbook]
    @col1 NCHAR(10),
    @Branch NVARCHAR(50),
    @InvstAc NVARCHAR(50),
    @InvstName NVARCHAR(120),
    @NameTitle NCHAR(10),
    @PassBookStatus NCHAR(10),
    @col5 NCHAR(10),
    @col6 NCHAR(10),
    @UserIP NCHAR(10),
    @RecordDateTime DATETIME
AS
    BEGIN
    SET NOCOUNT ON;
    IF EXISTS(SELECT InvstAc FROM GPNL_InvstPassbookStatus WHERE InvstAc = @InvstAc)
      BEGIN
            SELECT -1 -- Username exists.
      END
      ELSE
      BEGIN
		INSERT INTO dbo.GPNL_InvstPassbookStatus
				(col1, Branch, InvstAc, InvstName, NameTitle, PassBookStatus, col5, col6, UserIP, RecordDateTime)
		VALUES(@col1, @Branch, @InvstAc, @InvstName, @NameTitle, @PassBookStatus, @col5, @col6, @UserIP, @RecordDateTime)
		-- return Investmant A/c no
		SELECT @InvstAc
    END    
END
GO
Above store procedure will check if there is any record exist with same Investmant A/c no then it will return -1 else it will insert record and return the Investmant no. if you have any modification in your where codition to check more condition for same Investmant A/C then you can modify the where condition as per your requirement.