Click here to Skip to main content
15,891,248 members
Please Sign up or sign in to vote.
3.00/5 (2 votes)
See more:
Hi,

I want to Search User accroding to DOB. See below code.
I want to select all user whose dob between 01-01-1980 and 01--01-1990
ERROR IS:
Parameter '@dob' was supplied multiple times.


DAL:
public DataSet FindCandidate1(int code, DateTime sta, DateTime end)
   {
     cmd = new SqlCommand("Sp_Recruit_Job", cls.connect());
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.Parameters.Add(new SqlParameter("@JobCode", SqlDbType.Int)).Value = code;
     cmd.Parameters.Add(new SqlParameter("@dob", SqlDbType.DateTime)).Value = sta;
     cmd.Parameters.Add(new SqlParameter("@dob", SqlDbType.DateTime)).Value = end;
     cmd.Parameters.Add(new SqlParameter("@callval", SqlDbType.Int)).Value = 1;
     SqlDataAdapter da = new SqlDataAdapter(cmd);
     DataSet ds = new DataSet();
     da.Fill(ds);
     return ds;
   }


BAL:
public DataSet FindCandidate1(int code, DateTime sta, DateTime end)
  {
    FetchDataDal FDB = new FetchDataDal();
    try
    {
      return FDB.FindCandidate1(code, sta, end);
    }
    catch
    {
      throw;
    }
    finally
    {
      FDB = null;
    }
  }

C#:
public void FindCandidate()
   {
     FetchDataBal FDB = new FetchDataBal();
     DataSet ds = new DataSet();
     ds = FDB.FindCandidate1(Convert.ToInt32(ddl_position.SelectedItem.Value), Convert.ToDateTime(txtFrom.Text), Convert.ToDateTime(txtBetween.Text));
     RadGrid2.DataSource = ds;
     RadGrid2.DataBind();
   }


   protected void btn_search_Click(object sender, EventArgs e)
   {
     FindCandidate();
   }

Stored Procedure:
if @callval=1
begin

select rp_tbl_personal_details.c_f_name + '' +c_m_name + ''+ c_l_name  as name,
rp_tbl_personal_details.dob,

rp_tbl_academic_details.prof_qual ,rp_tbl_academic_details.grad_qual,
rp_tbl_academic_details.prof_stream,rp_tbl_academic_details.prof_year,
rp_tbl_academic_details.grad_stream,rp_tbl_academic_details.grad_year,
rp_tbl_professional.ex_yyyy,

rp_tbl_family.assignment1,rp_tbl_family.assignment2,rp_tbl_family.assignment3,
rp_tbl_family.assignment4,rp_tbl_family.assignment5,

rp_tbl_professional.emp_gross,rp_tbl_CreateNewJob.JobCode,rp_tbl_CreateNewJob.Position,
rp_tbl_ApplyforJob.email,rp_tbl_ApplyforJob.TimeReq,rp_tbl_ApplyforJob.ExpSalary,
dtInterview =  case rp_tbl_ApplyforJob.dtInterview
when 1 then 'Any Day'
when 2 then 'Week Day'
when 3 then 'Weekends'
else 'Other'
end

from rp_tbl_CreateNewJob inner join rp_tbl_ApplyforJob
on rp_tbl_CreateNewJob.JobCode=rp_tbl_ApplyforJob.JobCode
inner join rp_tbl_personal_details on
rp_tbl_ApplyforJob.email=rp_tbl_personal_details.email
inner join rp_tbl_academic_details on
rp_tbl_personal_details.personal_id=rp_tbl_academic_details.personal_id
inner join rp_tbl_family on rp_tbl_academic_details.academic_id=rp_tbl_family.academic_id
inner join
rp_tbl_professional on
rp_tbl_family.family_id=rp_tbl_professional.family_id

where rp_tbl_CreateNewJob.JobCode = @JobCode and
rp_tbl_personal_details.dob BETWEEN @dob and @dob
endif @callval=10
begin

select rp_tbl_personal_details.c_f_name + '' +c_m_name + ''+ c_l_name  as name,
rp_tbl_personal_details.dob,

rp_tbl_academic_details.prof_qual ,rp_tbl_academic_details.grad_qual,
rp_tbl_academic_details.prof_stream,rp_tbl_academic_details.prof_year,
rp_tbl_academic_details.grad_stream,rp_tbl_academic_details.grad_year,
rp_tbl_professional.ex_yyyy,

rp_tbl_family.assignment1,rp_tbl_family.assignment2,rp_tbl_family.assignment3,
rp_tbl_family.assignment4,rp_tbl_family.assignment5,

