2009-11-11 99 views
2

我试图确认或否定您是否可以将MS Access 2003中的表格列定义为一个集合。看起来这个是在Office 2007中实现的 - 您可以定义一个列以在查询/查找中包含“多选列表”,但该功能对于新的访问2007文件格式来说似乎是唯一的,只要我可以确定。Microsoft Access 2003是否包含集合或多集合?

措辞另一种方式,也MS Access 2003中有相当于SQL语句:

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

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

回答

4

您是指Access数据库引擎的multivalued data types?如果是这样,那么这些对于引擎的ACE(2007)版本来说是新的并且在Jet 4.0中不可用作为Access2003的引擎版本。

FWIW我使用ANSI-92查询模式(OLE DB,引擎类型= 5)在Access2007中试用了SQL,并且MULTISET关键字未被识别。

请注意,您可能不需要也不需要多值类型。一个特别的批评是Access数据库SQL DML表达式服务没有被改变以考虑多值类型。此外,请参阅本文Multivalued datatypes considered harmful

两个苏拉杰[Poozhiyil中,MS接入 项目经理]我同意 竭诚开发人员不必 需要使用多值字段。 了解数据库 的人已经有了一个很好的方式来实现多对多的 关系,并且将从多值字段中获益 。

所以,我对 开发人员的明确和一定的建议是不使用多值 字段。除潜在的痛苦之外,他们没有任何东西给我们提供 。

UPDATE:

MULTISET是一个新的数据类型与SQL正式 开始时间:2003所以我 猜测的部分原因在Access 2007中添加 它要与完全符合 SQL标准

这几乎是有趣的。 Access Team对添加符合任何SQL标准的SQL语法没有兴趣。

[当SQL Server团队在其4.0版本中修改Jet时,他们希望获得SQL-92合规性​​,但Windows组的成员依赖于某些功能仍不符合要求的Windows团队无法这么做......但这是另一回事。 Access团队拥有自己的代码库私人人员,所以他们没有这样的借口......除非SharePoint团队现在有不适当的影响力?我离题了......]

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

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

MULTISET[1, 2, 3, 4]

MULTISET( SELECT grades FROM courses )

...相反地,多重集值可以 用作使用的FROM 子句中的表参考UNNEST运营商。

Access团队尚未向ACE SQL DML语法添加任何新的表达式或任何运算符。所以,不,这与SQL标准和SharePoint的一切无关。

戴维W芬顿:没有,[支持 多值类型]在 ACCDB格式加入(不是ACE,因为 @onedaywhen说...)

考虑这个报价从the Access Team's own blog

我们加入新 Access引擎的主要功能是“复杂 数据”的支持。

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

+0

多值字段...我同意你说这是一个奇怪的想法!我甚至无法理解为什么在Access 2007中实现的。它绝对是一种误导和混淆的概念,与关系数据库 – 2009-11-11 21:41:41

+3

其实我们开发类型涉及像接管使用多值的用户创建的解决方案时。它被称为计费小时。 – 2009-11-11 21:57:20

+0

是的,多值数据类型是什么,我在2007年访问仅供参考,MULTISET是一个新的数据类型与SQL正式开始玩:2003 http://www.sigmod.org/record/issues/0403/E.JimAndrew -standard.pdf - 所以我猜想在Access 2007中添加它的部分原因是完全符合SQL标准。它已经在甲骨文存在了一段时间(这是我的例子来自哪里) - 抱歉应该提到这一点。我之前使用过MULTISETS来设置一张表作为一个位掩码。非常便利。 – DaveParillo 2009-11-11 23:46:32

相关问题