2016-05-11 7 views
3

У меня есть приложение Access (32-разрядное Office, Windows 7) с формой, которая отображает большое количество подформ. Каждая подформация отображает информацию о конкретном статусе фабричного уровня, и все они должны быть доступны для просмотра одновременно.MS Access Too Many Subforms Ошибка «Недостаточно памяти для выполнения этой операции»

После определенного момента добавление дополнительных подформ создает ошибку «Недостаточно памяти для выполнения этой операции. Закройте ненужные программы и повторите операцию».

Используя некоторые урезанные тестовые базы данных без кода или объектов, кроме форм, я обнаружил, что эта ошибка появляется, когда количество подформ составляет от 80 до 130, в зависимости от того, на какой машине я тестирую. На моей машине много свободного места, и я могу открыть несколько копий базы данных Access (и основной формы), если они находятся в отдельных экземплярах Access.

Я прошел много исследований по ограничениям доступа, управлению памятью и т. Д., И никакой помощи там не было. Контролируя потребности базы данных в моей системной памяти, я не вижу никаких проблем в этой области, и мне интересно, является ли сообщение об ошибке красношейной. Я хотел бы найти способ увеличить ресурсы, выделенные для приложения, или каким-то образом позволить добавлять дополнительные подформы.

Любые идеи?

enter image description here

+1

Сообщение об ошибке, безусловно, вводит в заблуждение - проблема не в системной памяти, а на любом внутреннем ресурсе, который заканчивается. Я сомневаюсь, что вы можете изменить это распределение. --- Но> 100 подформ в одно и то же время? Я не могу поверить, что это лучший способ отображать ваши данные. Вы можете поделиться скриншотом формы? – Andre

+0

Предлагаю вам изменить отображение данных из форм в отчеты. Как отметил Andre, pls публикует снимок экрана о том, чего вы достигнете –

+0

Спасибо за ваши ответы! Я опубликовал упрощенный снимок экрана. Я знаю, что использование этих многих подформ необычно, но я думаю, что в этом случае это необходимо. Эта форма отображается на больших экранах на заводе, чтобы рабочие и менеджеры могли контролировать производственные переменные. Я не могу использовать отчеты, так как формы должны обновляться автоматически. Менеджеры нажимают на ячейки для ввода и редактирования значений, поэтому это также интерактивная форма. Я могу отображать 8-10 ячеек (строк) каждый с 8 часами временных интервалов. Как только я попытаюсь превысить это, я начинаю получать ошибки, даже если таблицы и код удалены. – GSR

ответ

1

Я знаю эту проблему очень хорошо, и это связано с суб форм. Несколько лет назад я сделал заявку на 36-месячное планирование производства, которое выглядело очень похоже на ваше заявление.

Я предлагаю вам найти решение, в котором вы используете только одну подчиненную форму, где вы помещаете все элементы управления из одной строки на нее. Назовите элементы управления, такие как t1, t2, t3, t4 и т. Д., И поместите некоторый код VBA, за которым привязываются элементы управления к вашим полям.

В долгосрочной перспективе я предлагаю уйти от MS Access и использовать C# с XAML, который намного более современен. Даже с C#/WinForms у вас больше гибкости, чем при использовании Access. WinForms является лишь немного негибким с различными размерами экрана и разрешениями.

+0

Обновление: мне все равно хотелось бы найти коммутатор где-нибудь (реестр?), Который разрешил бы эту проблему. Тем временем я проверил тест, используя установку 64-разрядной версии времени выполнения Access 2010. Мне не удалось отобразить более 300 подформ. Возможно, мне придется преобразовать всех в 64-разрядный Access, переписать код по мере необходимости и войти в современный мир. – GSR

Смежные вопросы