C# 如何使用日期时间选择器从ms access数据库检索数据

C# 如何使用日期时间选择器从ms access数据库检索数据,c#,ms-access,datetimepicker,C#,Ms Access,Datetimepicker,我正在C#中创建一个应用程序,其中使用datetimepicker控件。我在MS Access中创建了一个数据库,其中包含一个带有Date\u条目、Emp\u No、Emp\u Name、in\u Time、Out\u Time列的表 现在我想通过单击datetimepicker控件上的date来检索textbox中的这些数据。此日期是指向数据库的date\u条目字段中的日期,并根据该日期获取数据 怎么做 private void dateTimePicker1_ValueChanged(ob

我正在C#中创建一个应用程序,其中使用datetimepicker控件。我在MS Access中创建了一个数据库,其中包含一个带有
Date\u条目、Emp\u No、Emp\u Name、in\u Time、Out\u Time
列的表

现在我想通过单击datetimepicker控件上的date来检索textbox中的这些数据。此日期是指向数据库的
date\u条目
字段中的日期,并根据该日期获取数据

怎么做

 private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
 {
 try
 {
 OleDbConnection conn = new OleDbConnection    ("Provider=Microsoft.Jet.OLEDB.4.0,DataSource=C:\\Users\\jd\\Desktop\\Attendance.mdb");
 OleDbCommand cmd = new OleDbCommand("SELECT * FROM Attendance_Details WHERE Date_Entry=" +     dateTimePicker1.Value + "", conn);
 cmd.CommandType = CommandType.Text;
 OleDbDataAdapter da = new OleDbDataAdapter(cmd);
 DataSet ds = new DataSet();
 da.Fill(ds, "Attendance_Details");
 txtDate.Text = ds.Tables[0].Rows[0][0].ToString();
 txtEmpNo.Text = ds.Tables[0].Rows[0][1].ToString();
 txtEmpName.Text = ds.Tables[0].Rows[0][2].ToString();
 txtInTime.Text = ds.Tables[0].Rows[0][3].ToString();
 txtOutTime.Text = ds.Tables[0].Rows[0][4].ToString();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.ToString());
 }
 }
 }

上述代码中存在一些问题。我改进了它。现在它可以工作了

以下应该是代码:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
 {
 try
 {

 OleDbConnection conn = new OleDbConnection    ("Provider=Microsoft.Jet.OLEDB.4.0,DataSource=C:\\Users\\jd\\Desktop\\Attendance.mdb");
 con.open();
 OleDbCommand cmd = new OleDbCommand("SELECT * FROM Attendance_Details WHERE Date_Entry=@dtpDate", conn);
 cmd.Parameters.Addwithvalue("@dtpDate", dateTimePicker1.Value);
 cmd.CommandType = CommandType.Text;
 OleDbDataAdapter da = new OleDbDataAdapter(cmd);
 DataSet ds = new DataSet();
 da.Fill(ds);
 txtDate.Text = ds.Tables[0].Rows[0][0].ToString();
 txtEmpNo.Text = ds.Tables[0].Rows[0][1].ToString();
 txtEmpName.Text = ds.Tables[0].Rows[0][2].ToString();
 txtInTime.Text = ds.Tables[0].Rows[0][3].ToString();
 txtOutTime.Text = ds.Tables[0].Rows[0][4].ToString();
 con.close();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.Message);
 }
 finally
 {
   con.close();
 }
 }
 }

希望有帮助。

要回答您关于“错误1”的问题,System.Data.OleDb.OLEDBPParameterCollection不包含“Addwithvalue”的定义,并且没有扩展方法“Addwithvalue”接受类型为“System.Data.OleDb.OLEDBPParameterCollection”的第一个参数

…你用谷歌搜索过吗?它实际上向你展示了问题所在


关于选择日期:。这可能很棘手。确保使用了正确的语法。

是否要再次检索日期为txtDate.Text的数据???上面的代码中有什么问题?数据库中没有…字段名Date\u Entry感谢您的回复,但我收到了以下错误:错误1“System.Data.OleDb.OleDbParameterCollection”不包含“Addwithvalue”的定义,并且没有扩展方法“Addwithvalue”接受类型为“System.Data.OleDb.OleDbParameterCollection”的第一个参数找到(是否缺少using指令或程序集引用?)C:\Users\jay.desai\Documents\Visual Studio 2008\Projects\Attention Module\Attention Module\Form1.cs 29 32 Attention Module未识别的数据库格式'C:\Users\jd\Desktop\Attention.mdbgot it…我收到了新的错误无法识别的数据库格式'C:\Users\jd\Desktop\Attention.mdb将您的连接字符串更改为@“Provider=Microsoft.Jet.OLEDB.4.0,DataSource=C:\Users\jd\Desktop\attention.mdb”这是什么类型的Access数据库?Access 2002-2003格式数据库现在我得到了其他错误@“Provider=Microsoft.Jet.OLEDB.4.0,DataSource=C:\Users\jd\Desktop\attention.mdb”‌​“提供商未在您的本地计算机中注册。有一个解决方案: