希望在访问中填充两个相关表的组合框

本文关键字:两个 组合 访问 填充 希望 | 更新日期: 2023-09-27 17:49:15

我有两个相关的表在我的访问数据库,Table1Table2。在表1我有" Cd_Table1 "(primaryKey)和" Cd_Table2 "(foreignKey)。在表我有" Cd_Table2 "(primaryKey)和" Nm_Atr "(字符串)。我想用这两个表填充一个组合框,但"DisplayMemberPath"需要是"Nm_Atr"answers"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();
        }