想要在访问中使用两个相关表填充组合框
Want to populate a combobox with two related tables in access
我的访问数据库中有两个相关表,Table1 和 Table2。
在表 1 中,我有“Cd_Table1”(主键)和“Cd_Table2”(外键)。
在表 2 中,我有“Cd_Table2”(主键)和“Nm_Atr”(字符串)。
我想用这两个表填充一个组合框,但是“DisplayMemberPath”需要是“Nm_Atr ”和“ValueMemberPath”需要是“Cd_Table1 ".
我的代码:
OleDbCommand cmd = new OleDbCommand("SELECT Table1.Cd_AtributosNormais, Table1.Nm_Atr, Table2.Cd_AtributosNormais FROM Table1, Table2 WHERE Table1.Cd_AtributosNormais = Table2.Cd_AtributosNormais", cn);
OleDbDataReader reader = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(reader);
DataRow row = table.NewRow();
row["Nm_Atr"] = "";
table.Rows.InsertAt(row, 0);
this.btCmbAtkBaAtr1.DataContext = table.DefaultView;
this.btCmbAtkBaAtr1.DisplayMemberPath = "Nm_Atr";
this.btCmbAtkBaAtr1.SelectedValuePath = "Cd_AtributosNormais";
cmd.ExecuteNonQuery();
reader.Close();
reader.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
cn.Dispose();
}
错误在哪里,为什么组合框不显示任何内容?
我已经打开了一个连接,我正在使用 C# 编程和访问 2010。
如果有帮助,试试这个..
OleDbCommand cmd = new OleDbCommand("SELECT Table1.Cd_AtributosNormais as Cd_AtributosNormais, Table2.Nm_Atr as Nm_Atr FROM Table1 Left outer join Table2 on Table1.Cd_AtributosNormais = Table2.Cd_AtributosNormais", cn);
OleDbDataReader reader = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(reader);
DataRow row = table.NewRow();
row["Nm_Atr"] = "";
table.Rows.InsertAt(row, 0);
this.btCmbAtkBaAtr1.DataContext = table.DefaultView;
this.btCmbAtkBaAtr1.DisplayMemberPath = "Nm_Atr";
this.btCmbAtkBaAtr1.SelectedValuePath = "Cd_AtributosNormais";
cmd.ExecuteNonQuery();
reader.Close();
reader.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
cn.Dispose();
}
我的访问数据库中有两个相关表,Table1 和 Table2。 在表 1 中,我有“Cd_Table1”(主键)和“Cd_Table2”(外键)。 在表 2 中,我有“Cd_Table2”(主键)和“Nm_Atr”(字符串)。 我想用这两个表填充一个组合框,但是“DisplayMemberPath”需要是“Nm_Atr ”和“ValueMemberPath”需要是“Cd_Table1 ".
我的代码:
OleDbCommand cmd = new OleDbCommand("SELECT Table1.Cd_AtributosNormais, Table1.Nm_Atr, Table2.Cd_AtributosNormais FROM Table1, Table2 WHERE Table1.Cd_AtributosNormais = Table2.Cd_AtributosNormais", cn);
OleDbDataReader reader = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(reader);
DataRow row = table.NewRow();
row["Nm_Atr"] = "";
table.Rows.InsertAt(row, 0);
this.btCmbAtkBaAtr1.DataContext = table.DefaultView;
this.btCmbAtkBaAtr1.DisplayMemberPath = "Nm_Atr";
this.btCmbAtkBaAtr1.SelectedValuePath = "Cd_AtributosNormais";
cmd.ExecuteNonQuery();
reader.Close();
reader.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
cn.Dispose();
}
错误在哪里,为什么组合框不显示任何内容? 我已经打开了一个连接,我正在使用 C# 编程和访问 2010。
如果有帮助,试试这个..
OleDbCommand cmd = new OleDbCommand("SELECT Table1.Cd_AtributosNormais as Cd_AtributosNormais, Table2.Nm_Atr as Nm_Atr FROM Table1 Left outer join Table2 on Table1.Cd_AtributosNormais = Table2.Cd_AtributosNormais", cn);
OleDbDataReader reader = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(reader);
DataRow row = table.NewRow();
row["Nm_Atr"] = "";
table.Rows.InsertAt(row, 0);
this.btCmbAtkBaAtr1.DataContext = table.DefaultView;
this.btCmbAtkBaAtr1.DisplayMemberPath = "Nm_Atr";
this.btCmbAtkBaAtr1.SelectedValuePath = "Cd_AtributosNormais";
cmd.ExecuteNonQuery();
reader.Close();
reader.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
cn.Dispose();
}