データベースからのデータを保持する DataReader にいくつか問題があります..または少なくとも、これがどのように機能するかだと思います。
ComboBox があり、プログラムの開始時に、その項目に次のデータを入力します。
Connect.Open();
Command.Connection = Connect;
Command.CommandText = "Select * from Department";
OleDbDataReader dr;
dr = Command.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
cmbDepartment.Items.Add(dr[0].ToString());
}
}
Connect.Close();
ユーザーがコンボボックスから1つの項目を選択すると、プログラムの開始時に正常に機能し、ComboBox にデータが入力されます。
ユーザーが最初のコンボ ボックスで選択した部門に基づいて、次の ComboBox の項目を設定したいと思います。
Connect.Open();
Command.CommandText = "select JobTitle from Position where Department ='"+cmbDepartment.Text + "'";
OleDbDataReader dr2;
dr2 = Command.ExecuteReader();
if (dr2.HasRows)
{
while (dr2.Read())
{
cmbPosition.Items.Add(dr2[0]);
}
}
問題は、クラスメートと完全に似たコードを持っていて、デバッグできない異常に長いエラー メッセージがあることです。
cmbDepartment から何かを選択すると、エラーが発生します。try/catch を使用すると、次のエラー メッセージが表示されました。
System.Data.OleDb.OleDbException (0x80004005): IErrorInfo.GetDescription failed with E_FAIL(0x80004005).
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.ExecuteReader()
at katapusan.Employee.cmbDepartment_TextChanged(Object sender, EventArgs e) in c:\Users\Matt\Documents\Visual Studio 2012\Projects\katapusan\katapusan\Employee.cs:line 423