Вопрос из области ArcObject
Добавлено: 29 май 2017, 10:26
Добрый день. В ходе разработки кнопки для ArcMap наткнулся на небольшую проблему.
Суть вопроса. Необходимо выделенным объектам присвоить поле. Циклом прохожу по выделенным объектам. Но данные берутся из таблицы в той же БД (БД на MS Access). Выделенных объектов может быть много. Но в определенный момент вываливается исключение: Открытие большого количества таблиц невозможно. Я так понимаю это сам Access не дает. Вроде как надо закрыть открытые таблицы, но я так и не нашёл как. Для наглядности пример куска кода ниже:
ICursor Cursor;
IRow row;
IQueryFilter filter;
filter = new QueryFilter();
while (pFeature != null)
{
string kod = Convert.ToString(pFeature.get_Value(pFeature.Fields.FindField("Filds5")));
filter.WhereClause = "Fild1 = '" + kod + "'";
Cursor = Table1.Search(filter, false);
row = Cursor.NextRow();
if (row != null)
{
count++;
string f2 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds2")));
string f3 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds3")));
string outstr = f2 + " " + f3;
pFeature.set_Value(pFeature.Fields.FindField("Filds4"), outstr);
pFeature.Store();
}
pFeature = pEnumFeat.Next();
}
Суть вопроса. Необходимо выделенным объектам присвоить поле. Циклом прохожу по выделенным объектам. Но данные берутся из таблицы в той же БД (БД на MS Access). Выделенных объектов может быть много. Но в определенный момент вываливается исключение: Открытие большого количества таблиц невозможно. Я так понимаю это сам Access не дает. Вроде как надо закрыть открытые таблицы, но я так и не нашёл как. Для наглядности пример куска кода ниже:
ICursor Cursor;
IRow row;
IQueryFilter filter;
filter = new QueryFilter();
while (pFeature != null)
{
string kod = Convert.ToString(pFeature.get_Value(pFeature.Fields.FindField("Filds5")));
filter.WhereClause = "Fild1 = '" + kod + "'";
Cursor = Table1.Search(filter, false);
row = Cursor.NextRow();
if (row != null)
{
count++;
string f2 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds2")));
string f3 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds3")));
string outstr = f2 + " " + f3;
pFeature.set_Value(pFeature.Fields.FindField("Filds4"), outstr);
pFeature.Store();
}
pFeature = pEnumFeat.Next();
}