2012-11-30 8 views
0

양식로드 이벤트에서 2 개의 콤보 박스가 있습니다. 첫 번째 콤보 상자는 양식이로드되면 select 문에서 값을 가져옵니다. 두 번째 콤보 박스에서 그 값을 사용하고 싶습니다. 여기 내 코드입니다 :combobox1에서 combobox2 값 가져 오기

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

이 콤보가에

:

개인 무효 cbDelivery_SelectedIndexChanged (개체를 보낸 사람, EventArgs e)

1ste combobox에서 값을 선택하자마자 제 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(); 

참고 두 번째 선택 쿼리에서 cbDelivery 콤보 박스를 사용하고 있습니다.

문제는 : 첫 번째 콤보 상자에서 값을 선택하자마자 두 번째 예외가 발생합니다. "ORA-00904 :"BAY1 ": 잘못된 식별자.

이 문제를 해결하거나 다른 방법을 제안하십시오.

미리 감사드립니다.

+0

가 대신 cbDelivery.Text의 cbDelivery.SelectedValue을 시도했다. 또한 SQL 쿼리에서 작은 따옴표가 누락되었습니다. 따라서이 줄은 다음과 같습니다. query1 = "dc_delivery dd, dc_grv dg에서 distinctdg.order_no를 선택하십시오. 여기서 delivery_complete_datetime은 null이고 dd.dc_delivery_id_no = dg.dc_delivery_id_no이고 dd.delivery_announce_datetime은 null이고 dd.delivery_bay_code = '"+ cbDelivery.Text + "' "; –

+0

@AzharKhorasany cbDelivery.SelectedValue가 수행하지 않습니다. 또한 " '"는 작동하지 않습니다. 쿼리에 문제가 있다고 생각하지 마십시오. 그것은 내 다른 사람과 마찬가지로 작동합니다. –

+0

쿼리 변수에 중단 점을 넣고 실행할 때 어떤 문자열이 표시되는지 확인하십시오. 그런 다음 Oracle 데이터베이스에서 해당 쿼리를 실행하여 결과를 얻을 수 있는지 확인하십시오. –

답변

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(); 
    } 
0

sql 또는 oracle의 일부 키워드를 열 이름 또는 일부 잘못된 위치에서 사용하는 쿼리 일 수 있습니다. 그러한 경우 이러한 유형의 오류가 발생할 수 있습니다. 나는이 해결책에 대해 확신하지 못한다. 그러나 최소한 한번 시도 할 수 있습니다. 그래서 우리는 그것이 올바른지 아닌지 확실히 할 수 있습니다.