2017-10-19 69 views
-3

我的代碼中存在問題。我想在兩個日期之間過濾。 這是我的代碼。我正在使用Microsoft Access數據庫。對於使用datetimepicker的一個或多個所需參數沒有給出任何值

private void button2_Click(object sender, EventArgs e) 
{ 
    OleDbCommand cmd = new OleDbCommand("Select * From Table2 where TransacDate between '" + dateTimePicker1.Value.ToString() + "' And '" + dateTimePicker2.Value.ToString() + "'", conn); 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    dataGridView1.DataSource = ds; 
} 

現在,我的datagridview裏面有一個空行。

+0

什麼是您正在執行的SQL代碼的實際結果字符串?你能夠在數據庫上手動執行它嗎? – David

+0

您可以先將查詢放入字符串中,然後向我們顯示該字符串的內容?如'var debugString =「Select * From Table2 where ''+ dataTimePicker1.Value.ToString(」MM-dd-yyy「)+」'And'「+ dateTimePicker2.Value.ToString(」MM- dd-yyy「)+」'「;' – oerkelens

+0

完成將它放入一個字符串中。 @oerkelens – dad

回答

2

我最近用日期時間格式犯了同樣的錯誤。

嘗試

"MM-dd-yyyy" 

,而不是

"MM-dd-yyy" 
+0

這是我的理論,它需要yy或yyyy。 YYY可能會把它扔掉。 –

+0

我已經將它從yyy更改爲yyyy,並且錯誤是相同的。 – dad

+0

你確定它是掛在它上面的datetimepicker嗎?試試這個改變,'OleDbDataAdapter da = new OleDbDataAdapter(cmd,conn);'因爲我認爲總是需要連接引用。 –

0

日期在訪問應該由# octothorpes包圍。

更改您的代碼:

"Select * From Table2 where Transac_Date between #" + dateTimePicker1.Value.ToString("MM-dd-yyyy") + "# And #" + dateTimePicker2.Value.ToString("MM-dd-yyyy") + "#"; 
+0

我試過'#',出現同樣的錯誤。 – dad

0

目前尚不清楚哪些應用程序或前端生成此SQL語句。它看起來不像Access語法。

我會建議,在Access中,使用標準的查詢設計視圖 - 並建立一個查詢結果在你尋求的數據集。然後,您可以選擇/將此查詢放入SQL視圖中以查看語法。

相關問題