根据 SQL 查询将值添加到下拉列表
Add Values to dropdownlist on the basis of SQL Query
我有一个 dropdownlist
,其值由
查询绑定
select emp_card_no,
emp_name + '-'
+ cast(emp_card_no as varchar)
+ '('
+ datename(MM,a.dt_of_leave)
+ ' - '
+ cast(year(a.dt_of_leave)as varchar)
+')' emp_name
from emp_mst a
where month(a.dt_of_leave) >= month(getdate())-1
and year(a.dt_of_leave) =
case when month(getdate())=1 then year(getdate())-1
else year(getdate())
end
order by emp_name
其结果看起来像这样。
[![SQL输出][1]][1]
现在我想要的是,在 Emp_name
列中,我想根据下面的查询在 (April - 2016)
之后添加文本 PROCESS
或 PENDING
select emp_mkey, * from emp_mon_day
where emp_mkey = 312
and month = 4
and year = 2016
如果查询 returns 任何结果则 PROCESS
否则 PENDING
.
注意
第一个查询列 Emp_card_no
是 emp_mon_day
table 中的 Emp_mkey
。
另见绑定下拉列表的代码
protected void funfillEmployee()
{
DataTable DtCombo = new DataTable();
string strdate = System.DateTime.Now.ToString("dd/MM/yyyy");
DtCombo = ObjPriDal.ExecuteDataTable("select emp_card_no, emp_name + '-' + cast(emp_card_no as varchar)+ '(' + datename(MM,a.dt_of_leave) + ' - ' + cast(year(a.dt_of_leave)as varchar)+')' emp_name " +
" from emp_mst a where month(a.dt_of_leave) >= month(getdate())-1 and year(a.dt_of_leave)= case " +
" when month(getdate())=1 then year(getdate())-1 else year(getdate()) end order by emp_name ");
cmbEmp_Name.DataTextField = "emp_name";
cmbEmp_Name.DataValueField = "emp_card_no";
cmbEmp_Name.DataSource = DtCombo;
cmbEmp_Name.DataBind();
cmbEmp_Name.Items.Insert(0, new ListItem("--Select--", "0"));
DtCombo.Clear();
}
告诉我该怎么做。
我正在使用 SQL-server-2005
尝试这样的事情:
select a.emp_card_no,
a.emp_name + '-'
+ cast(a.emp_card_no as varchar)
+ '('
+ datename(MM,a.dt_of_leave)
+ ' - '
+ cast(year(a.dt_of_leave)as varchar)
+') '
+
case when m.emp_mkey IS NULL
then 'PENDING'
else 'PROCESS'
end
emp_name
from emp_mst a
LEFT JOIN emp_mon_day m ON m.Emp_mkey = a.Emp_card_no
AND m.month = month(a.dt_of_leave)
AND m.year = year(a.dt_of_leave)
where month(a.dt_of_leave) >= month(getdate())-1
and year(a.dt_of_leave) =
case when month(getdate())=1 then year(getdate())-1
else year(getdate())
end
order by emp_name
但你可能已经调整了那部分
AND m.month = month(a.dt_of_leave) AND m.year = year(a.dt_of_leave)
因为月份和年份是保留字,我怀疑你是这样命名你的列的,但你没有指定其他名称
我有一个 dropdownlist
,其值由
select emp_card_no,
emp_name + '-'
+ cast(emp_card_no as varchar)
+ '('
+ datename(MM,a.dt_of_leave)
+ ' - '
+ cast(year(a.dt_of_leave)as varchar)
+')' emp_name
from emp_mst a
where month(a.dt_of_leave) >= month(getdate())-1
and year(a.dt_of_leave) =
case when month(getdate())=1 then year(getdate())-1
else year(getdate())
end
order by emp_name
其结果看起来像这样。
[![SQL输出][1]][1]
现在我想要的是,在 Emp_name
列中,我想根据下面的查询在 (April - 2016)
之后添加文本 PROCESS
或 PENDING
select emp_mkey, * from emp_mon_day
where emp_mkey = 312
and month = 4
and year = 2016
如果查询 returns 任何结果则 PROCESS
否则 PENDING
.
注意
第一个查询列 Emp_card_no
是 emp_mon_day
table 中的 Emp_mkey
。
另见绑定下拉列表的代码
protected void funfillEmployee()
{
DataTable DtCombo = new DataTable();
string strdate = System.DateTime.Now.ToString("dd/MM/yyyy");
DtCombo = ObjPriDal.ExecuteDataTable("select emp_card_no, emp_name + '-' + cast(emp_card_no as varchar)+ '(' + datename(MM,a.dt_of_leave) + ' - ' + cast(year(a.dt_of_leave)as varchar)+')' emp_name " +
" from emp_mst a where month(a.dt_of_leave) >= month(getdate())-1 and year(a.dt_of_leave)= case " +
" when month(getdate())=1 then year(getdate())-1 else year(getdate()) end order by emp_name ");
cmbEmp_Name.DataTextField = "emp_name";
cmbEmp_Name.DataValueField = "emp_card_no";
cmbEmp_Name.DataSource = DtCombo;
cmbEmp_Name.DataBind();
cmbEmp_Name.Items.Insert(0, new ListItem("--Select--", "0"));
DtCombo.Clear();
}
告诉我该怎么做。
我正在使用 SQL-server-2005
尝试这样的事情:
select a.emp_card_no,
a.emp_name + '-'
+ cast(a.emp_card_no as varchar)
+ '('
+ datename(MM,a.dt_of_leave)
+ ' - '
+ cast(year(a.dt_of_leave)as varchar)
+') '
+
case when m.emp_mkey IS NULL
then 'PENDING'
else 'PROCESS'
end
emp_name
from emp_mst a
LEFT JOIN emp_mon_day m ON m.Emp_mkey = a.Emp_card_no
AND m.month = month(a.dt_of_leave)
AND m.year = year(a.dt_of_leave)
where month(a.dt_of_leave) >= month(getdate())-1
and year(a.dt_of_leave) =
case when month(getdate())=1 then year(getdate())-1
else year(getdate())
end
order by emp_name
但你可能已经调整了那部分
AND m.month = month(a.dt_of_leave) AND m.year = year(a.dt_of_leave)
因为月份和年份是保留字,我怀疑你是这样命名你的列的,但你没有指定其他名称