Тема: CDaoRecordset

Странные вещи творяться!
вот в таком коде
AcDbLayerTableRecord *pRcd;
    int i=0;
for(; !pIterator->done(); pIterator->step()) {
char *pName = NULL;
es = pIterator->getRecord(pRcd, AcDb::kForRead);
if (es == Acad::eOk)  {
pRcd->getName(pName);
s_LeyarsOut = (LPCSTR)pName;
CDaoRecordset recset(&db);
COleVariant var;
qStr="SELECT * FROM Layer WHERE NLayer='"+s_LeyarsOut+"';";
recset.Open(AFX_DAO_USE_DEFAULT_TYPE,qStr,NULL);
if(!recset.IsEOF()) //
{
///проблема
}
recset.Close();
free(pName);
pRcd->close() ;
i++;
}
}
  delete pIterator;
если слоёв меньше чем 25 , то всё срабатывает  данные из БД беруться и все хорошо, но только слоёв становиться больше чем 25 , то вылетает ошибка  доступа , а если в проблемном месте нет никаких операций т.е. пусто , то всё нормально.
НЕ понятно , что есть ограничения на обращение к БД.
И как с этим бороться?

Re: CDaoRecordset

рабочее решение нашлось это вынести обращение к БД в подпрограмму.

Re: CDaoRecordset

> wolka1
1) А при чем тут ObjectARX?
2) Проблема судя по всему в том что именно ты делаешь в этом проблемном месте.

Re: CDaoRecordset

в проблемном месте я беру данные из бд.
но даже если я просто там ставлю
acedAlert("1");
вылетает при 26 обращении

Re: CDaoRecordset

> wolka1
А если нет ничего (даже acedAlert("1");), то все нормально? Тогда это значит что ты где-то в другом месте портишь память.

Re: CDaoRecordset

Я тоже так думаю , но не могу найти это место. Такое чувство , что в памяти переполняется стек. Ведь из Акада программа не велетает , только выходит предупреждение и программа продолжает работать , но только с 25 обработанными слоями :(
Как бы то нибыло решение с подпрограммой работает :) Спасибо!