Click here to Skip to main content
15,893,381 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
While Working on a project, facing with a error, unable to find my mistake...
SQL
Create PRoc uspCheckSubscription
@Userid int,@HasSubscrip bit out, @SubscripID int out,@HasSubscripLife bit out
AS
BEGIN
IF EXISTS (Select SubscriptionId from TblSubscription where UserId = @Userid and IsActive = 1)
BEGIN
Set @HasSubscrip = 1
Set @SubscripID = (Select SubscriptionId from TblSubscription where UserId = @Userid and IsActive = 1)
IF EXISTS (Select SubscriptionId from TblSubscription where UserId = @Userid and IsActive = 1 and GETDATE() between StartDate and FinishDate)
BEGIN
SET @HasSubscripLife = 1
END
ELSE
BEGIN
SET @HasSubscripLife = 0
UPDATE TblSubscription SET IsActive = 0 WHERE UserId = @Userid and IsActive = 1
END
END
ELSE
BEGIN
Set @HasSubscrip = 0
SET @HasSubscripLife = 0
END
END


C#
private void GetSuscriptionetials(int Userid)
    {
        int SubscripID;
        Boolean HasSubscrip, HasSubscripLife;
        try
        {
            db1.sqlcmd = new SqlCommand("uspCheckSubscription");
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                db1.sqlcmd.CommandType = CommandType.StoredProcedure;
                db1.sqlcmd.Parameters.AddWithValue("@Userid", Userid);
                db1.sqlcmd.Parameters.Add("@HasSubscrip", SqlDbType.Bit);
                db1.sqlcmd.Parameters.Add("@HasSubscripLife", SqlDbType.Bit);
                db1.sqlcmd.Parameters.Add("@SubscripID", SqlDbType.Int);
                db1.sqlcmd.Parameters["@HasSubscrip"].Direction = ParameterDirection.Output;
                db1.sqlcmd.Parameters["@HasSubscripLife"].Direction = ParameterDirection.Output;
                db1.sqlcmd.Parameters["@SubscripID"].Direction = ParameterDirection.Output;
                db1.sqlcmd.Connection = db1.sqlcon;
                db1.sqlcon.Open();
                int success = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
                HasSubscrip = Convert.ToBoolean(db1.sqlcmd.Parameters["@HasSubscrip"].Value);
                HasSubscripLife = Convert.ToBoolean(db1.sqlcmd.Parameters["@HasSubscripLife"].Value);
                SubscripID = Convert.ToInt32(db1.sqlcmd.Parameters["@SubscripID"].Value);
                ViewState["SubscripID"] = SubscripID;
                ViewState["HasSubscrip"] = HasSubscrip;
                ViewState["HasSubscripLife"] = HasSubscripLife;
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally {
            db1.sqlcon.Close();
        }
    }
Posted

1 solution

You can do it in your storeprocedure

change on this line
Set @SubscripID = (Select TOP 1 SubscriptionId from TblSubscription where UserId = @Userid and IsActive = 1)


Use more conditions in where clause to return single and right value in a subquery.
 
Share this answer
 
v2
Comments
Muhammad Taqi Hassan Bukhari 10-May-14 13:27pm    
Problem Solved, But Can you tell me the Reason of my mistake and logic of your solution.
[no name] 10-May-14 13:33pm    
see may be multiple items in same UserId exist in table TblSubscription
Muhammad Taqi Hassan Bukhari 10-May-14 15:02pm    
Yes you are right, it put dummy data for testing and multiple subscription are there for one userid.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900