是否可以在Ms Access View上添加索引?
我正在尝试运行此查询:
CREATE INDEX MyCustomViewIndex ON [MyView] (MyColumn) WITH DISALLOW NULL
我收到此错误消息。
无法执行数据定义 关于链接数据源的陈述。
有什么建议吗?
此致 亚历
编辑:
我的视图定义:
create view MyView as SELECT TableA.Field1, MyUnionQuery.Field2
FROM TableA, MyUnionQuery
MyUnionQuery定义:
Select * from ViewX
UNION select * from ViewY
所有表都在同一个MDB文件中
答案 0 :(得分:3)
像往常一样(ACE,Jet,无论如何),documentation含糊不清:它谈论'表',当然VIEW
是'查看表'但我认为在这种情况下它特指“基表”。我强烈怀疑Access VIEW
s不支持索引。
当我尝试使用SQL DDL创建一个时,我也得到错误,“无法在链接的数据源上执行数据定义语句。”这里有一些重现错误的VBA代码(在临时文件夹中创建一个新的.mdb,只需要粘贴到VBA代码模块中,例如在Excel中):
Sub NoIndexedViews()
On Error Resume Next
Kill Environ$("temp") & "\DropMe.mdb"
On Error GoTo 0
Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat
.Create _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
With .ActiveConnection
Dim Sql As String
Sql = _
"CREATE TABLE T (col1 INTEGER);"
.Execute Sql
Sql = _
"CREATE VIEW V (col1) AS SELECT col1 FROM T;"
.Execute Sql
On Error Resume Next
Sql = _
"CREATE INDEX idx ON V (col1) WITH DISALLOW NULL"
.Execute Sql
MsgBox Err.Description
End With
Set .ActiveConnection = Nothing
End With
End Sub
我的.mdb中没有任何链接的数据源,所以我得出的结论是显示的错误是虚假的和误导性的。但事实仍然是,无法在Access VIEW
上创建索引。
答案 1 :(得分:0)
根据错误消息,它是一个链接数据源。这意味着该表不是内部访问,而是链接。
由于Access无法控制表,因此无法执行请求的操作。
数据来自何处?