将 dateTimePicker 中的日期保存到 ms access 数据库中并搜索两个日期之间的记录

Save Date from dateTimePicker into ms access database and search records between two dates

我有 MS 访问权限 table '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,我使用以下代码进入数据网格视图:

        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 访问 table AddDate 列设置为 DateTime,select 查询将给出错误 'Datatype Missmatch in criteria expression'。如果我将列 DataType 属性 更改为 ms access table 中的文本,则查询有效但它会收集两个日期之间 table 的所有记录,而不考虑月份。

请用示例和完整代码进行解释。还要在 MS Access 2010 中指定数据类型 属性。

提前致谢。

问候 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);

最好在这里也使用参数。