Но почему все эти грузовики работают? Нет никаких причин делать всю эту дополнительную работу.
Просто свяжите и установите источник данных форм в представление. Предполагается, что вы просто свяжете все существующие представления на стороне клиента. Таким образом, при доступе все представления будут рассматриваться как простые таблицы, а представления (в отличие от проходных запросов) доступны для чтения / записи.
Таким образом, нет необходимости: иметь в своем коде ЛЮБЫЕ строки подключения. Если вы используете строки подключения в коде, то вы подходите неправильно. Просто свяжите ссылки с представлениями и установите источник данных форм в качестве этого представления.
На этом этапе формы могут редактировать данные.
Что касается транзитных запросов для управления комбинированными окнами? Не делайте этого. Хотя PT-запрос, вероятно, является самым быстрым способом получения данных, клиент доступа не может фильтровать PT-запросы. Таким образом, вы ТОЛЬКО когда-либо захотите использовать запрос PT для случаев, когда клиентская сторона НЕ обязана фильтровать результаты. Если вы связываете поле со списком с запросом PT, то Access требует и хочет ТОЛЬКО извлечь одно значение из этой таблицы для отображения. А поскольку клиент доступа не может отфильтровать запрос PT, он просканирует источник данных WHOLE для этого поля со списком, чтобы получить одно значение, отображаемое в данный момент. Если вы используете связанную таблицу (или даже представление) с тем источником, который управляет комбинированным полем, тогда клиент доступа может отфильтровать этот набор данных в ОДНУ строку. Поэтому НЕ используйте запрос PT для ЛЮБОГО случая, когда требуется фильтрация на стороне клиента. Связанное представление (или связанная таблица) в этих случаях подходит.
Итак, просто привязайте формы непосредственно к связанной таблице или связанному представлению.
Если в таблице 1 миллион строк данных, и вы говорите, сделайте следующее:
Docmd.OpenForm "frmInvoice" ,,, "InvoiceNum = 1234"
Доступ будет Откройте форму для ОДНОГО ряда данных и ТОЛЬКО потяните один ряд вниз по сетевому каналу. Это несмотря на то, что рассматриваемая форма привязана к таблице из 1 миллиона строк. Форма загружается мгновенно, и вам не нужно было писать какие-либо sql, какие-либо вещи для подключения, и в действительности не делать ничего другого, кроме того, как вы разрабатывали типичные приложения доступа.
Связанные формы - это то, как и почему Access экономит огромное количество развитие долларов. Если вы перейдете к. net, то у вас есть все виды инструментов и мастеров, которые могут помочь вам в решении этой проблемы. Таким образом, в. net вы можете принять конструктор набора данных или использовать более новую инфраструктуру сущностей.
В Access у нас нет этого огромного набора инструментов дизайнеров данных и инструментов, поэтому, если вы попытаетесь код, и кодируйте источники данных для формы, тогда вы получите наихудший возможный результат (вы пишете грузы кода, и у вас нет всех этих крутых инструментов для неограниченных форм).
Просто свяжите свои формы со связанными таблицами (или представлениями), и теперь у вас есть рабочая форма с привязкой к данным без какого-либо кода. Если вам нужно загрузить форму, то используйте стандарт «20 лет» в предложении «где» команды open form, чтобы открыть форму для одной записи. Клиент доступа ТОЛЬКО извлечет то, что вы указали в предложении “where”.
Таким образом, чтобы подключить форму для редактирования данных, требуется нулевой код. В этом случае разработчик будет следить за тем, чтобы форма не доставляла ненужные данные клиенту.