从组合框中的访问数据库重复

时间:2016-05-18 17:16:25

标签: c# visual-studio ms-access combobox datareader

大家好,这是我的第一篇文章,所以如果我犯了任何错误,我会道歉。

我在代码中遇到了一个问题,其中重复值显示在组合框下拉列表中。我正在尝试显示Access数据库中列的值。

这是我的代码。

private void Spisak_Load(object sender, EventArgs e)
    {
        OleDbConnection konekcija = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\Programiranje\Programi\Izlozba Pasa\Izlozba Pasa\izlozba.accdb");

        konekcija.Open();

        OleDbCommand komanda = new OleDbCommand("SELECT Sifra, NazivRase FROM Izlozba, Rasa", konekcija);
        OleDbDataReader reader = komanda.ExecuteReader();

        while(reader.Read())
        {
            comboBox1.Items.Add(reader["Sifra"].ToString());
            comboBox2.Items.Add(reader["NazivRase"].ToString());
        }
    }

以下是问题所在的图像:  http://imgur.com/b22g3vg

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT Sifra, NazivRase FROM Izlozba, Ras

在快速谷歌搜索之后,这可以帮助您在访问端:http://www.techonthenet.com/access/comboboxes/unique_values2013.php

答案 1 :(得分:1)

你在这做什么:

SELECT Sifra, NazivRase FROM Izlozba, Rasa

Cross Join,导致两个表的笛卡尔积。这通常会导致结果集中出现重复值。

如果你真的需要两个表,那么两个表之间应该有一个INNER JOIN。

SELECT Sifra, NazivRase 
FROM Izlozba INNER JOIN Rasa
  ON <whatever the matching fields are>

编辑哦等等,我只是阅读了剩下的代码。这两列分为两个单独的下拉框。您需要为它们创建两个单独的SELECT语句。