C# 如何使用日期时间选择器从ms access数据库检索数据
我正在C#中创建一个应用程序,其中使用datetimepicker控件。我在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
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”“提供商未在您的本地计算机中注册。有一个解决方案: