orient
Дата: 03.11.2005 11:45:47
Дело в том, что в цикле этот OledbCommand используется для добавления в одну таблицу, и для выборки из другой таблицы - Или это плохо, когда когда у нас все действия с объектами БД выполняются одним объектом OleDbCommand
orient
Дата: 03.11.2005 12:04:31
void ManageSys::DBConnect::UpdateATSHours(String* tgno,String* ats,DateTime date,int hour,int cc_o,int cc_answ,int sub_busy,int not_resp,int ext_techn,int incmp_dial)
{
cmd->CommandText=S"UPDATE ATSRecordHour SET CC_O=CC_O+\?,CC_ANSW=CC_ANSW+\?,"
S"NOT_RESPONCE=NOT_RESPONCE+\?,SUB_BUSY=SUB_BUSY+\?,"
S"EXT_TECHN=EXT_TECHN+\?,INCMP_DIAL=INCMP_DIAL+\?"
S"WHERE ((DateRec=\?)AND(HourRec=\?)AND(TGNO=\?)AND(ATS=\?))";
//очищение списка параметров
cmd->Parameters->Clear();
//добавление параметров в список
cmd->Parameters->Add(S"@CC_O",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@CC_ANSW",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@SUB_BUSY",OleDb::OleDbType::Integer);
cmd->Parameters->AddS"@NOT_RESPONCE",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@EXT_TECHN",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@INCMP_DIAL",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@DateRec",OleDb::OleDbType::DBDate);
cmd->Parameters->Add(S"@HourRec",OleDb::OleDbType::Integer);
cmd->Parameters->Add(S"@TGNO",OleDb::OleDbType::BSTR);
cmd->Parameters->Add(S"@ATS",OleDb::OleDbType::BSTR);
//инициализация параметров
cmd->Parameters->Item[0]->Value=__box(cc_o);
cmd->Parameters->Item[1]->Value=__box(cc_answ);
cmd->Parameters->Item[2]->Value=__box(sub_busy);
cmd->Parameters->Item[3]->Value=__box(not_resp);
cmd->Parameters->Item[4]->Value=__box(ext_techn);
cmd->Parameters->Item[5]->Value=__box(incmp_dial);
cmd->Parameters->Item[6]->Value=__box(date);
cmd->Parameters->Item[7]->Value=__box(hour);
cmd->Parameters->Item[8]->Value=tgno;
cmd->Parameters->Item[9]->Value=ats;
try
{
cmd->Prepare();
cmd->ExecuteNonQuery();
}
catch(InvalidOperationException* e)
{
e->Message;
System::Windows::Forms::MessageBox::Show(e-> get_Message) , S"UPDATE ATS Record", MessageBoxButtons::OKCancel,
MessageBoxIcon::Asterisk);
}
catch(OleDbException* e)
{
e->Message;
System::Windows::Forms::MessageBox::Show(e->get_Message(),S"UPDATE ATS Record", MessageBoxButtons::OKCancel,
MessageBoxIcon::Asterisk);
}
catch(Exception* e)
{
e->Message;
System::Windows::Forms::MessageBox::Show(e->get_Message(),S"UPDATE ATS Record", MessageBoxButtons::OKCancel,
MessageBoxIcon::Asterisk);
}
}
orient
Дата: 03.11.2005 15:32:29
У меня подозрение, что если к началу следующего обновления таблицы предыдущее ещё не завершено, то для текущего обновления открывается открывается копия таблицы И когда их становится слишком много то это вызвает исключение