rp_tbl_professional.emp_gross,rp_tbl_CreateNewJob.JobCode,rp_tbl_CreateNewJob.Position,
rp_tbl_ApplyforJob.email,rp_tbl_ApplyforJob.TimeReq,rp_tbl_ApplyforJob.ExpSalary,
dtInterview =  case rp_tbl_ApplyforJob.dtInterview
when 1 then 'Any Day'
when 2 then 'Week Day'
when 3 then 'Weekends'
else 'Other'
end

from rp_tbl_CreateNewJob inner join rp_tbl_ApplyforJob
on rp_tbl_CreateNewJob.JobCode=rp_tbl_ApplyforJob.JobCode
inner join rp_tbl_personal_details on
rp_tbl_ApplyforJob.email=rp_tbl_personal_details.email
inner join rp_tbl_academic_details on
rp_tbl_personal_details.personal_id=rp_tbl_academic_details.personal_id
inner join rp_tbl_family on rp_tbl_academic_details.academic_id=rp_tbl_family.academic_id
inner join
rp_tbl_professional on
rp_tbl_family.family_id=rp_tbl_professional.family_id

where rp_tbl_CreateNewJob.JobCode = @JobCode and
rp_tbl_personal_details.dob BETWEEN @dob and @dob
endif @callval=10
begin

select rp_tbl_personal_details.c_f_name + '' +c_m_name + ''+ c_l_name  as name,
rp_tbl_personal_details.dob,

rp_tbl_academic_details.prof_qual ,rp_tbl_academic_details.grad_qual,
rp_tbl_academic_details.prof_stream,rp_tbl_academic_details.prof_year,
rp_tbl_academic_details.grad_stream,rp_tbl_academic_details.grad_year,
rp_tbl_professional.ex_yyyy,

rp_tbl_family.assignment1,rp_tbl_family.assignment2,rp_tbl_family.assignment3,
rp_tbl_family.assignment4,rp_tbl_family.assignment5,

rp_tbl_professional.emp_gross,rp_tbl_CreateNewJob.JobCode,rp_tbl_CreateNewJob.Position,
rp_tbl_ApplyforJob.email,rp_tbl_ApplyforJob.TimeReq,rp_tbl_ApplyforJob.ExpSalary,
dtInterview =  case rp_tbl_ApplyforJob.dtInterview
when 1 then 'Any Day'
when 2 then 'Week Day'
when 3 then 'Weekends'
else 'Other'
end

from rp_tbl_CreateNewJob inner join rp_tbl_ApplyforJob
on rp_tbl_CreateNewJob.JobCode=rp_tbl_ApplyforJob.JobCode
inner join rp_tbl_personal_details on
rp_tbl_ApplyforJob.email=rp_tbl_personal_details.email
inner join rp_tbl_academic_details on
rp_tbl_personal_details.personal_id=rp_tbl_academic_details.personal_id
inner join rp_tbl_family on rp_tbl_academic_details.academic_id=rp_tbl_family.academic_id
inner join
rp_tbl_professional on
rp_tbl_family.family_id=rp_tbl_professional.family_id


where rp_tbl_CreateNewJob.JobCode = @JobCode and
rp_tbl_personal_details.dob BETWEEN @dob and @dob
end

Please help me.
Posted
Updated 19-Jan-11 20:30pm
v2

Hi

Change your date parameter to different variable name. Like
cmd.Parameters.Add(new SqlParameter("@dob", SqlDbType.DateTime)).Value = sta;
cmd.Parameters.Add(new SqlParameter("@dob", SqlDbType.DateTime)).Value = end;



Here in your both start and end data @dob is supply. Change it to different name like @Sdob and @Edob. Also do that changes into procedure also.



umesh
 
Share this answer
 
Comments
Sandeep Mewara 20-Jan-11 2:38am    
Right answer. 5!
soni uma 20-Jan-11 2:40am    
Thanx
thatraja 20-Jan-11 2:50am    
Nice catch...5!
Thanks. Now I want if user will not fill any dob then it should search all the data. How Can I do this.Can i set a min and max date.
Like:
C#
DateTime SDob=1970/01/01;
DateTime EDob=1990/01/01;

if(txtSDob.Text !="")
{
SDob=Convert.ToDateTime(txtSDob.Text)
}

if(txtEDob.Text !="")
{
EDob=Convert.ToDateTime(txtEDob.Text)
}

and then pass or change in stored procedure
Help me.
 
Share this answer
 
v2
Comments
soni uma 20-Jan-11 4:20am    
It is depend your requirement. If user not fill start and end txtbox than you have to just make your date parameter condition into procedure like..

if @sdate is not null and @edate is not null
begin
-- Between conditon
end

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