Hi my name is vishal i was wondering on how to remove repetition of same datas from being displayed in listview through sql select query in c# winforms with sql server 2008.
So i have developed a search form named:frmUserDetails in which manager can search details of hisemployees(users created by him/her) either by entering their user id or user name(which includes user first name or user last name) oruser dob(date of birth).
Given below is my c# code of form(frmUserDetails) with sql server 2008:
using System.Data.SqlClient;
namespace Mini_Project
{
public partial class frmUserDetails : Form
{
public frmUserDetails()
{
InitializeComponent();
}
private void frmUserDetails_Load(object sender, EventArgs e)
{
}
private void btnSearch_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
lstSearch.Items.Clear();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
DataSet ds;
SqlDataAdapter adp = new SqlDataAdapter();
lstSearch.Columns.Add("ID", 100, HorizontalAlignment.Left);
lstSearch.Columns.Add("NAME", 180, HorizontalAlignment.Left);
lstSearch.Columns.Add("TASKS", 190, HorizontalAlignment.Center);
lstSearch.Columns.Add("STATUS", 90, HorizontalAlignment.Center);
lstSearch.Columns.Add("ASSIGNED BY", 170, HorizontalAlignment.Right);
lstSearch.Columns.Add("SEX", 90, HorizontalAlignment.Right);
lstSearch.Columns.Add("DOB", 110, HorizontalAlignment.Right);
lstSearch.Visible = true;
lstSearch.View = View.Details;
lstSearch.GridLines = true;
if(txtUserID.Text.ToString().Trim()!="")
{
cmd = new SqlCommand("Select u.user_id as user_id,u.user_first_name+' '+u.user_last_name as user_name,t.task_name as task_name,s.status_name as status_name,m.manager_first_name+' '+m.manager_last_name as manager_name,u.user_sex as user_sex,u.user_dob as user_dob from UserDetail2 u,TaskDetail t,TaskUserDetail v,Status s,ManagerDetail2 m where u.user_id=t.user_id and t.task_id=v.task_id and v.status=s.status_id and m.manager_id=v.manager_id and v.user_id=" + txtUserID.Text.Trim() + "", conn);
adp=new SqlDataAdapter(cmd);
ds=new DataSet();
adp.Fill(ds,"UserDetail2"+"TaskDetail"+"UserCheckIn"+"Status");
dt=ds.Tables["UserDetail2"+"TaskDetail"+"UserCheckIn"+"Status"];
}
else if (txtUName.Text.Trim() != "")
{
cmd = new SqlCommand("Select u.user_id as user_id,u.user_first_name+' '+u.user_last_name as user_name,t.task_name as task_name,s.status_name as status_name,m.manager_first_name+' '+m.manager_last_name as manager_name,u.user_sex as user_sex,u.user_dob as user_dob from UserDetail2 u,TaskDetail t,TaskUserDetail v,Status s,ManagerDetail2 m where u.user_id=t.user_id and t.task_id=v.task_id and v.status=s.status_id and m.manager_id=v.manager_id and ((u.user_first_name like '%" + (txtUName.Text.Trim() + "%') or (u.user_last_name like '%" + (txtUName.Text.Trim()) + "%'))"), conn);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds, "UserDetail2" + "TaskDetail" + "UserCheckIn" + "Status");
dt = ds.Tables["UserDetail2" + "TaskDetail" + "UserCheckIn" + "Status"];
}
else if (dtDOB.Value.ToLongDateString() != "")
{
cmd = new SqlCommand("Select u.user_id as user_id,u.user_first_name+' '+u.user_last_name as user_name,t.task_name as task_name,s.status_name as status_name,m.manager_first_name+' '+m.manager_last_name as manager_name,u.user_sex as user_sex,u.user_dob as user_dob from UserDetail2 u,TaskDetail t,TaskUserDetail v,Status s,ManagerDetail2 m where u.user_id=t.user_id and t.task_id=v.task_id and v.status=s.status_id and m.manager_id=v.manager_id and u.user_dob between ('" + dtDOB.Value + "') and ('" + dtDOB.Value.AddDays(1) + "')", conn);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds, "UserDetail2" + "TaskDetail" + "UserCheckIn" + "Status");
dt = ds.Tables["UserDetail2" + "TaskDetail" + "UserCheckIn" + "Status"];
}
for (int i = 0; i < dt.Rows.Count; i++)
{
lstSearch.Items.Add(dt.Rows[i].ItemArray[0].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[3].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[4].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[5].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[6].ToString());
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}The above code works with no problem at all!
Given below is screen-shot of my output!:
What i want is once for the First time/entry of listview(named:lstSearch)ID(user id of employee) and NAME(user first name and user last name) has been shown then for thesecond time/entry and so on i dont want to display/show user id and user name(user first name and user last name) of user in columns(ID andNAME) of listview(lstSearch) even though the user has done/assigned different tasks by his manager and status of tasks might be different.
Is it possible?! If so can anyone tell me what modifications must i need to do in myc# code and where? Should i need to do any modifications in my
sql select query in btnSearch_Click event of form(frmUserDetails) in order to achieve my required output?! Can anyone help me please! Can anyone help me/guide me to achieve my required output?! Any help/guidance in
solving of this problem would be greatly appreciated!
vishal