如何使用datetime选择器从ms访问数据库中检索数据

时间:2013-05-15 05:04:30

标签: c# ms-access datetimepicker

我正在使用datetimepicker控件在C#中创建一个应用程序。我在MS Access中创建了一个数据库,其中包含一个包含Date_Entry, Emp_No, Emp_Name, In_Time, Out_Time列的表。

现在,我想通过单击datetimepicker控件上的日期来检索文本框中的这些数据。此日期指向数据库的Date_Entry字段中的日期,并根据该日期获取数据。

怎么做?

 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());
 }
 }
 }

2 个答案:

答案 0 :(得分:0)

上面的代码存在一些问题。我已经完善了它。现在它会起作用。

以下应该是代码:

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 :(得分:0)

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

......你是Google吗? https://www.google.nl/search?q=Addwithvalue它实际上向你展示了什么是错的。

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