MS Access索引视图

时间:2011-05-10 14:50:18

标签: sql database ms-access

是否可以在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文件中

2 个答案:

答案 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无法控制表,因此无法执行请求的操作。

数据来自何处?