Как сделать сквозной / passthru запрос редактируемым?
В Microsoft Access 2007 с бэкэндом SQL Server мы обычно берем связанную таблицу из SQL Server как Form.RecordSource редактируемой формы для модификации данных одной таблицы. Локальный запрос используется для изданий кросс-таблиц, которые объединяют поля из нескольких связанных таблиц. Локальный запрос должен быть обновляемым сам по себе для изменения данных в форме редактирования.
Теперь мы планируем заменить все локальные запросы сквозными запросами, чтобы напрямую использовать собственные таблицы SQL Server.
Я попытался создать очень простой промежуточный запрос с именем qrySelProductsPassThroughEditable со следующей строкой SQL:
SELECT dbo.Products.ID, dbo.Products.Name FROM dbo.Products;
Поле ID - это поле IDENTITY, определенное как первичный ключ в SQL Server в качестве определения:
CREATE TABLE [dbo].[Products](
[ID] [int] IDENTITY(1,1) NOT NULL,
....
)
Но таблица данных, возвращаемая сквозным запросом Access, вообще не редактируется. Так что его нельзя использовать как .RecordSource для формы редактирования.
Это противоречитссылка это говорит о том, что если промежуточный запрос содержит все первичные ключи всех задействованных таблиц, запрос будет редактируемым.
Заключение добавил апостериорныйВ приведенных ниже обсуждениях сквозной запрос в Microsoft Access 2007 .accdb, .accde или .accdr (Access runtime) всегда доступен только для чтения, он никогда не редактируется. Вы должны использовать его как окончательный список или как .RecordSource отчета, а не для формы, для которой вы должны использовать связанную таблицу, или для обычного запроса с возможностью записи, включающего связанные таблицы для ввода-вывода данных.