Слова Раздел , Номер и Контейнер перечислены между зарезервированным ключевым словом для MS-Access . Вы не должны использовать их в своей схеме таблиц, но если вы действительно не можете изменить эти имена на что-то другое, вам нужно поместить их в квадратные скобки
const String qCont = @"select [Section], [Number], Stock from [Container]
where Component = @IdComp order by [Section], [Number]";
Также вам следует использовать более надежный подход к вашим одноразовым объектам, таким как соединение, команды и читатели. Попробуйте добавить оператор using в ваш код следующим образом:
try
{
....
using(OleDbConnection connection = new OleDbConnection(......))
{
connection.Open();
....
string cmdText = "yourdetailquery";
using(OleDbCommand cmdDetail = new OleDbCommand(cmdText, connection))
{
.... // parameters
using(OleDbDataReader rdDetail = cmdDetail.ExecuteReader())
{
... read detail data ....
}
}
// here the rdDetail is closed and disposed,
// you can start a new reader without closing the connection
cmdText = "yourcodequery";
using(OleDbCommand cmdCode = new OleDbCommand(cmdText, connection))
{
.... parameters
using(OleDbReader rdCode = cmdCode.ExecuteReader())
{
// read code data...
}
}
... other command+reader
}
// Here the connection is closed and disposed
}
catch(Exception ex)
{
// any error goes here with the connection closed
}