我试图证实或否认是否可以在MS Access 2003中为一组定义的表列。看来这在Office 2007中实现 - 你可以定义一个列有在查询/查找一个“多选列表”,不过这个功能似乎是唯一的新的访问2007文件格式据我能确定。

措辞的另一种方式

,也MS Access 2003中有相当于SQL语句:

CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET); 

或者是有一个聪明的解决办法,以实现类似的东西?我会接受一个答案Access 2003中的任何集合构造器提供的信息。

有帮助吗?

解决方案

您指的是Access数据库引擎的多值数据类型 ?如果是的话,是的,这是新的ACE(2007)发动机的版本,并没有Jet 4.0中可用的是ACCESS2003版的引擎。

FWIW我想你的SQL在Access2007使用ANSI-92查询模式(OLE DB,引擎类型= 5)和MULTISET关键字无法识别。

请注意,你可能不需要也不想要多值类型。一个特别的批评是Access数据库SQL DML表达式服务尚未改变,考虑到多值类型。此外,看到这篇文章认为是有害的多值数据类型:

  

两者苏拉杰[Poozhiyil中,MS接入   项目经理]我同意   竭诚开发商不   需要使用多值字段。   谁懂数据库的人   已经有了一个很好的方式   实现多对多   关系,将获得任何好处   从多值字段。

     

所以,我清楚,某些建议   开发商是不使用多值   领域。他们什么都没有给我们提供   除了潜在的疼痛。

更新:

  

MULTISET 是一个新数据类型正式   与SQL开始:2003,所以我   猜测的部分原因添加   它在2007年的访问是要充分   符合SQL标准

这几乎有趣。访问团队显示,在添加SQL语法不感兴趣,兼容任何SQL标准。

[当SQL Server团队是为它的4.0版本修改喷气他们想获得SQL-92规定,但由Windows团队,其成分为剩余不兼容的某些功能依赖这样做是防止...那是另一个故事。访问团队的代码库的自己的私人民俗所以他们没有这样的借口......除非SharePoint工作组现在有不正当的影响?我离题...]

从关于SQL2003标准文档考虑此引用:

  

一个MULTISET类型的值可以是   通过枚举创建任   单个元件或通过提供   通过查询的元素   表达;如,

     

MULTISET[1, 2, 3, 4]

     

     

MULTISET(            SELECT grades              FROM courses           )

     

...相反地,多重集的值可以是   用作FROM表引用   子句使用UNNEST运算符。

在访问小组还没有添加任何新的表达,也没有任何操作员与ACE SQL DML语法。所以,不,这无关与SQL标准和一切与SharePoint中。

  

大卫·W·芬顿:没有,[支持   多值类型]是在加入   ACCDB格式(不是ACE,如   @onedaywhen说...)

考虑从访问小组的自己的博客

  

我们添加到新的主要特征   访问引擎是“复杂的支持   数据”。

这绝对是一个引擎的功能!

scroll top