2016-10-24 12 views
0

私は奇妙な問題が発生していますが、接続が不良であるか何かがこれを引き起こしているかどうかはわかりません。 問題コンボボックスがあり、 "Form Load"イベントでSQLデータテーブルを使用して値を入力していて、今日まで正常に動作していました。フォームがロードされるたびに、両方のコンボボックスは、日付用に空であり、会社名用には空です。私が使用しているコードは以下の通りです。コンボボックスがSQLデータアダプタを使用して更新されていません

public DataTable getResult(string query) 
    { 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 
     SqlCommand cmd = new SqlCommand(query, con); 
     cmd.CommandTimeout = 0; 
     da.SelectCommand = cmd; 
     da.Fill(dt); 
     return dt; 
    } 
private void Reports_Load(object sender, EventArgs e) 
    { 
     RevenueDate_dt = func.getResult(dateQuery); 

     foreach (DataRow dr in RevenueDate_dt.Rows) 
     { 
      comboBox1.Items.Add(dr["Global_Period_Month"].ToString()); 
     } 

     Gpn_dt = func.getResult(GpnQuery); 

     foreach (DataRow dr in Gpn_dt.Rows) 
     { 
      comboBox2.Items.Add(dr["gpnname"].ToString()); 
     } 
    } 

SQL Serverで実行しているときに完全な結果を示すクエリです。 答えを楽しみにしています。

+0

は「戻りDT」にブレークポイントを置きます。データテーブルの外観はどうですか? – Jay

+0

行80とテーブル名が表示されていません!コンボボックスはまだ空です。クエリは正常で接続は正常です。 –

答えて

2

何が起こっているのかは言うまでもありませんが、データテーブルがあなたが望むものに対して少し残忍ではないかと思います。通常のDataReaderではオーバーヘッドが少なく、デバッグが簡単です。このような何か:あなたのコンボボックスに項目を追加する

public string[] getResult(string query, string ColumnName) 
{ 
    List<string> results = new List<string>(); 

    SqlCommand cmd = new SqlCommand(query, con); 
    cmd.CommandTimeout = 0; 

    SqlDataReader reader = cmd.ExecuteReader(); 
    int col = reader.GetOrdinal(ColumnName); 
    while (reader.Read()) 
    { 
     results.Add(reader.GetString(col)); 
    } 

    reader.Close(); 

    return results.ToArray(); 
} 

そして、それは単に次のようになります。

​​
+0

@Hamboneありがとうありがとうございました。昨日の昨日のコードはうまく動作していましたが、コードは今私のために働く。あなたの応答を感謝します。 –

+0

フィードバックありがとうございます。データシートは両刃の剣です。非常に便利で重い持ち上げをたくさん扱いますが、いくつかの粗いエッジがあります。私はこれがあなたのために働いてうれしいです。 – Hambone

関連する問題