[英]Display dates between two dates in asp.net
I have two calendars in my aspx and I want to display records between selected dates of these calendars. 我的aspx中有两个日历,我想显示这些日历的选定日期之间的记录。 My 'TeklifTarih' database attribute is a date type attribute.
我的“ TeklifTarih”数据库属性是日期类型属性。 Here is my aspx:
这是我的aspx:
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar><br />
<asp:Calendar ID="Calendar2" runat="server"></asp:Calendar><br/>
<asp:Button ID="btnClendar" runat="server" Text="İstatistikleri Filtrele" OnClick="btnClendar_Click"/>
And my onclick method: 而我的onclick方法:
protected void btnClendar_Click(object sender, EventArgs e)
{
string baslangicTarihi = Calendar1.SelectedDate.ToString();
string bitisTarihi = Calendar2.SelectedDate.ToString();
EntityDataSourcePersonel.CommandText =
"SELECT COUNT(TeklifTable.TeklifHazirlayan) AS Basari, EmployeeTable.Name, EmployeeTable.Surname, SUM(TeklifTable.TeklifTutar) AS ToplamSatis FROM EmployeeTable JOIN TeklifTable ON TeklifTable.TeklifHazirlayan = EmployeeTable.EmployeeId WHERE TeklifTable.TeklifTarih >= " + baslangicTarihi + " AND TeklifTable.TeklifTarih <= " + bitisTarihi + " GROUP BY EmployeeTable.Name,EmployeeTable.Surname";
}
I need to display datas with this commandtext and it works when I remove where command of query but I need to filter with these two dates. 我需要使用此命令文本显示数据,并且在删除查询的where命令时可以使用,但是我需要使用这两个日期进行过滤。
You have missed single quotes (') while creating a sql statement your query should be like following:- 您在创建sql语句时错过了单引号 ('),您的查询应如下所示:-
EntityDataSourcePersonel.CommandText =
"SELECT COUNT(TeklifTable.TeklifHazirlayan) AS Basari, EmployeeTable.Name,
EmployeeTable.Surname, SUM(TeklifTable.TeklifTutar) AS ToplamSatis FROM
EmployeeTable JOIN TeklifTable ON TeklifTable.TeklifHazirlayan = EmployeeTable.EmployeeId
WHERE TeklifTable.TeklifTarih >= '" + baslangicTarihi + "'
AND TeklifTable.TeklifTarih <= '" + bitisTarihi + "'
GROUP BY EmployeeTable.Name,EmployeeTable.Surname";
I must admit that i'm not familiar with the EntityDataSource
control. 我必须承认我对
EntityDataSource
控件不熟悉。 But according to what i've read you can also use parametrized queries. 但是根据我所读的内容,您还可以使用参数化查询。 So do it:
这样做:
String sql = @"SELECT Count(TeklifTable.TeklifHazirlayan) AS Basari,
EmployeeTable.NAME,
EmployeeTable.Surname,
Sum(TeklifTable.TeklifTutar) AS ToplamSatis
FROM EmployeeTable
JOIN TeklifTable
ON TeklifTable.TeklifHazirlayan = EmployeeTable.EmployeeId
GROUP BY EmployeeTable.NAME,
EmployeeTable.Surname";
EntityDataSourcePersonel.CommandText = sql;
String whereClause = @"TeklifTable.TeklifTarih >= @baslangicTarihi
AND TeklifTable.TeklifTarih <= @bitisTarihi";
EntityDataSourcePersonel.Where = whereClause;
EntityDataSourcePersonel.WhereParameters.Add(new Parameter("baslangicTarihi", TypeCode.DateTime, Calendar1.SelectedDate));
EntityDataSourcePersonel.WhereParameters.Add(new Parameter("bitisTarihi", TypeCode.DateTime, Calendar2.SelectedDate));
Combined with the other answer pointing out you're missing the quotes, and the datetime formatting, the following should work: (not tested though) 结合指出您缺少引号和日期时间格式的其他答案,以下方法应该可以工作:(尽管未测试)
EntityDataSourcePersonel.CommandText =
"SELECT COUNT(TeklifTable.TeklifHazirlayan) AS Basari, EmployeeTable.Name,
EmployeeTable.Surname, SUM(TeklifTable.TeklifTutar) AS ToplamSatis FROM
EmployeeTable JOIN TeklifTable ON TeklifTable.TeklifHazirlayan = EmployeeTable.EmployeeId
WHERE TeklifTable.TeklifTarih >= '" + baslangicTarihi.ToString("yyyy-MM-dd") + "'
AND TeklifTable.TeklifTarih <= '" + bitisTarihi.ToString("yyyy-MM-dd") + "'
GROUP BY EmployeeTable.Name,EmployeeTable.Surname";
Also consider Tim's point about parameterized queries, you should use them whenever possible. 还请考虑Tim关于参数化查询的观点,您应该尽可能使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.