2013-03-05 62 views
0

我有一個sql數據庫填寫了每週培訓的具體日期。我們每週只在週二和週三進行每週一次的培訓。它目前的輸出是這樣的:顯示日期不在數據庫中,只有一週中的特定日子

Training Schedule 

Mar 4 - Training Title 
Mar 5 - Training Title 
Mar 12 - Training Title 
Mar 19 - Training Title 

現在我被要求顯示不在數據庫中的日期,但只有星期二和星期三。所以基本上它現在看起來像這樣。

Training Schedule 

Mar 4 - Training Title 
Mar 5 - Training Title 
Mar 12 - Training Title 
Mar 13 - No Training 
Mar 19 - Training Title 
Mar 20 - No Training 

什麼是做到不打算在與添加所有「不培訓」的日期到數據庫(因爲這會需要永遠)的最佳方式。現在,我只需使用下面的代碼只是輸出數據庫結果:

var now = DateTime.Now; 
var tableSql = "select * from Training where Date >= " + "'" + now + "'" + " order by Date"; 
pcm.CommandText = tableSql; 
prs = pcm.ExecuteReader(); 
var rowcount = 0; 
while (prs.Read()) 
    { 
    rowcount++; 
      %> 
<%=Convert.ToDateTime(prs["Date"].ToString()).ToString("MMM d").ToUpper()%> - <%=prs["Title"].ToString().ToUpper() %> <% } %> 
     <% 
      prs.Close(); 
      pcn.Close(); 
     %> 
+0

你不能不只是查詢基於DayofTheWeek()方法的表嗎?目前看起來像你正在查詢的所有日期是> =當前系統日期,你將需要改變選擇查詢 – MethodMan 2013-03-05 20:40:19

+0

開始尋找一些想法在這裏http://stackoverflow.com/questions/9901814/how-to-get-30從今天開始的日子 – MethodMan 2013-03-05 20:56:22

+0

我只是困惑於如何將sql字符串抓取數據庫中不存在的日期。數據庫中沒有「No Training」日期。 – techora 2013-03-05 21:02:55

回答

0

遍歷由SQL查詢返回的數據集,並將結果添加到集合(List<string>)。然後把你已知的日期範圍和循環通過這些日期,如果星期幾是星期二或星期四,檢查你的收藏,看看是否有值的日期。如果是,則顯示該字符串,如果不是,則顯示「無訓練」消息。

相關問題