2013-10-19 36 views
5

我試圖通過比較dataetimepicker'smonth and year value與存儲在類型爲Date/Time的數據庫列中的日期來獲取Id,下面是Query我正在使用這樣做,但它顯示我跟着錯誤在這條線while (rs.Read())錯誤:未給出一個或多個所需參數的值

錯誤

No value given for one or more required parameters. 

代碼

public int GetDrID_MonthWise(string DrName,int month,int year, int refDrID) 
{ 
    int data = 0; 
    try 
    { 
     string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart(mm,p.[RegDate])[email protected] AND datepart(yyyy,p.[RegDate])[email protected] AND p.DoctorID=" + refDrID; 
     cmd = new OleDbCommand(sql, acccon); 
     cmd.Parameters.AddWithValue("@month", month); 
     cmd.Parameters.AddWithValue("@year", year); 
     rs = cmd.ExecuteReader(); 
     while (rs.Read()) 
     { 
      data = Convert.ToInt32(rs[0]); 
     } 
    } 
    catch (Exception err) 
    { 
     MessageBox.Show(err.Message.ToString()); 
    } 
    return data; 
} 

我正在傳遞像這樣的月份和年份值,我在哪裏犯錯誤?

int month = dateTimePickerMonth.Value.Month; 
int year = dateTimePickerMonth.Value.Year; 
+0

什麼其他價值在哪裏的部分?也許DrName或refDrID以@ – VladL

+0

開頭可能是重複http://stackoverflow.com/questions/19197022/getting-error-no-value-given-for-one-or-more-required-parameters – Coder

回答

3

有錯誤在您的查詢,請不要這樣,

string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart("m",p.[RegDate])[email protected] AND datepart("yyyy",p.[RegDate])[email protected] AND p.DoctorID=" + refDrID; 

注:你必須用「」,在日期部分功能在MS Access只爲一個月一級M封閉的日期間隔。如果您沒有用「」括起yyyy和m,系統會認爲yyyy和m是這些參數的參數和期望值。

如果您在Ms-Aceess sql視圖中執行您的查詢,那麼它將顯示此消息「Enter Paremeter Value」。

enter image description here

1

。在你的查詢一個錯誤, 看有沒有相等的姓氏列簽署

where d.LastName + ' ' + d.FirstName = ' 
1

我認爲你需要檢查3個問題

  • 檢查這個int month = dateTimePickerMonth.Value.Month; int year = dateTimePickerMonth.Value.Year;值不爲空或爲空

  • 日期和時間是日期時間數據類型,那麼爲什麼要在整數中分配此值?所以它被轉換成不同的格式。

  • 而且你d.LastName列值爲空,如果你給空值,然後嘗試 這樣

d.LastName = '"+ string.Empty + " ',.. ..... 

做檢查這些條件,然後再試一次。

0

或者乾脆改正字符串

sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND Format(p.[RegDate],mm)[email protected] AND Format(p.[RegDate],'yyyy')[email protected] AND p.DoctorID=" + refDrID; 
相關問題