C# 要在access中用两个相关表填充组合框吗

C# 要在access中用两个相关表填充组合框吗,c#,visual-studio-2012,ms-access-2010,C#,Visual Studio 2012,Ms Access 2010,我的access数据库中有两个相关的表,表1和表2。 在表1中,我有Cd_Table1 PrimaryKey和Cd_Table2 ForeignKey。 在表2中,我有Cd_Table2主键和Nm_字符串。 我想用这两个表填充一个组合框,但是DisplayMemberPath需要是Nm\u Atr,ValueMemberPath需要是Cd\u Table1 我的代码: OleDbCommand cmd = new OleDbCommand("SELECT Table1.Cd_AtributosN

我的access数据库中有两个相关的表,表1和表2。 在表1中,我有Cd_Table1 PrimaryKey和Cd_Table2 ForeignKey。 在表2中,我有Cd_Table2主键和Nm_字符串。 我想用这两个表填充一个组合框,但是DisplayMemberPath需要是Nm\u Atr,ValueMemberPath需要是Cd\u 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();
        }

试试看,告诉我们你到底哪里有问题。现在,您的“问题”只是要求其他人为您工作。首先,您的查询编写得不好,请从表1中选择Table1.Cd_AtributosNormais,Table2.Nm_Atr从表1左侧外部连接表2到表1.Cd_AtributosNormais=Table2.Cd_AtributosNormais。。。您不需要选择同一字段两次。。第二,服务器端代码也有问题吗?