我有 ms 访问表“AddDate”。两列'Id' -Autonumber,'AddDate' -DateTime。
在 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 访问表 AddDate 列设置为 DateTime,则选择查询将给出错误“条件表达式中的数据类型不匹配”。如果我将列 DataType 属性更改为 ms access 表中的文本,则查询会起作用,但它会从表中收集两个日期之间的所有记录,而不管月份如何。
请用示例和完整代码解释。还要在 MS Access 2010 中指定 DataType 属性。
预先感谢。
问候Manoj Yadwad。
日期不是字符串,因此:
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);
最好在这里也使用参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句