DataTable Select问题

meceky 2010-01-05 11:47:20

--Last Meal SQL
select MealDate ,MealName as 'ParameterValue' ,count(1) as 'MealNumber' from
(SELECT CONVERT(varchar(10), BrushDate, 120) as 'MealDate', count(*) AS 'num',sz_Parameter.ParameterValue as 'MealName'
FROM dbo.EM_TEmployee
LEFT OUTER JOIN dbo.HR_TDepartment
ON dbo.EM_TEmployee.FTdepartmentid = dbo.HR_TDepartment.ID
RIGHT OUTER JOIN dbo.SZ_MealBrushData
ON dbo.EM_TEmployee.ID = dbo.SZ_MealBrushData.EmployeeID
inner join sz_Parameter
on sz_Parameter.ParameterCode = sz_MealBrushData.MealSector
WHERE 1=1 and SZ_MealBrushData.EmployeeID<>-1
and '2007-01-04'<=convert(varchar(10),
dbo.SZ_MealBrushData.BrushDate,120)
and '2008-01-04'>=convert(varchar(10),
dbo.SZ_MealBrushData.BrushDate,120)
and sz_Parameter.ParameterType = 'MealSector'
GROUP BY CONVERT(varchar(10), BrushDate, 120),
EmployeeID,dbo.SZ_MealBrushData.MealSector,sz_Parameter.ParameterValue
HAVING (COUNT(CONVERT(varchar(10), BrushDate, 120)) > 0)) a group by MealDate,MealName
order by MealDate
----
2007-01-04 晚餐 181
2007-01-04 午餐 406
2007-01-05 晚餐 181
2007-01-05 午餐 439
2007-01-06 晚餐 164
-------------------


//C#

DataTable dt = DbClass.GetEployee();
DateTime beginDate = DateTime.Parse("2007-1-4");
//取时间差
TimeSpan span = DateTime.Parse("2008-1-4") - beginDate;
//TimeSpan span = endDate.Subtract(beginDate);
string d = span.ToString().Substring(0, span.ToString().IndexOf("."));
int days = Int32.Parse(d);

for (int i = 4; i <= days + 4; i++)
{
//员工的午餐和晚餐
string ss = employeeTable.Rows[0][0].ToString();
string pp = beginDate.AddDays(i - 4).ToShortDateString();
DataRow[] emp_rows_Lunch = employeeTable.Select("ParameterValue='午餐' and MealDate=" + beginDate.AddDays(i - 4).ToShortDateString() + "'");
DataRow[] emp_rows_Dinner = employeeTable.Select("ParameterValue='晚餐' and MealDate='" + beginDate.AddDays(i - 4).ToShortDateString() + "'");
DataRow[] emp_rows_Breakfast = employeeTable.Select("ParameterValue='早餐' and MealDate='" + beginDate.AddDays(i - 4).ToShortDateString() + "'");
DataRow[] emp_rows_Supper = employeeTable.Select("ParameterValue='夜宵' and MealDate='" + beginDate.AddDays(i - 4).ToShortDateString() + "'");

查询的结果有数据,但是DataRow都是空的,错在什么地方啊
-------
...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaogug01 2010-01-05
  • 打赏
  • 举报
回复
问题应该就处在最后的那几个employeeTable.Select里面
库里面的汉字有可能 有空格 必须严格对应才可以
再你的ToShortDateString()之后的格式好像是1-6-2009 你跟一遍看看
如果不是2007-01-04这种格式 自己调整吧
sohighthesky 2010-01-05
  • 打赏
  • 举报
回复
第一个date前还没单引号

用DataView的rowFilter试试
goldeneyezhang 2010-01-05
  • 打赏
  • 举报
回复
ToShortDateString()之后也许不是yyyy-MM-dd的格式。
huming_h 2010-01-05
  • 打赏
  • 举报
回复
employeeTable从哪里来的???
muyangrencn 2010-01-05
  • 打赏
  • 举报
回复
denbes 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 denbes 的回复:]
string pp = beginDate.AddDays(i - 4).ToShortDateString();
应该改为
DateTime temp=beginDate.AddDays(i - 4);
string pp =temp.ToShortDateString();

DateTime 是结构类型
[/Quote]
不对
denbes 2010-01-05
  • 打赏
  • 举报
回复
string pp = beginDate.AddDays(i - 4).ToShortDateString();
应该改为
DateTime temp=beginDate.AddDays(i - 4);
string pp =temp.ToShortDateString();

DateTime 是结构类型
antony1029 2010-01-05
  • 打赏
  • 举报
回复
呵呵。顶!
wuyq11 2010-01-05
  • 打赏
  • 举报
回复
DataRow[] emp_rows_Lunch = employeeTable.Select("ParameterValue='午餐' and MealDate='" + beginDate.AddDays(i - 4).ToShortDateString() + "'");
看看pp 值。或DataView.Filter="";
happy664618843 2010-01-05
  • 打赏
  • 举报
回复
学 习 帮顶了

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