コンボボックスで選択した項目に従ってテキストボックスに入力しようとしています。問題は、ロード時に次のエラーがスローされ、VisualStudioでnext..nextを押すことです。実際にやりたいことを実行します。
どうすれば負荷の問題を解決できますか。
フォームロードのコードは
private void UpdateProduct_Load(object sender, EventArgs e)
{
DataSet ds = GetAllItems();
comboBox2.DataSource = ds.Tables[0];
comboBox2.DisplayMember = "Product Name";
comboBox2.SelectedIndex = 0;
}
コンボボックスの選択されたインデックスのコードは
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
// string selectedText = this.comboBox2.GetItemText(this.comboBox2.SelectedItem);
DataSet d = GetProductInfo(comboBox2.Text);
if (d.Tables.Count > 0)
{
textBox2.Text = d.Tables[0].Rows[0]["Quantity"].ToString();
textBox3.Text = d.Tables[0].Rows[0]["Color"].ToString();
textBox4.Text = d.Tables[0].Rows[0]["Size"].ToString();
textBox5.Text = d.Tables[0].Rows[0]["Price"].ToString();
}
}
フォームが初めて読み込まれるときにのみ問題が発生します。
GetProductInfoコード
public DataSet GetProductInfo(string product)
{
DataSet dataSet = new DataSet();
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "SELECT [Quantity], [Color], [Size], [Price] FROM [Product] WHERE [Product Name]= '" + product + "'";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
dataAdapter.Fill(dataSet, "Product");
}
catch (Exception ex)
{
MessageBox.Show("An exception has been occured\n" + ex.ToString());
Console.WriteLine(ex.ToString());
}
finally
{
oleConn.Close();
}
if (dataSet.Tables["Product"].Rows.Count <= 0)
return null;
return dataSet;
}
スタックトレース
System.NullReferenceException occurred
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=Purchase Management
StackTrace:
at Purchase_Management.UpdateProduct.comboBox2_SelectedIndexChanged(Object sender, EventArgs e) in c:\Users\Amrit\Desktop\Purchase Management\Purchase Management\UpdateProduct.cs:line 99
InnerException: