我遇到了困难,如果有人能帮助我,我会很感激。
我有一个简单的MS Access数据库,它与我的程序相关联。我做的第一件事是用我的数据库中的一个字段填充一个组合框("产品描述")。
我想做的是当用户选择组合框中的项目时,记录中的所有其他字段都会显示在文本框中。
string sConnection;
sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=XYZDatabase.accdb";
OleDbConnection dbConn;
dbConn = new OleDbConnection(sConnection);
dbConn.Open();
cbxProducts.DisplayMember = "Product Description";
dbConn.Close();
我考虑使用可能的SQL或DataReader,虽然我真的不确定。 这是我希望填充文本框的事件。我真的被困在这里。
private void cbxProducts_SelectedIndexChanged(object sender, EventArgs e)
{
txtProductNumber.Text =
txtProductDescription.Text =
txtProductCategory.Text =
txtProductCost.Text =
}
我希望我没有把我的问题格式化错误或任何事情,如果我有道歉,这是我第一次在这里发帖! DX
答案 0 :(得分:0)
我想知道您的组合框是否实际显示来自数据库的数据。
在
之后的第一个代码块中dbConn.Open()
之前
dbConn.Close()
你应该有这样的代码:
SqlCommand sc = new SqlCommand("select prodid, proddesc from products", conn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("prodid", typeof(string));
dt.Columns.Add("proddesc", typeof(string));
dt.Load(reader);
cbxProducts.ValueMember = "prodid";
cbxProducts.DisplayMember = "proddesc";
cbxProducts.DataSource = dt;
然后在第二个代码块中,您需要首先获取所选的产品ID。
private void cbxProducts_SelectedIndexChanged(object sender, EventArgs e)
{
string ID = comboBox1.SelectedValue.ToString();
//Based on ID make a sql query and fetch the details of that product from the DB.
//Follow the earlier code block to make DB connection and execute query.
//Then populate the data in individual text boxes by looping through the dr.
//I am leaving this deliberately for you to figure out and I am sure you can.
txtProductNumber.Text =
txtProductDescription.Text =
txtProductCategory.Text =
txtProductCost.Text =
}