我已将表单的记录源设置为SQL Server视图。现在我打开那个
DoCmd.OpenForm "frmDocuments", WhereCondition:=varWhere
Forms!frmDocuments.SetFocus
它将被打开,但它不可更新。我想知道,这是正常的吗?我们在Access窗体中打开的每个视图都不可更新。
如果我为视图创建唯一索引,我会在网上阅读它可以更新。
现在,当我尝试使用此代码在视图上创建索引时
CREATE UNIQUE CLUSTERED INDEX i_Documents
ON qryDocuments([Owner Document Number])
我收到错误
“架构绑定”
然后我尝试使用模式绑定创建视图,我收到错误
无法对视图'test'进行架构绑定,因为名称'tblDiscipline'对于架构绑定无效。名称必须采用两部分格式,对象不能引用自身。
我使用的代码如下:
CREATE VIEW qryDocuments
WITH SCHEMABINDING
AS
SELECT
tblDocuments.[Owner Document Number], tblDocuments.[Sazeh Document
Number],
tblDocuments.[Document Title], tblDocuments.[Project No],
tblDocuments.Originator, tblOriginator.[Originator Des],
tblDocuments.Zone, tblDocuments.Unit, tblDocuments.Discipline,
tblDiscipline.DiscDesc, tblDocuments.[Document Type],
tblDocumentType.[TYPE Description], tblDocuments.SheetNumber
FROM
tblDiscipline
RIGHT JOIN
((tblDocumentType
RIGHT JOIN
tblDocuments ON tblDocumentType.TYPE = tblDocuments.[Document Type])
LEFT JOIN
tblOriginator ON tblDocuments.Originator = tblOriginator.Originator)
ON tblDiscipline.DiscCode = tblDocuments.Discipline
GO
请帮忙 - 我该如何解决这个问题?
答案 0 :(得分:1)
让我们从一小段格式化文本查询开始。注意我是如何使用alises来大大减少代码量的,并且可以更容易地看到发生了什么。那些连接是另一回事。在这种模式中合并左右连接表示这是由查询工具编写的。
SELECT d.[Owner Document Number]
, d.[Sazeh Document Number]
, d.[Document Title]
, d.[Project No]
, d.Originator
, o.[Originator Des]
, d.Zone
, d.Unit
, d.Discipline
, dis.DiscDesc
, d.[Document Type]
, dt.[TYPE Description]
, d.SheetNumber
FROM tblDiscipline dis
RIGHT JOIN tblDocuments d ON dis.DiscCode = d.Discipline
RIGHT JOIN tblDocumentType dt ON dt.TYPE = d.[Document Type]
LEFT JOIN tblOriginator o ON d.Originator = o.Originator
现在您可以实际读取此查询,错误消息非常清楚。具体看这部分。 “名称必须采用两部分格式”。如果未指定对象的架构,则无法对视图进行架构绑定。您可能需要查看此处的文档。 https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql请特别注意有关“可更新视图”的部分。