2017-10-19 70 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视图中以查看语法。

相关问题