C#Datetimepicker -Date搜索与返回结果不同

时间:2011-09-21 15:58:06

标签: c# ms-access-2007 datetimepicker

到了datetimepicker,我的独立C#.net应用程序出了问题。 它花了我几个星期而无法解决它。我希望你能帮我一臂之力。

我使用ms访问[创建预订],[搜索预订]和[数据库]。

1)使用datetimepicker创建预订日期。 format = short cmd.CommandText = "insert into booking(cname, bdate, btime, ccontact, sname) Values('" + txt_cname.Text + "','" + **dtp_bdate.Value.Date** + "','" + dtp_btime.Value + "','" + txt_ccontact.Text + "','" + txt_sname.Text + "')";

2)DB中的数据存储是正确的。 示例:01/10/2011(2011年10月1日)

3)使用datetimepicker搜索预订日期。 format = short

string strSql = String.Format("SELECT * FROM booking WHERE bdate = #{0}#", dtp_search.Value.Date);

当我尝试在2011年10月10日搜索时。它不会为我返回结果。 但是,当我尝试在2011年10月1日进行搜索时,它会显示结果。

我检查了数据库并确认日期格式已保存为01/10/2011。 但我不明白为什么以及如何发生这种奇怪的事情。

任何一个男人都可以帮我一把吗?

事先得到真正的赞赏。

谢谢你, Gary Yee

2 个答案:

答案 0 :(得分:0)

看起来Access允许sql查询中的固定格式日期(MM / DD / YYYY)。并且日期显示根据数据库浏览器的当前文化格式化(因此您获得DD / MM / YYYY)。只需在查询中使用(MM / DD / YYYY)。

答案 1 :(得分:0)

“如果”您的数据正确,请尝试使用参数:

  DataTable dt = new DataTable();

  using (var cn = new OleDbConnection(strConn))
  {
    cn.Open();
    using (var cmd = new OleDbCommand("SELECT * FROM booking WHERE bdate = @bdate", cn))
    {
      cmd.Parameters.AddWithValue("@bdate", dtp_bdate.Value.Date);
      using (OleDbDataAdapter oda = new OleDbDataAdapter(cmd))
        oda.Fill(dt);
    }
  }

否则,请尝试通过对“WHERE bdate = @bdate”语句尝试> =或< =来调试语句,以查看是否会更改结果。