У меня возникли проблемы с DataReader, хранящим некоторые данные из базы данных (Microsoft Access 2012).. или, по крайней мере, я думаю, что это так работает.
У меня есть 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();
Он отлично работает и теперь заполняет поле со списком в начале программы, когда пользователь выбирает один элемент из поля со списком.
Я хотел бы, чтобы следующие элементы поля со списком заполнялись в зависимости от того, какой отдел пользователь выбрал в первом поле со списком.
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
Подробнее здесь: https://stackoverflow.com/questions/264 ... 0x80004005