2015-10-31 21 views
-1

我使用此代碼由日期字段篩選表(表)的表此我的代碼:誤差濾波器 基於日期字段

public double Mounthcost() 
    { 
     DateTime today = DateTime.Now; 
     PersianCalendar persianCalendar = new PersianCalendar(); 
     int yearPersian = persianCalendar.GetYear(today); 
     int monthPersian = persianCalendar.GetMonth(today); 
     DateTime firstDayOfMonth = persianCalendar.ToDateTime(yearPersian, monthPersian, 1, 0, 0, 0, 0); 
     int daysInMonth = persianCalendar.GetDaysInMonth(yearPersian, monthPersian); 
     DateTime lastDayOfMonth = firstDayOfMonth.AddDays(daysInMonth - 1); 
     //try 
     //{ 
      SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between" + firstDayOfMonth + "AND" + lastDayOfMonth); 
      if (DR.Read()) 
      { 
       Mouth_Cost = Double.Parse(DR[0].ToString()); 
      } 
      return Mouth_Cost; 
     //} 
     //catch 
     //{ 
     // return 0; 
     //} 
    } 

和此錯誤:

一種表達在期望條件的上下文中指定的非布爾型類型,在'between10'附近。

+0

嘗試建立查詢時添加單引號日期:'之間「‘+ firstDayOfMonth +’」和' 「+」。你真的應該使用參數化查詢,或者至少明確地將日期/時間轉換爲字符串。注意,使用參數將以與.NET不同的方式解析字符串日期的問題,即「 10/5/15「十月或五月?然後將總和從一個數字數據類型轉換爲一個字符串然後解析爲一個字符串的奧祕。 – HABO

回答

1

感謝哈勃:) 使用本:

SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between @F AND @L", new SqlParameter[] 
      { 
       new SqlParameter("@F", firstDayOfMonth), 
       new SqlParameter("@L", lastDayOfMonth), 
      } 

是正確的......

2

你缺少的空間在您的SQL查詢

SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between " + firstDayOfMonth + " AND " + lastDayOfMonth); 

公告and和之後的空間。

+0

謝謝親愛的Paulose ...但是同樣的錯誤 –

+0

@ghasemdeh錯誤是否一樣?如果沒有,你可以發佈新的錯誤信息。 –