2017-04-04 63 views
0

我有ms訪問表'AddDate'。兩列'Id' - 自動編號,'AddDate' - 日期時間。將日期從dateTimePicker保存到ms訪問數據庫和兩個日期之間的搜索記錄

在VS 2015中我有一個表格,我有一個dateTimePicker插入日期值。

我使用以下查詢插入日期:

 conn.Open();string str = "Insert into AddDate ([AddDate]) Values(@AddDate)"; 
     OleDbCommand cmd = new OleDbCommand(str, conn); 
     cmd.Parameters.AddWithValue("@AddDate", dateTimePicker1.Value.ToShortDateString()); 
     cmd.ExecuteScalar(); 
     conn.Close(); 

,當我有記錄輸入我想兩個日期之間搜索這些記錄。 對於我有兩個的DateTimePicker我用下面的代碼在一個DataGridView獲得:

 OleDbDataAdapter odb = new OleDbDataAdapter("Select * from AddDate where AddDate Between '"+dateTimePicker1.Value.ToShortDateString() + "' and '"+ dateTimePicker2.Value.ToShortDateString() + "' ", conn); 
     DataTable dt = new DataTable(); 
     odb.Fill(dt); 

     dataGridView1.DataSource = dt; 

現在,如果MS Access表ADDDATE列設置爲日期時間選擇查詢會給錯誤「數據類型Missmatch條件表達式」。如果我將列DataType屬性更改爲ms訪問表中的文本,則該查詢可以工作,但它將收集兩個日期之間的表中所有記錄,而不管月份爲何。

請用示例和完整代碼來解釋。同時指定MS Access 2010中的DataType屬性。

提前致謝。

關注Manoj Yadwad。

回答

0

日期是不是字符串,從而:

cmd.Parameters.AddWithValue("@AddDate", dateTimePicker1.Value); 

但來連接你必須格式化爲有效的日期表達式:

OleDbDataAdapter odb = new OleDbDataAdapter("Select * from AddDate where AddDate Between #" + dateTimePicker1.Value.ToString("yyyy'/'MM'/'dd") + "# and #" + dateTimePicker2.Value.ToString("yyyy'/'MM'/'dd") + "#", conn); 

更好的將在這裏使用的參數爲好。

+0

謝謝古斯塔夫。它非常容易。你的回答對我所要求的是正確的。再一次感謝你。 –

相關問題