2015-12-15 82 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"; 

還要考慮蒂姆點關於參數化查詢,你應該儘可能地使用它們。

相關問題