0

別のコンボ ボックスから値を選択して、コンボ ボックスに値を追加する必要があります。必要に応じて値を選択しません。最初の if 部分のみが実行されます。コードは次のとおりです。これは機能しません。

    private void section_SelectedIndexChanged(object sender, EventArgs e)
    {
         string selected = (string)section.SelectedItem;

        if(selected == "Giftarticles")
        {
            SqlConnection conn1 = new SqlConnection(connString);
            conn1.Open();
            string itemc = "(select  distinct Itemcode from Items where Section1 like 'G%' )except(select  distinct Itemcode from Items where Section1 like 'H%')";
            SqlCommand cmditem = new SqlCommand(itemc, conn1);
            SqlDataReader dr2 = cmditem.ExecuteReader();

             while (dr2.Read())
            {
                itemcode.Items.Add(dr2["Itemcode"].ToString());
            }
            dr2.Close();
            conn1.Close();
        }
        else
        {
            SqlConnection conn2 = new SqlConnection(connString);
            conn2.Open();
            string itemc1 = "(select  distinct Itemcode from Items where Section1 like 'H%')except(select  distinct Itemcode from Items where Section1 like 'G%')";
            SqlCommand cmditem = new SqlCommand(itemc1, conn2);
            SqlDataReader dr2 = cmditem.ExecuteReader();

            while (dr2.Read())
            {
                itemcode.Items.Add(dr2["Itemcode"].ToString());
            }
            dr2.Close();
            conn2.Close();
}
    }
4

2 に答える 2

0

if の実際の必要性は

        string itemc = "(select  distinct Itemcode from Items where Section1 like 'G%' )except(select  distinct Itemcode from Items where Section1 like 'H%')";

        string itemc1 = "(select  distinct Itemcode from Items where Section1 like 'H%')except(select  distinct Itemcode from Items where Section1 like 'G%')";

.

この2つを除いて、残りは同じように見えます。したがって、クエリだけが結果を返してはいけません。これらのクエリを個別に実行し、2 番目のクエリの結果が得られるかどうかを確認します。

于 2013-03-25T06:43:37.153 に答える
0

コード内で Connection や Reader などを直接使用するのは嫌いで、Typed DataSet の方法を使用することをお勧めしますが、次のように動作するはずです。

private void section_SelectedIndexChanged(object sender, EventArgs e)
{
    string selected = (string)section.SelectedItem;
    using(SqlConnection conn1 = new SqlConnection(connString))
    {
        conn1.Open();
        string itemc = "select  distinct Itemcode from Items where Section1 like 'G%'";

        if(selected != "Giftarticles") itemc += " AND Section1 NOT LIKE 'H%'"

        SqlCommand cmditem = new SqlCommand(itemc, conn1);
        SqlDataReader dr2 = cmditem.ExecuteReader();

        while (dr2.Read())
            itemcode.Items.Add(dr2["Itemcode"].ToString());

        dr2.Close();
        conn1.Close();
    }
}

上記のコード全体をこれに置き換えます。

于 2013-03-25T06:47:48.093 に答える