0

フォームに2つのコンボボックスがあります(フォームの読み込みイベントで)。フォームがロードされると、最初のコンボボックスはselectステートメントから値を取得します。その値を2番目のコンボボックスで使用したいと思います。これが私のコードです:

1steコンボボックス=cbDelivery

        OracleConnection conn = new OracleConnection();
        conn.ConnectionString = "User Id=christob;Password=CHRISTOB;Host=poseidon;Pooling=true;Min Pool    Size=0;Max Pool Size=100;Connection Lifetime=0;Port=1522;Sid=GLODCD";

        conn.Open();

        string query;
        query = "select distinct dd.delivery_bay_code from dc_delivery dd, dc_grv dg where delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null";
        OracleCommand cmd = new OracleCommand(query, conn);
        OracleDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            cbDelivery.Items.Add(dr["delivery_bay_code"]);
        }
        dr.Close();
        conn.Close();

2deコンボボックス=cbOrderNo

このコンボボックスは次の場所にあります。

private void cbDelivery_SelectedIndexChanged(object sender、EventArgs e)

したがって、1steコンボボックスから値を選択するとすぐに、2番目のコンボボックスクエリが2番目のコンボボックスに入力する必要があります。コードを参照してください:

        OracleConnection conn = new OracleConnection();
        conn.ConnectionString = "User Id=christob;Password=CHRISTOB;Host=poseidon;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;Port=1522;Sid=GLODCD";
        conn.Open();
        string query1;
        query1 = "select distinct dg.order_no from dc_delivery dd, dc_grv dg where delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null and dd.delivery_bay_code = " + cbDelivery.Text;
        OracleCommand cmd1 = new OracleCommand(query1, conn);
        OracleDataReader dr1 = cmd1.ExecuteReader();
        while (dr1.Read())
        {
            cbOderNo.Items.Add(dr1["order_no"]);

        }
        dr1.Close();
        conn.Close();

2番目のSelectクエリでcbDeliveryコンボボックスを使用していることに注意してください。

問題は次のとおりです。最初のコンボボックスから値を選択するとすぐに、2番目のコンボボックスで例外 "" ORA-00904: "BAY1":無効な識別子が表示されます。

これを整理するか、別の方法を提案するのを手伝ってください。

前もって感謝します。

4

2 に答える 2

0

修繕!!これは私がそれをした方法です:

private void populateDeliveryBayCodes()
    {
        conn.Open();
        string query;
        query = "select distinct dd.delivery_bay_code from dc_delivery dd, dc_grv dg where dd.delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null";
        OracleCommand cmd = new OracleCommand(query, conn);
        OracleDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            cbDelivery.Items.Add(dr["delivery_bay_code"]);
        }
        dr.Close();
        conn.Close();
    }

    private void populateOrderNumbers()
    {
        conn.Open();
        string query;
        query = "select distinct dg.order_no from dc_delivery dd, dc_grv dg where dd.delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null and dd.delivery_bay_code ='" + cbDelivery.Text + "' order by order_no";
        OracleCommand cmd = new OracleCommand(query, conn);
        OracleDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            cbOderNo.Items.Add(dr["order_no"]);
        }
        dr.Close();
        conn.Close();
    }

private void frmBuiltPallet_Load(object sender, EventArgs e)
    {
        populateDeliveryBayCodes();
    {

private void cbDelivery_SelectedIndexChanged(object sender, EventArgs e)
    {
        populateOrderNumbers();
    }
于 2012-12-03T12:23:00.133 に答える
0

列名としてsqlまたはoracleのキーワードを使用したクエリ、または無効な場所でのクエリである可能性があります。このような場合、このタイプのエラーが発生する可能性があります。この解決策についてはよくわかりません。しかし、少なくとも一度は試すことができます。それが正しいかどうかを確認できるように?

于 2012-11-30T12:24:25.043 に答える