2015-12-15 80 views
0

我在我的aspx中有两个日历,我想在这些日历的选定日期之间显示记录。我的'TeklifTarih'数据库属性是日期类型属性。 这里是我的aspx:在asp.net中显示两个日期之间的日期

<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"/> 

而且我的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"; 
    } 

我需要这方面的CommandText显示DATAS,当我删除其中的查询命令,但我需要这些过滤它的工作原理两个日期。

+0

检查日期时间的输出格式。如果数据库需要不同的格式,则查询失败。例如,您的字符串格式为“dd.MM.yyyy”,但数据库日期格式为“MM/dd/yyyy”。 – Sami

+0

你正在使用哪个dbms? – jarlh

+0

感谢您的回答。程序的日期格式为'01 .12.2015 00:00:00',数据库的日期格式为'2015-12-15'。如何将'01 .12.2015 00:00:00'转换为'01 -12-2015'? @Sami –

回答

1

你已经错过了单引号('),并创建一个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"; 
0

我必须承认,我不熟悉的EntityDataSource控制。但根据what i've read,您也可以使用参数化查询。所以做到这一点:

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)); 
0

与对方的回答指出你错过了引号,和日期时间格式相结合,下面应该工作:(尽管未测试)

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"; 

还要考虑蒂姆点关于参数化查询,你应该尽可能地使用它们。

相关问题