到了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
答案 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”语句尝试> =或< =来调试语句,以查看是否会更改结果。